-
Notifications
You must be signed in to change notification settings - Fork 298
/
CMakeLists.txt
181 lines (133 loc) · 5.48 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
180
181
cmake_minimum_required (VERSION 2.6)
project(CppSolverInterface)
# on windows boost,blas,lapack and sundial solvers from omdev is used else the installed versions are used
IF( WIN32 )
SET(ENV{BOOST_ROOT} $ENV{OMDEV}"/lib/3rdParty/boost_1_45_0/")
SET(BLAS_blas_LIBRARY $ENV{OMDEV}/lib/3rdParty/Lapack/Lib/blas_win32.dll CACHE FILEPATH "Blas library")
SET(LAPACK_lapack_LIBRARY $ENV{OMDEV}/lib/3rdParty/Lapack/Lib/lapack_win32.dll CACHE FILEPATH "Lapack library")
SET(BLAS_DIRY "$ENV{OMDEV}/lib/3rdParty/Lapack/Lib/" CACHE LOCATION "where was yarp built?")
#set mico paths
SET(MICO_LIB_HOME $ENV{OMDEV}/lib/mico-msys-mingw/)
SET(MICO_INCLUDE_HOME $ENV{OMDEV}/include/mico-msys-mingw/)
#set sundials solvers include and library directories
SET(SUNDIALS_INLCUDE_HOME $ENV{OMDEV}/lib/3rdParty/Sundials/include)
if(MSVC)
SET(SUNDIALS_LIBRARY_RELEASE_HOME $ENV{OMDEV}/lib/3rdParty/Sundials/lib/release/vc100)
elseif(MINGW)
SET(SUNDIALS_LIBRARY_RELEASE_HOME $ENV{OMDEV}/lib/3rdParty/Sundials/lib/release/mingw)
endif()
ENDIF( WIN32 )
SET(MODELICA_MODEL "ModelicaSystem")
SET(USE_MICO OFF)
SET(REDUCE_DAE OFF)
SET(USE_SUNDIALS ON)
SET(INSTALL_OMDEV_LIBS ON)
# Boost
SET(Boost_USE_STATIC_LIBS OFF)
SET(Boost_USE_MULTITHREADED ON)
SET(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost 1.45.0 COMPONENTS serialization REQUIRED )
# Lapack and Blas
find_package( BLAS )
find_package( LAPACK )
if(MSVC)
#workaround because cmake does not find the lapack libraries for Visual Studio 10
SET(LAPACK_MSVC_10 $ENV{OMDEV}/lib/3rdParty/Lapack/Lib/lapack_win32.lib )
SET(BLAS_MSVC_10 $ENV{OMDEV}/lib/3rdParty/Lapack/Lib/blas_win32.lib )
SET(LAPACK_LIBRARIES ${LAPACK_MSVC_10} ${BLAS_MSVC_10} )
endif()
message(STATUS "Lapack Libraries")
message(STATUS ${LAPACK_LIBRARIES})
# Sundials solvers
if(USE_SUNDIALS)
find_path(SUNDIALS_INCLUDE_DIR cvode/cvode.h
PATHS ${SUNDIALS_INLCUDE_HOME})
message(STATUS ${SUNDIALS_INCLUDE_DIR})
find_library(SUNDIALS_NVECSERIAL_LIB "sundials_nvecserial"
PATHS ${SUNDIALS_LIBRARY_RELEASE_HOME})
find_library(SUNDIALS_CVODES_LIB "sundials_cvodes"
PATHS ${SUNDIALS_LIBRARY_RELEASE_HOME} )
find_library(SUNDIALS_IDAS_LIB "sundials_idas"
PATHS ${SUNDIALS_LIBRARY_RELEASE_HOME} )
set(SUNDIALS_LIBS ${SUNDIALS_NVECSERIAL_LIB} ${SUNDIALS_CVODES_LIB} ${SUNDIALS_IDAS_LIB})
message(STATUS "Sundials Libraries:")
message(STATUS ${SUNDIALS_LIBS})
add_definitions(-DPMC_USE_SUNDIALS)
endif()
#Mico corba
if(USE_MICO)
find_library(MICO_LIBRARY mico2313
PATHS ${MICO_LIB_HOME}) #you can add additional search paths for mico library
find_path(MICO_INCLUDE_DIR CORBA.h
${MICO_INCLUDE_HOME}) #you can add additional search paths for mico include
message(STATUS ${MICO_LIBRARY})
message(STATUS ${MICO_INCLUDE_DIR})
endif()
link_directories ( ${Boost_LIBRARY_DIRS} )
include_directories ( ${Boost_INCLUDE_DIRS} )
include_directories ("${PROJECT_SOURCE_DIR}")
include_directories ("${PROJECT_BINARY_DIR}")
#add solver default implemention project
add_subdirectory (Solver/Implementation)
#add Euler solver project
add_subdirectory (Solver/Euler/Implementation)
#add math project
add_subdirectory (Math/Implementation)
add_subdirectory (SettingsFactory/Implementation)
#add simmanager project
add_subdirectory (SimManager)
if(REDUCE_DAE)
add_subdirectory(ReduceDAE/Implementation)
endif()
add_subdirectory (System/Implementation)
add_subdirectory (System/Modelica)
add_subdirectory (System/Newton/Implementation)
add_subdirectory (ModelicaExternalC)
if(USE_SUNDIALS)
#add Cvode solver project
add_subdirectory (Solver/CVode/Implementation)
#add Idas solver project
add_subdirectory (Solver/Idas/Implementation)
GET_TARGET_PROPERTY(libCVode CVode LOCATION)
GET_FILENAME_COMPONENT(libCVodeName ${libCVode} NAME)
GET_TARGET_PROPERTY(libIdas Idas LOCATION)
GET_FILENAME_COMPONENT(libIdasName ${libIdas} NAME)
set (IDAS_LIB ${libIdasName})
set (CVODE_LIB ${libCVodeName})
endIf()
GET_TARGET_PROPERTY(libNewton Newton LOCATION)
GET_FILENAME_COMPONENT(libNewtonName ${libNewton} NAME)
GET_TARGET_PROPERTY(libEuler Euler LOCATION)
GET_FILENAME_COMPONENT(libEulerName ${libEuler} NAME)
GET_TARGET_PROPERTY(libSetFactory SettingsFactory LOCATION)
GET_FILENAME_COMPONENT(libSetFactoryName ${libSetFactory} NAME)
GET_TARGET_PROPERTY(libModelica Modelica LOCATION)
GET_FILENAME_COMPONENT(libModelicaName ${libModelica} NAME)
GET_TARGET_PROPERTY(libSystem System LOCATION)
GET_FILENAME_COMPONENT(libSystemName ${libSystem} NAME)
set (EULER_LIB ${libEulerName})
set (SETTINGSFACTORY_LIB ${libSetFactoryName})
set (MODELICASYSTEM_LIB ${libModelicaName})
set (NEWTON_LIB ${libNewtonName})
set (SYSTEM_LIB ${libSystemName})
# configure a header file to pass some library names
# to the source code which are used to dynamic load and instantiate
configure_file (
"${PROJECT_SOURCE_DIR}/LibrariesConfig.h.in"
"${PROJECT_BINARY_DIR}/LibrariesConfig.h"
)
message(STATUS ${SUNDIALS_CVODES_LIB})
if(INSTALL_OMDEV_LIBS)
if(USE_SUNDIALS)
install (FILES "${SUNDIALS_NVECSERIAL_LIB}" "${SUNDIALS_IDAS_LIB}" "${SUNDIALS_CVODES_LIB}" DESTINATION bin)
endif()
if(USE_MICO)
install (FILES "${MICO_LIBRARY}" DESTINATION bin)
endif()
install (FILES "${LAPACK_lapack_LIBRARY}" DESTINATION bin)
install (FILES "${BLAS_blas_LIBRARY}" DESTINATION bin)
#install (FILES "${Boost_LIBRARIES}" DESTINATION bin)
endif()
install (FILES "${PROJECT_BINARY_DIR}/LibrariesConfig.h" DESTINATION include/omc/cpp)
install (FILES "DataExchange/Interfaces/IHistory.h"
DESTINATION include/omc/cpp/DataExchange/Interfaces)