File: static_and_shared_libs_in_cmake.patch

package info (click to toggle)
stopt 6.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 9,264 kB
  • sloc: cpp: 75,778; python: 6,012; makefile: 72; sh: 57
file content (174 lines) | stat: -rw-r--r-- 8,097 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
Description: modifying the CMakeList.txt files to be able to build both static
 and shared libraries, also with and without MPI support.
 Also reporting the version and soversion defined in d/rules.
Author: Xavier Warin <xavier.warin@gmail.com>
        Pierre Gruet <pgt@debian.org>
Forwarded: not-needed
Last-Update: 2021-10-22

--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -48,6 +48,9 @@
   ADD_DEFINITIONS(-DUSE_LONG_TEST)
 ENDIF(BUILD_LONG_TEST)
 
+# do we BUILD STATIC lib?
+OPTION(BUILD_DYNLIB "Build Dynamic libs" ON)
+
 # Boost
 IF(BUILD_TEST)
   FIND_PACKAGE(Boost COMPONENTS unit_test_framework  system  timer chrono log thread  REQUIRED)
@@ -58,24 +61,7 @@
 FIND_PACKAGE(Boost COMPONENTS serialization REQUIRED)
 MESSAGE(STATUS "Boost serialization : ${Boost_SERIALIZATION_LIBRARY}")
 INCLUDE_DIRECTORIES(SYSTEM ${Boost_INCLUDE_DIRS})
-IF(BUILD_MPI)
-  FIND_PACKAGE(MPI)
-  IF(NOT MPI_CXX_FOUND)
-    SET(BUILD_MPI OFF)
-  ELSE()
-    FIND_PACKAGE(Boost COMPONENTS mpi )
-    IF(Boost_MPI_FOUND)
-      MESSAGE(STATUS "Boost mpi: ${Boost_MPI_LIBRARY}")
-    ENDIF(Boost_MPI_FOUND)
-    IF(Boost_MPI_FOUND)
-      INCLUDE_DIRECTORIES(SYSTEM ${MPI_CXX_INCLUDE_PATH})
-      ADD_DEFINITIONS(-DUSE_MPI)
-    ELSE()
-      MESSAGE(STATUS "Boost modules mpi  not found. Set BUILD_MPI=OFF")
-      SET(BUILD_MPI OFF)
-    ENDIF(Boost_MPI_FOUND)
-  ENDIF(NOT MPI_CXX_FOUND)
-ENDIF(BUILD_MPI)
+
 
 IF (WIN32)
   #zlib
@@ -176,24 +162,68 @@
 SET(SOURCE_DIR_LIB9 ${PROJECT_SOURCE_DIR}/StOpt/tree)
 SET(SOURCE_DIR_LIB10 ${PROJECT_SOURCE_DIR}/StOpt/cdf)
 FILE(GLOB SOURCE  ${SOURCE_DIR_LIB1}/*.cpp ${SOURCE_DIR_LIB2}/*.cpp  ${SOURCE_DIR_LIB3}/*.cpp  ${SOURCE_DIR_LIB4}/*.cpp   ${SOURCE_DIR_LIB5}/*.cpp  ${SOURCE_DIR_LIB6}/*.cpp ${SOURCE_DIR_LIB7}/*.cpp  ${SOURCE_DIR_LIB8}/*.cpp ${SOURCE_DIR_LIB9}/*.cpp ${SOURCE_DIR_LIB10}/*.cpp  )
-IF (WIN32)
-  SET(SUFF "/Release")
-  SET(EXTENSION ".exe")
-  ADD_LIBRARY(StOpt STATIC ${SOURCE})
-ELSE()
-   ADD_LIBRARY(StOpt SHARED ${SOURCE})
-ENDIF()
-IF(BUILD_MPI)
-  TARGET_LINK_LIBRARIES(StOpt ${MPI_CXX_LIBRARIES} ${MPI_C_LIBRARIES}    ${Boost_CHRONO_LIBRARY}  ${Boost_SYSTEM_LIBRARY} ${Boost_TIMER_LIBRARY}  ${Boost_MPI_LIBRARY}  ${Boost_SERIALIZATION_LIBRARY} ${GENERS_LIB} ${Boost_RANDOM_LIBRARY}  ${Boost_LOG_LIBRARY}  ${BZIP2_LIBRARIES}  ${ZLIB_LIBRARIES})
-ELSE()
-  TARGET_LINK_LIBRARIES(StOpt     ${Boost_CHRONO_LIBRARY}  ${Boost_SYSTEM_LIBRARY} ${Boost_TIMER_LIBRARY}  ${Boost_SERIALIZATION_LIBRARY} ${GENERS_LIB} ${Boost_RANDOM_LIBRARY} ${Boost_LOG_LIBRARY} ${BZIP2_LIBRARIES}  ${ZLIB_LIBRARIES} )
-ENDIF()
+
+ADD_LIBRARY(StOpt-dyn SHARED ${SOURCE})
+ADD_LIBRARY(StOpt-stat STATIC ${SOURCE})
+ADD_LIBRARY(StOpt-mpi-stat STATIC ${SOURCE})
+ADD_LIBRARY(StOpt-mpi-python-dyn SHARED ${SOURCE})
+
+  FIND_PACKAGE(MPI)
+  IF(NOT MPI_CXX_FOUND)
+    SET(BUILD_MPI OFF)
+  ELSE()
+    FIND_PACKAGE(Boost COMPONENTS mpi )
+    IF(Boost_MPI_FOUND)
+      MESSAGE(STATUS "Boost mpi: ${Boost_MPI_LIBRARY}")
+    ENDIF(Boost_MPI_FOUND)
+    IF(Boost_MPI_FOUND)
+      INCLUDE_DIRECTORIES(SYSTEM ${MPI_CXX_INCLUDE_PATH})
+      target_compile_definitions(StOpt-mpi-stat PUBLIC USE_MPI)
+      target_compile_definitions(StOpt-mpi-python-dyn PUBLIC USE_MPI)
+    ELSE()
+      MESSAGE(STATUS "Boost modules mpi  not found. Set BUILD_MPI=OFF")
+      SET(BUILD_MPI OFF)
+    ENDIF(Boost_MPI_FOUND)
+  ENDIF(NOT MPI_CXX_FOUND)
+
+  TARGET_LINK_LIBRARIES(StOpt-mpi-stat ${MPI_CXX_LIBRARIES} ${MPI_C_LIBRARIES}    ${Boost_CHRONO_LIBRARY}  ${Boost_SYSTEM_LIBRARY} ${Boost_TIMER_LIBRARY}  ${Boost_MPI_LIBRARY}  ${Boost_SERIALIZATION_LIBRARY} ${GENERS_LIB} ${Boost_RANDOM_LIBRARY}  ${Boost_LOG_LIBRARY}  ${BZIP2_LIBRARIES}  ${ZLIB_LIBRARIES})
+  TARGET_LINK_LIBRARIES(StOpt-mpi-python-dyn ${MPI_CXX_LIBRARIES} ${MPI_C_LIBRARIES}    ${Boost_CHRONO_LIBRARY}  ${Boost_SYSTEM_LIBRARY} ${Boost_TIMER_LIBRARY}  ${Boost_MPI_LIBRARY}  ${Boost_SERIALIZATION_LIBRARY} ${GENERS_LIB} ${Boost_RANDOM_LIBRARY}  ${Boost_LOG_LIBRARY}  ${BZIP2_LIBRARIES}  ${ZLIB_LIBRARIES})
+  TARGET_LINK_LIBRARIES(StOpt-dyn     ${Boost_CHRONO_LIBRARY}  ${Boost_SYSTEM_LIBRARY} ${Boost_TIMER_LIBRARY}  ${Boost_SERIALIZATION_LIBRARY} ${GENERS_LIB} ${Boost_RANDOM_LIBRARY} ${Boost_LOG_LIBRARY} ${BZIP2_LIBRARIES}  ${ZLIB_LIBRARIES} )
+  TARGET_LINK_LIBRARIES(StOpt-stat     ${Boost_CHRONO_LIBRARY}  ${Boost_SYSTEM_LIBRARY} ${Boost_TIMER_LIBRARY}  ${Boost_SERIALIZATION_LIBRARY} ${GENERS_LIB} ${Boost_RANDOM_LIBRARY} ${Boost_LOG_LIBRARY} ${BZIP2_LIBRARIES}  ${ZLIB_LIBRARIES} )
+
 IF(OPENMP_CXX_FOUND)
-   TARGET_LINK_LIBRARIES(StOpt OpenMP::OpenMP_CXX)
+  TARGET_LINK_LIBRARIES(StOpt-mpi-stat OpenMP::OpenMP_CXX)
+  TARGET_LINK_LIBRARIES(StOpt-mpi-python-dyn OpenMP::OpenMP_CXX)
+  TARGET_LINK_LIBRARIES(StOpt-dyn OpenMP::OpenMP_CXX)
+  TARGET_LINK_LIBRARIES(StOpt-stat OpenMP::OpenMP_CXX)
 ENDIF(OPENMP_CXX_FOUND)
-SET (STOPT_LIB StOpt)
+SET (STOPT_LIB StOpt-mpi-python-dyn)
+
+set_target_properties(StOpt-mpi-stat PROPERTIES
+        OUTPUT_NAME stopt-mpi
+)
+
+set_target_properties(StOpt-mpi-python-dyn PROPERTIES
+        VERSION ${VERSION_STOPT}
+        SOVERSION ${SOVERSION_STOPT}
+        OUTPUT_NAME stopt-mpi
+)
+
+set_target_properties(StOpt-dyn PROPERTIES
+        VERSION ${VERSION_STOPT}
+        SOVERSION ${SOVERSION_STOPT}
+        OUTPUT_NAME stopt
+)
+
+set_target_properties(StOpt-stat PROPERTIES
+        OUTPUT_NAME stopt
+)
+
 #install lib
-INSTALL(TARGETS StOpt COMPONENT libraries DESTINATION "lib")
+INSTALL(TARGETS StOpt-mpi-stat COMPONENT libraries DESTINATION "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
+INSTALL(TARGETS StOpt-mpi-python-dyn COMPONENT libraries DESTINATION "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
+INSTALL(TARGETS StOpt-dyn COMPONENT libraries DESTINATION "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
+INSTALL(TARGETS StOpt-stat COMPONENT libraries DESTINATION "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
 # install headers
 INSTALL(DIRECTORY StOpt
     COMPONENT headers
@@ -211,7 +241,6 @@
     ${INSTALL_PERMISSIONS_SRC}
     )
 
-IF(BUILD_PYTHON)
     
   # Python
   FIND_PACKAGE(Python REQUIRED COMPONENTS Interpreter Development)
@@ -287,16 +316,15 @@
   ENDIF()
  
   # INSTALLATION
-  INSTALL(TARGETS StOptGrids  COMPONENT libraries DESTINATION "lib")
-  INSTALL(TARGETS StOptReg   COMPONENT libraries DESTINATION "lib")
-  INSTALL(TARGETS StOptTree   COMPONENT libraries DESTINATION "lib")
-  INSTALL(TARGETS StOptGlobal  COMPONENT libraries DESTINATION "lib")
-  INSTALL(TARGETS StOptGeners  COMPONENT libraries DESTINATION "lib")
+  INSTALL(TARGETS StOptGrids  COMPONENT libraries DESTINATION "lib/python3/dist-packages")
+  INSTALL(TARGETS StOptReg   COMPONENT libraries DESTINATION "lib/python3/dist-packages")
+  INSTALL(TARGETS StOptTree   COMPONENT libraries DESTINATION "lib/python3/dist-packages")
+  INSTALL(TARGETS StOptGlobal  COMPONENT libraries DESTINATION "lib/python3/dist-packages")
+  INSTALL(TARGETS StOptGeners  COMPONENT libraries DESTINATION "lib/python3/dist-packages")
 
 
-  IF (BUILD_SDDP)
-    ADD_DEFINITIONS(-DSDDPPYTHON)
     ADD_LIBRARY(StOptSDDP  SHARED  ${SOURCE_PYTHON}/Pybind11StOptSDDP.cpp)
+    target_compile_definitions(StOptSDDP PUBLIC SDDPPYTHON)
     IF (APPLE)
       TARGET_LINK_LIBRARIES(StOptSDDP  ${STOPT_LIB}   ${GENERS_LIB} ${Boost_SERIALIZATION_LIBRARY}  ${Boost_MPI_LIBRARY} ${Boost_TIMER_LIBRARY} )
       SET_TARGET_PROPERTIES(StOptSDDP  PROPERTIES  PREFIX "" SUFFIX ${PYTHON_SUFFIX}  COMPILE_DEFINITIONS  "PYTHONMODULE;NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION" LINK_FLAGS "-undefined dynamic_lookup" )
@@ -305,11 +333,9 @@
       SET_TARGET_PROPERTIES(StOptSDDP  PROPERTIES  PREFIX "" SUFFIX ${PYTHON_SUFFIX}  COMPILE_DEFINITIONS  "PYTHONMODULE;NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION")
     ENDIF()
     # INSTALLATION
-    INSTALL(TARGETS StOptSDDP COMPONENT libraries DESTINATION "lib")
+    INSTALL(TARGETS StOptSDDP COMPONENT libraries DESTINATION "lib/python3/dist-packages")
     
-  ENDIF(BUILD_SDDP)
   
-ENDIF(BUILD_PYTHON)
 
 
 IF(BUILD_TEST)