Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/libsumo/CMakeLists.txt
193871 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
# libsumostatic contains a compiled version of src/libsumo without GUI.* and without HAVE_LIBSUMOGUI being defined
61
add_library(libsumostatic STATIC ${libsumostatic_STAT_SRCS})
62
add_dependencies(libsumostatic generate-version-h install_dll)
63
set_target_properties(libsumostatic PROPERTIES FOLDER "libsumo" PREFIX ""
64
OUTPUT_NAME libsumostatic${BINARY_SUFFIX}
65
OUTPUT_NAME_DEBUG libsumostatic${BINARY_SUFFIX}D)
66
67
if (FOX_FOUND)
68
# libsumoguistatic contains a compiled version of src/libsumo with HAVE_LIBSUMOGUI being defined
69
# the define also affects code in Simulation and Helper so we need to recompile
70
add_library(libsumoguistatic STATIC ${libsumostatic_STAT_SRCS} GUI.cpp GUI.h)
71
add_dependencies(libsumoguistatic generate-version-h install_dll)
72
set_target_properties(libsumoguistatic PROPERTIES FOLDER "libsumo" PREFIX ""
73
OUTPUT_NAME libsumoguistatic${BINARY_SUFFIX}
74
OUTPUT_NAME_DEBUG libsumoguistatic${BINARY_SUFFIX}D)
75
target_compile_definitions(libsumoguistatic PUBLIC HAVE_LIBSUMOGUI)
76
77
# for libsumocpp we need to recompile a third time to make sure everything is in the public interface
78
add_library(libsumocpp SHARED ${libsumostatic_STAT_SRCS} GUI.cpp GUI.h)
79
target_compile_definitions(libsumocpp PUBLIC HAVE_LIBSUMOGUI)
80
set(sumo_link_libraries ${sumoguilibs} libsumoguistatic)
81
target_link_libraries(libsumocpp PRIVATE ${sumoguilibs})
82
else ()
83
add_library(libsumocpp SHARED ${libsumostatic_STAT_SRCS})
84
set(sumo_link_libraries ${sumolibs} libsumostatic)
85
target_link_libraries(libsumocpp PRIVATE ${sumolibs})
86
endif()
87
# TODO libsumocpp may contain GUI or not, you cannot tell from the name
88
add_dependencies(libsumocpp generate-version-h install_dll)
89
90
set_target_properties(libsumocpp PROPERTIES FOLDER "libsumo" PREFIX ""
91
OUTPUT_NAME libsumocpp${BINARY_SUFFIX}
92
OUTPUT_NAME_DEBUG libsumocpp${BINARY_SUFFIX}D)
93
target_include_directories(libsumocpp PUBLIC $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src>)
94
install(TARGETS libsumocpp EXPORT SUMOConfig
95
DESTINATION bin COMPONENT runtime
96
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
97
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
98
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
99
)
100
export(TARGETS libsumocpp NAMESPACE SUMO:: FILE "${CMAKE_BINARY_DIR}/SUMOConfig.cmake")
101
102
if (SWIG_FOUND)
103
include(${SWIG_USE_FILE})
104
set_source_files_properties(libsumo.i PROPERTIES CPLUSPLUS ON)
105
file(GLOB LIBSUMO_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
106
if (ENABLE_JAVA_BINDINGS)
107
find_package(Java)
108
find_package(JNI)
109
if(JAVA_FOUND AND JNI_FOUND)
110
include(UseJava)
111
include_directories(${JNI_INCLUDE_DIRS})
112
set(CMAKE_SWIG_FLAGS -package org.eclipse.sumo.libsumo)
113
if (FOX_FOUND)
114
set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DHAVE_LIBSUMOGUI)
115
endif()
116
set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/java)
117
set(SWIG_MODULE_libsumojni_EXTRA_DEPS ${LIBSUMO_HEADERS} libsumo_typemap.i)
118
SWIG_ADD_LIBRARY(libsumojni LANGUAGE java SOURCES libsumo.i)
119
if ((GNU_COMPILER OR CLANG_COMPILER) AND NOT APPLE)
120
set_source_files_properties(${swig_generated_file_fullname} PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing")
121
endif()
122
target_link_libraries(libsumojni ${sumo_link_libraries})
123
if (MVN_EXECUTABLE)
124
ADD_CUSTOM_COMMAND(TARGET libsumojni POST_BUILD
125
COMMAND ${Python_EXECUTABLE} ${SUMO_TOOLS_DIR}/traci/rebuildConstants.py -o java/Constants.java -j org.eclipse.sumo.libsumo.Constants
126
COMMAND ${CMAKE_COMMAND} -E make_directory src/main/java/org/eclipse/sumo/libsumo
127
COMMAND ${CMAKE_COMMAND} -E copy_directory java src/main/java/org/eclipse/sumo/libsumo
128
COMMAND ${Python_EXECUTABLE} ${SUMO_TOOLS_DIR}/build_config/pom.py libsumo $<TARGET_FILE_DIR:libsumojni>
129
COMMAND ${MVN_COMMAND_PREFIX} ${MVN_EXECUTABLE} ${MVN_REPO} ${MVN_OPTS} --batch-mode package source:jar
130
)
131
else()
132
message(WARNING "Could not build libsumo jar, maven was not found.")
133
endif()
134
set_target_properties(libsumojni PROPERTIES FOLDER "libsumo")
135
install(TARGETS libsumojni DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
136
endif()
137
endif(ENABLE_JAVA_BINDINGS)
138
139
if (ENABLE_CS_BINDINGS)
140
set(CS_NAMESPACE Eclipse.Sumo.Libsumo)
141
set(CMAKE_SWIG_FLAGS -namespace ${CS_NAMESPACE})
142
if (FOX_FOUND)
143
set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DHAVE_LIBSUMOGUI)
144
endif()
145
set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CS_NAMESPACE})
146
set(SWIG_MODULE_libsumocs_EXTRA_DEPS ${LIBSUMO_HEADERS} libsumo_typemap.i)
147
SWIG_ADD_LIBRARY(libsumocs LANGUAGE CSharp SOURCES libsumo.i)
148
if ((GNU_COMPILER OR CLANG_COMPILER) AND NOT APPLE)
149
set_source_files_properties(${swig_generated_file_fullname} PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing")
150
endif()
151
target_link_libraries(libsumocs ${sumo_link_libraries})
152
ADD_CUSTOM_COMMAND(TARGET libsumocs POST_BUILD
153
COMMAND ${CMAKE_COMMAND} -E tar "cf" "$<TARGET_FILE_DIR:libsumocs>/libsumocs-sources.zip" --format=zip "${CS_NAMESPACE}"
154
)
155
set_target_properties(libsumocs PROPERTIES FOLDER "libsumo" PREFIX "")
156
install(TARGETS libsumocs DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
157
endif(ENABLE_CS_BINDINGS)
158
159
if (ENABLE_PYTHON_BINDINGS)
160
if (Python_Development.Module_FOUND)
161
set(CMAKE_SWIG_FLAGS -keyword) # is necessary for using keyword args
162
# other options which should be evaluated: -builtin, -modern, -extranative
163
if (FOX_FOUND)
164
set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DHAVE_LIBSUMOGUI)
165
endif()
166
set(SWIG_OUTFILE_DIR ${CMAKE_CURRENT_BINARY_DIR})
167
if (NOT ISOLATED_BUILD)
168
set(CMAKE_SWIG_OUTDIR ${CMAKE_SOURCE_DIR}/tools/libsumo)
169
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/tools/libsumo)
170
# set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/tools/libsumo)
171
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/tools/libsumo)
172
endif()
173
set(SWIG_MODULE_libsumo_EXTRA_DEPS ${LIBSUMO_HEADERS} libsumo_typemap.i)
174
if (CLANG_COMPILER)
175
set_property(SOURCE libsumo.i PROPERTY GENERATED_COMPILE_OPTIONS "-Wno-deprecated-declarations")
176
endif()
177
SWIG_ADD_LIBRARY(libsumo LANGUAGE python SOURCES libsumo.i)
178
add_dependencies(${SWIG_MODULE_libsumo_REAL_NAME} generate-version-h install_dll)
179
target_link_libraries(libsumo ${sumo_link_libraries} Python::Module)
180
if (NOT ${PYTHON_BUILD_MISSING})
181
# no isolated build here because we need to be able to do it offline (on open build service, launchpad etc.)
182
install(CODE "
183
execute_process(COMMAND ${Python_EXECUTABLE} tools/build_config/version.py --pep440 build_config/pyproject/libsumo_local.toml pyproject.toml
184
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
185
execute_process(COMMAND ${Python_EXECUTABLE} -m pip install --no-build-isolation --prefix=\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX} -f ${CMAKE_BINARY_DIR} --no-index .
186
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
187
" COMPONENT python_package EXCLUDE_FROM_ALL)
188
endif()
189
endif()
190
endif(ENABLE_PYTHON_BINDINGS)
191
192
endif(SWIG_FOUND)
193
194