Skip to content

Commit 93049eb

Browse files
committed
CMake build rules for h5fortran
1 parent 69e2dbe commit 93049eb

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

CMakeLists.txt

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
# cmake version, project name, language
2-
cmake_minimum_required(VERSION 3.22 FATAL_ERROR)
1+
# CMake version, project name, language
2+
cmake_minimum_required(VERSION 3.20)
33
project(neural-fortran Fortran)
44

5-
# set output paths for modules, archives, and executables
5+
# Set output paths for modules, archives, and executables
66
set(CMAKE_Fortran_MODULE_DIRECTORY ${PROJECT_BINARY_DIR}/include)
77
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
88
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
99
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
1010

11-
# if build type not specified, default to release
11+
# If build type not specified, default to release
1212
if(NOT CMAKE_BUILD_TYPE)
1313
set(CMAKE_BUILD_TYPE "release")
1414
endif()
@@ -20,17 +20,21 @@ else()
2020
endif()
2121

2222
find_package(HDF5 COMPONENTS Fortran HL)
23+
include_directories(${HDF5_INCLUDE_DIRS})
2324

2425
include(FetchContent)
2526

2627
FetchContent_Declare(
2728
h5fortran
2829
GIT_REPOSITORY https://github.com/geospace-code/h5fortran
29-
GIT_TAG 3b1867bb542fae9213aded0015103b8418e53919
30+
GIT_TAG v4.6.3
3031
)
3132

3233
FetchContent_MakeAvailable(h5fortran)
3334

35+
file(MAKE_DIRECTORY ${h5fortran_BINARY_DIR}/include)
36+
include_directories(${h5fortran_BINARY_DIR}/include)
37+
3438
# compiler flags for gfortran
3539
if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
3640

@@ -82,6 +86,8 @@ add_library(neural
8286
src/nf/nf_base_layer_submodule.f90
8387
src/nf/nf_conv2d_layer.f90
8488
src/nf/nf_conv2d_layer_submodule.f90
89+
src/nf/nf_datasets.f90
90+
src/nf/nf_datasets_submodule.f90
8591
src/nf/nf_datasets_mnist.f90
8692
src/nf/nf_datasets_mnist_submodule.f90
8793
src/nf/nf_dense_layer.f90
@@ -92,6 +98,8 @@ add_library(neural
9298
src/nf/nf_input1d_layer_submodule.f90
9399
src/nf/nf_input3d_layer.f90
94100
src/nf/nf_input3d_layer_submodule.f90
101+
src/nf/nf_keras.f90
102+
src/nf/nf_keras_submodule.f90
95103
src/nf/nf_layer_constructors.f90
96104
src/nf/nf_layer_constructors_submodule.f90
97105
src/nf/nf_layer.f90
@@ -113,20 +121,18 @@ add_library(neural
113121
src/nf/io/nf_io_hdf5_submodule.f90
114122
)
115123

116-
target_include_directories(neural PUBLIC ${h5fortran_BUILD_DIR}/include)
117-
118124
# Remove leading or trailing whitespace
119125
string(REGEX REPLACE "^ | $" "" LIBS "${LIBS}")
120126

121127
# tests
122128
enable_testing()
123129
foreach(execid input1d_layer input3d_layer dense_layer conv2d_layer maxpool2d_layer flatten_layer dense_network dense_network_from_keras conv2d_network io_hdf5 keras_read_model)
124130
add_executable(test_${execid} test/test_${execid}.f90)
125-
target_link_libraries(test_${execid} neural h5fortran ${LIBS})
131+
target_link_libraries(test_${execid} PRIVATE neural h5fortran::h5fortran ${LIBS})
126132
add_test(test_${execid} bin/test_${execid})
127133
endforeach()
128134

129135
foreach(execid cnn mnist mnist_from_keras simple sine)
130136
add_executable(${execid} example/${execid}.f90)
131-
target_link_libraries(${execid} neural h5fortran ${LIBS})
137+
target_link_libraries(${execid} PRIVATE neural h5fortran::h5fortran ${LIBS})
132138
endforeach()

0 commit comments

Comments
 (0)