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