-
Notifications
You must be signed in to change notification settings - Fork 49
/
CMakeLists.txt
179 lines (161 loc) · 8.01 KB
/
CMakeLists.txt
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
175
176
177
178
179
project(OMSimulatorLib)
find_package(Threads)
if (ASAN)
set(CMAKE_BUILD_TYPE Debug)
ENDIF ()
set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib/${HOST_SHORT}:$ORIGIN/")
IF (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=uninitialized")
ELSEIF (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.1)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=uninitialized")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=return-local-addr")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=return-type")
if (ASAN)
message(STATUS "AddressSanitizer enabled")
add_compile_options("-fsanitize=address" "-fno-omit-frame-pointer")
link_libraries("-fsanitize=address")
ENDIF ()
ENDIF ()
IF (OMTLM)
set(OMTLM_SOURCES "TLM/")
set(TLM_STRING "")
ELSE ()
set(OMTLM_SOURCES "DummyTLM/")
set(TLM_STRING "-notlm")
ENDIF ()
list(APPEND OMSIMULATORLIB_SOURCES AlgLoop.cpp)
list(APPEND OMSIMULATORLIB_SOURCES BusConnector.cpp)
list(APPEND OMSIMULATORLIB_SOURCES Clock.cpp)
list(APPEND OMSIMULATORLIB_SOURCES Clocks.cpp)
list(APPEND OMSIMULATORLIB_SOURCES Component.cpp)
list(APPEND OMSIMULATORLIB_SOURCES ComponentFMUCS.cpp)
list(APPEND OMSIMULATORLIB_SOURCES ComponentFMUME.cpp)
list(APPEND OMSIMULATORLIB_SOURCES ComponentTable.cpp)
list(APPEND OMSIMULATORLIB_SOURCES ComRef.cpp)
list(APPEND OMSIMULATORLIB_SOURCES Connection.cpp)
list(APPEND OMSIMULATORLIB_SOURCES Connector.cpp)
list(APPEND OMSIMULATORLIB_SOURCES CSVReader.cpp)
list(APPEND OMSIMULATORLIB_SOURCES CSVWriter.cpp)
list(APPEND OMSIMULATORLIB_SOURCES DirectedGraph.cpp)
list(APPEND OMSIMULATORLIB_SOURCES Element.cpp)
list(APPEND OMSIMULATORLIB_SOURCES ExternalModelInfo.cpp)
list(APPEND OMSIMULATORLIB_SOURCES Flags.cpp)
list(APPEND OMSIMULATORLIB_SOURCES FMUInfo.cpp)
list(APPEND OMSIMULATORLIB_SOURCES Logging.cpp)
list(APPEND OMSIMULATORLIB_SOURCES MatReader.cpp)
list(APPEND OMSIMULATORLIB_SOURCES MatVer4.cpp)
list(APPEND OMSIMULATORLIB_SOURCES MATWriter.cpp)
list(APPEND OMSIMULATORLIB_SOURCES Model.cpp)
list(APPEND OMSIMULATORLIB_SOURCES OMSFileSystem.cpp)
list(APPEND OMSIMULATORLIB_SOURCES OMSimulator.cpp)
list(APPEND OMSIMULATORLIB_SOURCES OMSString.cpp)
list(APPEND OMSIMULATORLIB_SOURCES ResultReader.cpp)
list(APPEND OMSIMULATORLIB_SOURCES ResultWriter.cpp)
list(APPEND OMSIMULATORLIB_SOURCES Scope.cpp)
list(APPEND OMSIMULATORLIB_SOURCES SignalDerivative.cpp)
list(APPEND OMSIMULATORLIB_SOURCES Snapshot.cpp)
list(APPEND OMSIMULATORLIB_SOURCES StepSizeConfiguration.cpp)
list(APPEND OMSIMULATORLIB_SOURCES System.cpp)
list(APPEND OMSIMULATORLIB_SOURCES SystemSC.cpp)
list(APPEND OMSIMULATORLIB_SOURCES SystemWC.cpp)
list(APPEND OMSIMULATORLIB_SOURCES Values.cpp)
list(APPEND OMSIMULATORLIB_SOURCES Variable.cpp)
list(APPEND OMSIMULATORLIB_SOURCES ssd/ConnectionGeometry.cpp)
list(APPEND OMSIMULATORLIB_SOURCES ssd/ConnectorGeometry.cpp)
list(APPEND OMSIMULATORLIB_SOURCES ssd/ElementGeometry.cpp)
list(APPEND OMSIMULATORLIB_SOURCES ssd/SystemGeometry.cpp)
list(APPEND OMSIMULATORLIB_SOURCES ssd/Tags.cpp)
IF (OMTLM)
list(APPEND OMSIMULATORLIB_SOURCES ${OMTLM_SOURCES}/ExternalModel.cpp)
list(APPEND OMSIMULATORLIB_SOURCES ${OMTLM_SOURCES}/SystemTLM.cpp)
list(APPEND OMSIMULATORLIB_SOURCES ${OMTLM_SOURCES}/TLMBusConnector.cpp)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/3rdParty/misc/src/Bstring.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/3rdParty/misc/src/coordTransform.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/3rdParty/misc/src/double3.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/3rdParty/misc/src/double33.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/3rdParty/misc/src/double33s.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/3rdParty/misc/src/dsyevc3.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/3rdParty/misc/src/dsyevq3.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/3rdParty/misc/src/dsyevv3.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/3rdParty/misc/src/dsytrd3.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/3rdParty/misc/src/ErrorLog.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/3rdParty/misc/src/tostr.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/common/Communication/TLMClientComm.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/common/Communication/TLMCommUtil.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/common/Interfaces/TLMInterface.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/common/Interfaces/TLMInterface1D.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/common/Interfaces/TLMInterface3D.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/common/Interfaces/TLMInterfaceSignal.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/common/Interfaces/TLMInterfaceSignalInput.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/common/Interfaces/TLMInterfaceSignalOutput.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/common/Logging/TLMErrorLog.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/common/Parameters/ComponentParameter.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/common/Plugin/PluginImplementer.cc)
list(APPEND OMSIMULATORLIB_SOURCES ../../OMTLMSimulator/common/Plugin/TLMPlugin.cc)
ENDIF (OMTLM)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/Version.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/Version.cpp" @ONLY)
list(APPEND OMSIMULATORLIB_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/Version.cpp")
include_directories(
../../3rdParty/RegEx
../OMSimulatorLib
../OMSimulatorLua
${ZLIB_INCLUDEDIR}
${MINIZIP_INCLUDEDIR}
${Boost_INCLUDE_DIRS}
${CTPL_INCLUDEDIR}
${CVODELibrary_INCLUDEDIR}
${FMI4c_INCLUDEDIR}
${KINSOLLibrary_INCLUDEDIR}
${LUALibrary_INCLUDEDIR}
${OMTLM_SOURCES}
${PUGIXML_INCLUDEDIR})
IF (OMTLM)
include_directories(
${OMTLMSIMULATORLIB_INCLUDEDIR}
${OMTLMSIMULATOR_INCLUDEDIR}
${OMTLMSIMULATOR_3RDPARTY_INCLUDEDIR})
ENDIF (OMTLM)
link_directories(
${ZLIB_LIBRARYDIR}
${FMI4c_LIBRARYDIR}
${MINIZIP_LIBRARYDIR}
${LUALibrary_LIBRARYDIR}
${CVODELibrary_LIBRARYDIR}
${KINSOLLibrary_LIBRARYDIR}
${Boost_LIBRARY_DIRS})
IF (OMTLM)
link_directories(${OMTLMSIMULATORLIB_LIBRARYDIR})
ENDIF ()
# Shared library version
add_library(OMSimulatorLib SHARED ${OMSIMULATORLIB_SOURCES})
set_target_properties(OMSimulatorLib PROPERTIES OUTPUT_NAME OMSimulator)
IF (APPLE)
set_target_properties(OMSimulatorLib PROPERTIES INSTALL_NAME_DIR "@rpath")
ENDIF ()
# Static library version
add_library(OMSimulatorLib_static STATIC ${OMSIMULATORLIB_SOURCES})
IF (WIN32 AND MSVC)
set_target_properties(OMSimulatorLib_static PROPERTIES OUTPUT_NAME OMSimulator_static)
ELSE ()
set_target_properties(OMSimulatorLib_static PROPERTIES OUTPUT_NAME OMSimulator)
ENDIF ()
set_target_properties(OMSimulatorLib_static PROPERTIES COMPILE_DEFINITIONS "OMS_STATIC")
IF (WIN32 AND MSVC)
add_definitions(-DBOOST_ALL_DYN_LINK)
ENDIF ()
## set target_compile_definitions when building fmi4c as static, reference fmi4c/cmakeList.txt Line no:71
target_compile_definitions(OMSimulatorLib PUBLIC FMI4C_STATIC)
target_compile_definitions(OMSimulatorLib_static PUBLIC FMI4C_STATIC)
target_link_libraries(OMSimulatorLib fmi4c minizip zlibstatic sundials_kinsol sundials_cvode sundials_nvecserial ${LIB_ATOMIC} ${Boost_LIBRARIES} ${OMTLM_LINKFLAGS} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT} ${CPP_FS_LIBS})
target_link_libraries(OMSimulatorLib_static fmi4c minizip zlibstatic sundials_kinsol sundials_cvode sundials_nvecserial ${LUALibrary_LIBRARY} ${CMAKE_DL_LIBS} ${LIB_ATOMIC} ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES} ${OMTLM_LINKFLAGS} ${CPP_FS_LIBS})
IF (WIN32 AND MINGW)
target_link_libraries(OMSimulatorLib shlwapi)
target_link_libraries(OMSimulatorLib_static shlwapi)
ENDIF ()
IF (WIN32)
install(TARGETS OMSimulatorLib DESTINATION bin)
ELSE ()
install(TARGETS OMSimulatorLib DESTINATION lib/${HOST_SHORT})
ENDIF ()
install(TARGETS OMSimulatorLib_static DESTINATION lib/${HOST_SHORT})
install(FILES OMSimulator.h Types.h DESTINATION include)