@@ -9,6 +9,11 @@ set( CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/install"
9
9
10
10
project (bspline-fortran NONE)
11
11
12
+ # Define build options
13
+ option (BSPLINE_BUILD_TESTING "Build the test programs" ON )
14
+ option (BSPLINE_BUILD_SHARED_LIBS "Build shared libraries" ON )
15
+ option (BSPLINE_BUILD_STATIC_LIBS "Build static libraries" ON )
16
+
12
17
# Real and Integer kinds
13
18
SET (BSPLINE_REAL_KIND "REAL64" CACHE STRING "Real kind parameter" )
14
19
SET_PROPERTY (CACHE BSPLINE_REAL_KIND PROPERTY STRINGS REAL32 REAL64 REAL128)
@@ -70,56 +75,76 @@ else()
70
75
"${ABS_LIB_INSTALL_DIR} " )
71
76
endif ()
72
77
73
- add_library ( ${LIB_NAME} SHARED ${SOURCES} )
74
- add_library ( ${LIB_NAME} -static STATIC ${SOURCES} )
75
-
76
- set_target_properties (${LIB_NAME} -static
77
- PROPERTIES
78
- OUTPUT_NAME "${LIB_NAME} "
79
- if (NOT MSVC_IDE )
80
- PREFIX lib
81
- endif ()
82
- ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib
83
- Fortran_MODULE_DIRECTORY ${MODULE_DIR} )
84
-
85
- set_target_properties (${LIB_NAME}
86
- PROPERTIES
87
- OUTPUT_NAME "${LIB_NAME} "
88
- if (NOT MSVC_IDE )
89
- PREFIX lib
90
- endif ()
91
- LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib
92
- Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR} )
93
-
94
- # install library:
95
- install ( TARGETS ${LIB_NAME} ${LIB_NAME} -static
96
- LIBRARY DESTINATION "${INSTALL_LIB_DIR} "
97
- ARCHIVE DESTINATION "${INSTALL_LIB_DIR} " )
98
- install ( DIRECTORY "${MODULE_DIR} /" DESTINATION "${INSTALL_MOD_DIR} " )
78
+ if (BSPLINE_BUILD_SHARED_LIBS)
79
+ add_library ( ${LIB_NAME} SHARED ${SOURCES} )
80
+
81
+ set_target_properties (${LIB_NAME}
82
+ PROPERTIES
83
+ OUTPUT_NAME "${LIB_NAME} "
84
+ if (NOT MSVC_IDE )
85
+ PREFIX lib
86
+ endif ()
87
+ LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib
88
+ Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR} )
89
+
90
+ # install library:
91
+ install ( TARGETS ${LIB_NAME}
92
+ LIBRARY DESTINATION "${INSTALL_LIB_DIR} "
93
+ ARCHIVE DESTINATION "${INSTALL_LIB_DIR} " )
94
+ install ( DIRECTORY "${MODULE_DIR} /" DESTINATION "${INSTALL_MOD_DIR} " )
95
+ endif ()
96
+
97
+ if (BSPLINE_BUILD_STATIC_LIBS)
98
+ add_library ( ${LIB_NAME} -static STATIC ${SOURCES} )
99
+
100
+ set_target_properties (${LIB_NAME} -static
101
+ PROPERTIES
102
+ OUTPUT_NAME "${LIB_NAME} "
103
+ if (NOT MSVC_IDE )
104
+ PREFIX lib
105
+ endif ()
106
+ ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib
107
+ Fortran_MODULE_DIRECTORY ${MODULE_DIR} )
108
+
109
+ # install library:
110
+ install ( TARGETS ${LIB_NAME} -static
111
+ LIBRARY DESTINATION "${INSTALL_LIB_DIR} "
112
+ ARCHIVE DESTINATION "${INSTALL_LIB_DIR} " )
113
+ install ( DIRECTORY "${MODULE_DIR} /" DESTINATION "${INSTALL_MOD_DIR} " )
114
+ endif ()
99
115
100
116
# Windows settings:
101
117
if (MSVC_IDE )
102
118
INCLUDE_DIRECTORIES ("src" )
103
119
SET (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fpp" )
104
120
endif ()
105
121
106
- # Add ctest commands, to build all test programs (that do not depend on pyplot_module)
107
- # Thus, tests can all be run with `make test`
108
- enable_testing ()
109
- foreach (prog_name
110
- # bspline_extrap_test
111
- bspline_test_2
112
- bspline_test
113
- # dbint4_test
114
- # knot_tests
115
- # speed_test
116
- # speed_test_oo
117
- stack_size_test_oo
118
- test_integrate
119
- test_oo
120
- test_regrid)
121
- add_executable (${prog_name} test /${prog_name} .f90)
122
- target_link_libraries (${prog_name} ${LIB_NAME} -static )
123
- add_test (NAME ${prog_name}
124
- COMMAND ${prog_name} )
125
- endforeach ()
122
+ if (BSPLINE_BUILD_TESTING)
123
+ # Add ctest commands, to build all test programs (that do not depend on pyplot_module)
124
+ # Thus, tests can all be run with `make test`
125
+ enable_testing ()
126
+ foreach (prog_name
127
+ # bspline_extrap_test
128
+ bspline_test_2
129
+ bspline_test
130
+ # dbint4_test
131
+ # knot_tests
132
+ # speed_test
133
+ # speed_test_oo
134
+ stack_size_test_oo
135
+ test_integrate
136
+ test_oo
137
+ test_regrid)
138
+ add_executable (${prog_name} test /${prog_name} .f90)
139
+ if (BSPLINE_BUILD_STATIC_LIBS)
140
+ target_link_libraries (${prog_name} ${LIB_NAME} -static )
141
+ target_include_directories (${prog_name} PRIVATE ${MODULE_DIR} )
142
+ elseif (BSPLINE_BUILD_SHARED_LIBS)
143
+ target_link_libraries (${prog_name} ${LIB_NAME} )
144
+ else ()
145
+ message (FATAL_ERROR "No libraries to link the test programs to. Either shared or static libraries must be built." )
146
+ endif ()
147
+ add_test (NAME ${prog_name}
148
+ COMMAND ${prog_name} )
149
+ endforeach ()
150
+ endif ()
0 commit comments