1
1
diff --git a/CMakeLists.txt b/CMakeLists.txt
2
- index 0b21f5a..0b26a36 100644
2
+ index 0b21f5a..bde4883 100644
3
3
--- a/CMakeLists.txt
4
4
+++ b/CMakeLists.txt
5
5
@@ -27,6 +27,10 @@ set(CPACK_PACKAGE_VERSION_PATCH "${SOPLEX_VERSION_PATCH}")
@@ -13,7 +13,18 @@ index 0b21f5a..0b26a36 100644
13
13
option(ZLIB "Use ZLIB" ON)
14
14
option(GMP "Use GMP" ON)
15
15
option(EMSCRIPTEN_HTML "Emscripten HTML output" OFF)
16
- @@ -69,6 +73,8 @@ set(CMAKE_MACOSX_RPATH ON)
16
+ @@ -43,6 +47,10 @@ option(SANITIZE_THREAD "should the thread sanitizer be enabled in debug mode if
17
+ option(COVERAGE "enable coverage support" OFF)
18
+ option(PAPILO "should papilo library be linked" ON)
19
+
20
+ + option(SOPLEX_EXAMPLE "Build example" OFF)
21
+ + option(SOPLEX_SOPLEX "Build soplex program" OFF)
22
+ + option(SOPLEX_EXPORT "Enable to use soplex from the current project's build tree, without installation." OFF)
23
+ +
24
+ SET(COVERAGE_CTEST_ARGS "" CACHE STRING "additional ctest arguments for coverage")
25
+
26
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
27
+ @@ -69,6 +77,8 @@ set(CMAKE_MACOSX_RPATH ON)
17
28
18
29
# use C++14 standard
19
30
set(CMAKE_CXX_STANDARD 14)
@@ -22,7 +33,7 @@ index 0b21f5a..0b26a36 100644
22
33
23
34
# set function visibility default to hidden
24
35
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
25
- @@ -123,12 +129 ,11 @@ if(COVERAGE)
36
+ @@ -123,12 +133 ,11 @@ if(COVERAGE)
26
37
endif()
27
38
28
39
if(ZLIB)
@@ -40,7 +51,7 @@ index 0b21f5a..0b26a36 100644
40
51
endif()
41
52
42
53
if(GMP)
43
- @@ -170,39 +175 ,24 @@ else()
54
+ @@ -170,39 +179 ,24 @@ else()
44
55
set(SOPLEX_WITH_PAPILO off)
45
56
endif()
46
57
@@ -97,7 +108,7 @@ index 0b21f5a..0b26a36 100644
97
108
endif()
98
109
99
110
# disable fused floating point contraction to enhance reproducibility across compilers and architectures
100
- @@ -247,7 +237 ,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/soplex/config.h.in ${PROJECT_BINA
111
+ @@ -247,7 +241 ,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/soplex/config.h.in ${PROJECT_BINA
101
112
configure_file(${PROJECT_SOURCE_DIR}/soplex-config.cmake.in "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/soplex-config.cmake" @ONLY)
102
113
103
114
add_subdirectory(src)
@@ -110,39 +121,95 @@ index 0b21f5a..0b26a36 100644
110
121
+ add_subdirectory(check)
111
122
+ endif()
112
123
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
113
- index 84ec5a5..e1d0028 100644
124
+ index 84ec5a5..6f5d4ef 100644
114
125
--- a/src/CMakeLists.txt
115
126
+++ b/src/CMakeLists.txt
116
- @@ -193,8 +193,8 @@ target_link_libraries(libsoplexshared libsoplex ${libs})
127
+ @@ -193,24 +193,28 @@ target_link_libraries(libsoplexshared libsoplex ${libs})
117
128
set_target_properties(libsoplexshared PROPERTIES CXX_VISIBILITY_PRESET default)
118
129
119
130
# create soplex binary using library without pic
120
131
- add_executable(soplex soplexmain.cpp)
121
132
- target_link_libraries(soplex LINK_PUBLIC libsoplex ${Boost_LIBRARIES})
122
- + add_executable(soplex EXCLUDE_FROM_ALL soplexmain.cpp)
123
- + target_link_libraries(soplex PRIVATE libsoplex ${Boost_LIBRARIES})
133
+ + if(SOPLEX_SOPLEX)
134
+ + add_executable(soplex EXCLUDE_FROM_ALL soplexmain.cpp)
135
+ + target_link_libraries(soplex PRIVATE libsoplex ${Boost_LIBRARIES})
124
136
125
- if(EMSCRIPTEN AND EMSCRIPTEN_HTML)
137
+ - if(EMSCRIPTEN AND EMSCRIPTEN_HTML)
138
+ + # set the install rpath to the installed destination
139
+ + set_target_properties(soplex PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
140
+ +
141
+ + if(EMSCRIPTEN AND EMSCRIPTEN_HTML)
126
142
set_target_properties(soplex PROPERTIES LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/soplex_webdemo_shell.html)
127
- @@ -206,8 +206,8 @@ if(CMAKE_BUILD_TYPE EQUAL "Debug")
128
- add_sanitizers(soplex)
143
+ set(CMAKE_EXECUTABLE_SUFFIX ".html")
144
+ - endif()
145
+ + endif()
146
+
147
+ - if(CMAKE_BUILD_TYPE EQUAL "Debug")
148
+ - find_package(Sanitizers)
149
+ - add_sanitizers(soplex)
150
+ + if(CMAKE_BUILD_TYPE EQUAL "Debug")
151
+ + find_package(Sanitizers)
152
+ + add_sanitizers(soplex)
153
+ + endif()
129
154
endif()
130
155
131
156
- add_executable(example EXCLUDE_FROM_ALL example.cpp)
132
157
- target_link_libraries(example libsoplex)
133
- + add_executable(soplex_example EXCLUDE_FROM_ALL example.cpp)
134
- + target_link_libraries(soplex_example libsoplex)
158
+ -
159
+ - # set the install rpath to the installed destination
160
+ - set_target_properties(soplex PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
161
+ + if(SOPLEX_EXAMPLE)
162
+ + add_executable(example example.cpp)
163
+ + target_link_libraries(example libsoplex)
164
+ + endif()
165
+
166
+ # install the header files of soplex
167
+ install(FILES ${headers} ${PROJECT_BINARY_DIR}/soplex/config.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/soplex)
168
+ @@ -237,15 +241,28 @@ install(FILES
169
+ DESTINATION include/soplex/external/zstr)
135
170
136
- # set the install rpath to the installed destination
137
- set_target_properties(soplex PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
138
- @@ -244,8 +244,8 @@ install(TARGETS soplex libsoplex libsoplex-pic libsoplexshared EXPORT soplex-tar
171
+ # install the binary and the library to appropriate lcoations and add them to an export group
172
+ - install(TARGETS soplex libsoplex libsoplex-pic libsoplexshared EXPORT soplex-targets
173
+ + if(SOPLEX_SOPLEX)
174
+ + install(TARGETS soplex
175
+ + EXPORT soplex-targets
176
+ + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
177
+ + endif()
178
+ +
179
+ + install(TARGETS libsoplex libsoplex-pic libsoplexshared
180
+ + EXPORT soplex-targets
181
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
182
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
183
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
139
184
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
140
185
186
+ + install(EXPORT soplex-targets
187
+ + FILE soplex-targets.cmake
188
+ + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/soplex)
189
+ +
141
190
# Add library targets to the build-tree export set
142
191
- export(TARGETS libsoplex libsoplex-pic libsoplexshared
143
192
- FILE "${CMAKE_BINARY_DIR}/soplex-targets.cmake")
144
- + #export(TARGETS libsoplex libsoplex-pic libsoplexshared
145
- + # FILE "${CMAKE_BINARY_DIR}/soplex-targets.cmake")
193
+ + if(SOPLEX_EXPORT)
194
+ + export(TARGETS libsoplex libsoplex-pic libsoplexshared
195
+ + FILE "${CMAKE_BINARY_DIR}/soplex-targets.cmake")
196
+ + endif()
146
197
147
198
#configure the config file for the build tree
148
199
set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src" "${PROJECT_BINARY_DIR}")
200
+ @@ -259,7 +276,6 @@ ${CMAKE_BINARY_DIR}/soplex-config-version.cmake
201
+ COMPATIBILITY SameMajorVersion
202
+ )
203
+
204
+ -
205
+ #configure the config file for the install
206
+ set(CONF_INCLUDE_DIRS "\${CMAKE_CURRENT_LIST_DIR}/../../../include")
207
+ configure_file(${PROJECT_SOURCE_DIR}/soplex-config.cmake.in
208
+ @@ -267,7 +283,6 @@ configure_file(${PROJECT_SOURCE_DIR}/soplex-config.cmake.in
209
+
210
+ # install the targets of the soplex export group and the config file so that other projects
211
+ # can link easily against soplex
212
+ - install(EXPORT soplex-targets FILE soplex-targets.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/soplex)
213
+ install(FILES "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/soplex-config.cmake"
214
+ ${CMAKE_BINARY_DIR}/soplex-config-version.cmake
215
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/soplex)
0 commit comments