-
Notifications
You must be signed in to change notification settings - Fork 49
/
CMakeLists.txt
115 lines (98 loc) · 3.56 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
project(OMSimulatorLib)
find_package(Threads)
if (ASAN)
set(CMAKE_BUILD_TYPE Debug)
ENDIF ()
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 ()
set(OMTLM_SOURCES "DummyTLM/")
set(TLM_STRING "-notlm")
set(OMSIMULATORLIB_SOURCES
AlgLoop.cpp
BusConnector.cpp
Clock.cpp
Clocks.cpp
Component.cpp
ComponentFMUCS.cpp
ComponentFMUME.cpp
ComponentTable.cpp
ComRef.cpp
Connection.cpp
Connector.cpp
CSVReader.cpp
CSVWriter.cpp
DirectedGraph.cpp
Element.cpp
ExternalModelInfo.cpp
Flags.cpp
FMUInfo.cpp
Logging.cpp
MatReader.cpp
MatVer4.cpp
MATWriter.cpp
Model.cpp
OMSFileSystem.cpp
OMSimulator.cpp
OMSString.cpp
ResultReader.cpp
ResultWriter.cpp
Scope.cpp
SignalDerivative.cpp
Snapshot.cpp
StepSizeConfiguration.cpp
System.cpp
SystemSC.cpp
SystemWC.cpp
Values.cpp
Variable.cpp
ssd/ConnectionGeometry.cpp
ssd/ConnectorGeometry.cpp
ssd/ElementGeometry.cpp
ssd/SystemGeometry.cpp
ssd/Tags.cpp)
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
../OMSimulatorLua
${Boost_INCLUDE_DIRS}
${CTPL_INCLUDEDIR}
${OMTLM_SOURCES})
link_directories(${Boost_LIBRARY_DIRS})
# Shared library version
add_library(OMSimulatorLib SHARED ${OMSIMULATORLIB_SOURCES})
set_target_properties(OMSimulatorLib PROPERTIES OUTPUT_NAME OMSimulator)
target_include_directories(OMSimulatorLib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(OMSimulatorLib PUBLIC sundials_kinsol_static sundials_cvode_static fmi4c minizip zlibstatic pugixml_header_only lua_static)
# 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 ()
target_compile_definitions(OMSimulatorLib_static PUBLIC OMS_STATIC)
target_include_directories(OMSimulatorLib_static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(OMSimulatorLib_static PUBLIC sundials_kinsol_static sundials_cvode_static fmi4c minizip zlibstatic pugixml_header_only lua_static)
IF (WIN32 AND MSVC)
add_definitions(-DBOOST_ALL_DYN_LINK)
ENDIF ()
target_link_libraries(OMSimulatorLib PUBLIC ${LIB_ATOMIC} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT} ${CPP_FS_LIBS})
target_link_libraries(OMSimulatorLib_static PUBLIC ${CMAKE_DL_LIBS} ${LIB_ATOMIC} ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES} ${CPP_FS_LIBS})
IF (WIN32 AND MINGW)
target_link_libraries(OMSimulatorLib PUBLIC shlwapi)
target_link_libraries(OMSimulatorLib_static PUBLIC shlwapi)
ENDIF ()
install(TARGETS OMSimulatorLib)
install(TARGETS OMSimulatorLib_static)
install(FILES OMSimulator.h Types.h TYPE INCLUDE)