Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/libsumo/CMakeLists.txt
169668 views
1
set(libsumostatic_STAT_SRCS
2
Edge.cpp
3
Edge.h
4
Helper.cpp
5
Helper.h
6
InductionLoop.cpp
7
InductionLoop.h
8
Junction.cpp
9
Junction.h
10
Lane.cpp
11
Lane.h
12
LaneArea.cpp
13
LaneArea.h
14
MultiEntryExit.h
15
MultiEntryExit.cpp
16
Person.cpp
17
Person.h
18
POI.cpp
19
POI.h
20
Polygon.h
21
Polygon.cpp
22
Route.h
23
Route.cpp
24
Calibrator.h
25
Calibrator.cpp
26
BusStop.h
27
BusStop.cpp
28
ParkingArea.h
29
ParkingArea.cpp
30
ChargingStation.h
31
ChargingStation.cpp
32
RouteProbe.h
33
RouteProbe.cpp
34
Rerouter.h
35
Rerouter.cpp
36
VariableSpeedSign.h
37
VariableSpeedSign.cpp
38
MeanData.h
39
MeanData.cpp
40
OverheadWire.h
41
OverheadWire.cpp
42
Simulation.cpp
43
Simulation.h
44
Subscription.h
45
StorageHelper.h
46
TraCIConstants.h
47
TraCIDefs.h
48
TrafficLight.cpp
49
TrafficLight.h
50
Vehicle.cpp
51
Vehicle.h
52
VehicleType.cpp
53
VehicleType.h
54
)
55
56
if (NOT ISOLATED_BUILD)
57
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/bin)
58
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/bin)
59
endif()
60
add_library(libsumostatic STATIC ${libsumostatic_STAT_SRCS})
61
add_dependencies(libsumostatic generate-version-h install_dll)
62
set_target_properties(libsumostatic PROPERTIES FOLDER "libsumo" PREFIX ""
63
OUTPUT_NAME libsumostatic${BINARY_SUFFIX}
64
OUTPUT_NAME_DEBUG libsumostatic${BINARY_SUFFIX}D)
65
66
if (FOX_FOUND)
67
add_library(libsumoguistatic STATIC ${libsumostatic_STAT_SRCS} GUI.cpp GUI.h)
68
add_dependencies(libsumoguistatic generate-version-h install_dll)
69
set_target_properties(libsumoguistatic PROPERTIES FOLDER "libsumo" PREFIX ""
70
OUTPUT_NAME libsumoguistatic${BINARY_SUFFIX}
71
OUTPUT_NAME_DEBUG libsumoguistatic${BINARY_SUFFIX}D)
72
target_compile_definitions(libsumoguistatic PUBLIC HAVE_LIBSUMOGUI)
73
add_library(libsumocpp SHARED ${libsumostatic_STAT_SRCS} GUI.cpp GUI.h)
74
target_compile_definitions(libsumocpp PUBLIC HAVE_LIBSUMOGUI)
75
set(libsumo_link_library libsumoguistatic)
76
set(sumo_link_libraries ${sumoguilibs})
77
else ()
78
add_library(libsumocpp SHARED ${libsumostatic_STAT_SRCS})
79
set(libsumo_link_library libsumostatic)
80
set(sumo_link_libraries ${sumolibs})
81
endif()
82
add_dependencies(libsumocpp generate-version-h install_dll)
83
84
set_target_properties(libsumocpp PROPERTIES FOLDER "libsumo" PREFIX ""
85
OUTPUT_NAME libsumocpp${BINARY_SUFFIX}
86
OUTPUT_NAME_DEBUG libsumocpp${BINARY_SUFFIX}D)
87
target_include_directories(libsumocpp PUBLIC $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src>)
88
install(TARGETS libsumocpp EXPORT SUMOConfig
89
DESTINATION bin
90
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
91
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
92
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
93
)
94
export(TARGETS libsumocpp NAMESPACE SUMO:: FILE "${CMAKE_BINARY_DIR}/SUMOConfig.cmake")
95
96
if ((GNU_COMPILER OR CLANG_COMPILER) AND NOT APPLE)
97
target_link_libraries(libsumocpp PRIVATE -Wl,--whole-archive ${sumolibs} -Wl,--no-whole-archive)
98
else ()
99
target_link_libraries(libsumocpp PRIVATE ${sumolibs})
100
endif()
101
target_link_libraries(libsumocpp PRIVATE ${sumo_link_libraries})
102
103
if (SWIG_FOUND)
104
include(${SWIG_USE_FILE})
105
set_source_files_properties(libsumo.i PROPERTIES CPLUSPLUS ON)
106
file(GLOB LIBSUMO_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
107
if (ENABLE_JAVA_BINDINGS)
108
find_package(Java)
109
find_package(JNI)
110
if(JAVA_FOUND AND JNI_FOUND)
111
include(UseJava)
112
include_directories(${JNI_INCLUDE_DIRS})
113
set(CMAKE_SWIG_FLAGS -package org.eclipse.sumo.libsumo)
114
if (FOX_FOUND)
115
set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DHAVE_LIBSUMOGUI)
116
endif()
117
set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/java)
118
set(SWIG_MODULE_libsumojni_EXTRA_DEPS ${LIBSUMO_HEADERS} libsumo_typemap.i)
119
if (${CMAKE_VERSION} VERSION_GREATER 3.8.0)
120
SWIG_ADD_LIBRARY(libsumojni LANGUAGE java SOURCES libsumo.i)
121
else()
122
SWIG_ADD_MODULE(libsumojni java libsumo.i)
123
endif()
124
if ((GNU_COMPILER OR CLANG_COMPILER) AND NOT APPLE)
125
set_source_files_properties(${swig_generated_file_fullname} PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing")
126
swig_link_libraries(libsumojni -Wl,--whole-archive ${libsumo_link_library} ${sumolibs} -Wl,--no-whole-archive)
127
else()
128
swig_link_libraries(libsumojni ${libsumo_link_library} ${sumolibs})
129
endif()
130
swig_link_libraries(libsumojni ${sumo_link_libraries})
131
if (MVN_EXECUTABLE)
132
ADD_CUSTOM_COMMAND(TARGET libsumojni POST_BUILD
133
COMMAND ${PYTHON_EXECUTABLE} ${SUMO_TOOLS_DIR}/traci/rebuildConstants.py -o java/Constants.java -j org.eclipse.sumo.libsumo.Constants
134
COMMAND ${CMAKE_COMMAND} -E make_directory src/main/java/org/eclipse/sumo/libsumo
135
COMMAND ${CMAKE_COMMAND} -E copy_directory java src/main/java/org/eclipse/sumo/libsumo
136
COMMAND ${PYTHON_EXECUTABLE} ${SUMO_TOOLS_DIR}/build_config/pom.py libsumo $<TARGET_FILE_DIR:libsumojni>
137
COMMAND ${MVN_COMMAND_PREFIX} ${MVN_EXECUTABLE} ${MVN_REPO} ${MVN_OPTS} --batch-mode package source:jar
138
)
139
else()
140
message(WARNING "Could not build libsumo jar, maven was not found.")
141
endif()
142
set_target_properties(libsumojni PROPERTIES FOLDER "libsumo")
143
install(TARGETS libsumojni DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
144
else()
145
message(WARNING "ENABLE_JAVA_BINDINGS is set but Java or JNI was not found.")
146
endif()
147
endif()
148
149
if (ENABLE_CS_BINDINGS)
150
set(CS_NAMESPACE Eclipse.Sumo.Libsumo)
151
set(CMAKE_SWIG_FLAGS -namespace ${CS_NAMESPACE})
152
if (FOX_FOUND)
153
set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DHAVE_LIBSUMOGUI)
154
endif()
155
set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CS_NAMESPACE})
156
set(SWIG_MODULE_libsumocs_EXTRA_DEPS ${LIBSUMO_HEADERS} libsumo_typemap.i)
157
if (${CMAKE_VERSION} VERSION_GREATER 3.8.0)
158
SWIG_ADD_LIBRARY(libsumocs LANGUAGE CSharp SOURCES libsumo.i)
159
else()
160
SWIG_ADD_MODULE(libsumocs CSharp libsumo.i)
161
endif()
162
if ((GNU_COMPILER OR CLANG_COMPILER) AND NOT APPLE)
163
set_source_files_properties(${swig_generated_file_fullname} PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing")
164
swig_link_libraries(libsumocs -Wl,--whole-archive ${libsumo_link_library} ${sumolibs} -Wl,--no-whole-archive)
165
else()
166
swig_link_libraries(libsumocs ${libsumo_link_library} ${sumolibs})
167
endif()
168
swig_link_libraries(libsumocs ${sumo_link_libraries})
169
ADD_CUSTOM_COMMAND(TARGET libsumocs POST_BUILD
170
COMMAND ${CMAKE_COMMAND} -E tar "cf" "$<TARGET_FILE_DIR:libsumocs>/libsumocs-sources.zip" --format=zip "${CS_NAMESPACE}"
171
)
172
set_target_properties(libsumocs PROPERTIES FOLDER "libsumo" PREFIX "")
173
install(TARGETS libsumocs DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
174
endif()
175
176
if (ENABLE_PYTHON_BINDINGS AND PYTHON_INCLUDE_DIRS)
177
include_directories(${PYTHON_INCLUDE_DIRS})
178
set(CMAKE_SWIG_FLAGS -keyword) # is necessary for using keyword args
179
# other options which should be evaluated: -builtin, -modern, -extranative
180
if (FOX_FOUND)
181
set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DHAVE_LIBSUMOGUI)
182
endif()
183
set(SWIG_OUTFILE_DIR ${CMAKE_CURRENT_BINARY_DIR})
184
if (NOT ISOLATED_BUILD)
185
set(CMAKE_SWIG_OUTDIR ${CMAKE_SOURCE_DIR}/tools/libsumo)
186
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/tools/libsumo)
187
# set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/tools/libsumo)
188
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/tools/libsumo)
189
endif()
190
set(SWIG_MODULE_libsumo_EXTRA_DEPS ${LIBSUMO_HEADERS} libsumo_typemap.i)
191
if (${CMAKE_VERSION} VERSION_GREATER 3.8.0)
192
if (CLANG_COMPILER)
193
set_property(SOURCE libsumo.i PROPERTY GENERATED_COMPILE_OPTIONS "-Wno-deprecated-declarations")
194
endif()
195
SWIG_ADD_LIBRARY(libsumo LANGUAGE python SOURCES libsumo.i)
196
else()
197
SWIG_ADD_MODULE(libsumo python libsumo.i)
198
endif()
199
add_dependencies(${SWIG_MODULE_libsumo_REAL_NAME} generate-version-h install_dll)
200
if ((GNU_COMPILER OR CLANG_COMPILER) AND NOT APPLE)
201
swig_link_libraries(libsumo -Wl,--whole-archive ${libsumo_link_library} ${sumolibs} -Wl,--no-whole-archive)
202
else()
203
set_target_properties(${SWIG_MODULE_libsumo_REAL_NAME} PROPERTIES FOLDER "libsumo")
204
if (SKBUILD OR ${CMAKE_VERSION} VERSION_LESS 3.14.0)
205
swig_link_libraries(libsumo ${libsumo_link_library} ${sumolibs} ${PYTHON_LIBRARIES})
206
else()
207
# using target fixes segfault in macos, swig_link_libraries is also deprecated
208
target_link_libraries(libsumo ${libsumo_link_library} ${sumolibs} Python::Module)
209
endif()
210
endif()
211
if (WIN32)
212
swig_link_libraries(libsumo ${PYTHON_LIBRARIES})
213
endif()
214
swig_link_libraries(libsumo ${sumo_link_libraries})
215
if (NOT ${PYTHON_SETUPTOOLS_MISSING})
216
if (${PYTHON_BUILD_MISSING})
217
install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${SUMO_TOOLS_DIR}/build_config/setup-libsumo.py clean --all install --root=\$ENV{DESTDIR}/ --prefix=${CMAKE_INSTALL_PREFIX} --optimize=1)"
218
COMPONENT pylibsumo)
219
else ()
220
install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ./build_config/version.py ./build_config/setup-libsumo.py ./setup.py COMMAND ${PYTHON_EXECUTABLE} -m pip install --root=\$ENV{DESTDIR}/ --prefix=${CMAKE_INSTALL_PREFIX} -f ${CMAKE_BINARY_DIR} . WORKING_DIRECTORY ${SUMO_TOOLS_DIR})"
221
COMPONENT pylibsumo)
222
endif()
223
endif()
224
endif()
225
226
endif()
227
228