Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/libtraci/CMakeLists.txt
193674 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 COMPONENT runtime
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
SWIG_ADD_LIBRARY(libtracijni LANGUAGE java SOURCES libtraci.i)
80
if ((GNU_COMPILER OR CLANG_COMPILER) AND NOT APPLE)
81
set_source_files_properties(${swig_generated_file_fullname} PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing")
82
target_link_libraries(libtracijni -Wl,--whole-archive libtracistatic ${libtcpip} -Wl,--no-whole-archive)
83
else()
84
target_link_libraries(libtracijni libtracistatic ${libtcpip})
85
endif()
86
if (MVN_EXECUTABLE)
87
ADD_CUSTOM_COMMAND(TARGET libtracijni POST_BUILD
88
COMMAND ${Python_EXECUTABLE} ${SUMO_TOOLS_DIR}/traci/rebuildConstants.py -o java/Constants.java -j org.eclipse.sumo.libtraci.Constants
89
COMMAND ${CMAKE_COMMAND} -E make_directory src/main/java/org/eclipse/sumo/libtraci
90
COMMAND ${CMAKE_COMMAND} -E copy_directory java src/main/java/org/eclipse/sumo/libtraci
91
COMMAND ${Python_EXECUTABLE} ${SUMO_TOOLS_DIR}/build_config/pom.py libtraci $<TARGET_FILE_DIR:libtracijni>
92
COMMAND ${MVN_COMMAND_PREFIX} ${MVN_EXECUTABLE} ${MVN_REPO} ${MVN_OPTS} --batch-mode package source:jar
93
)
94
# this dependency avoids concurrent maven access to the repo
95
add_dependencies(libtracijni libsumojni)
96
else()
97
message(WARNING "Could not build libtraci jar, maven was not found.")
98
endif()
99
set_target_properties(libtracijni PROPERTIES FOLDER "libtraci")
100
install(TARGETS libtracijni DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
101
endif()
102
endif()
103
104
if (ENABLE_CS_BINDINGS)
105
set(CS_NAMESPACE Eclipse.Sumo.Libtraci)
106
set(CMAKE_SWIG_FLAGS -namespace ${CS_NAMESPACE})
107
set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CS_NAMESPACE})
108
set(SWIG_MODULE_libtracics_EXTRA_DEPS ${libtraci_HEADERS} ../libsumo/libsumo_typemap.i)
109
SWIG_ADD_LIBRARY(libtracics LANGUAGE CSharp SOURCES libtraci.i)
110
if ((GNU_COMPILER OR CLANG_COMPILER) AND NOT APPLE)
111
set_source_files_properties(${swig_generated_file_fullname} PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing")
112
target_link_libraries(libtracics -Wl,--whole-archive libtracistatic ${libtcpip} -Wl,--no-whole-archive)
113
else()
114
target_link_libraries(libtracics libtracistatic ${libtcpip})
115
endif()
116
ADD_CUSTOM_COMMAND(TARGET libtracics POST_BUILD
117
COMMAND ${CMAKE_COMMAND} -E tar "cf" "$<TARGET_FILE_DIR:libtracics>/libtracics-sources.zip" --format=zip "${CS_NAMESPACE}"
118
)
119
set_target_properties(libtracics PROPERTIES FOLDER "libtraci" PREFIX "")
120
install(TARGETS libtracics DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
121
endif()
122
123
if (ENABLE_PYTHON_BINDINGS)
124
if (Python_Development.Module_FOUND)
125
set(CMAKE_SWIG_FLAGS "-keyword") # is necessary for using keyword args
126
# other options which should be evaluated: -builtin, -modern, -extranative
127
set(SWIG_OUTFILE_DIR ${CMAKE_CURRENT_BINARY_DIR})
128
if (NOT ISOLATED_BUILD)
129
set(CMAKE_SWIG_OUTDIR ${CMAKE_SOURCE_DIR}/tools/libtraci)
130
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/tools/libtraci)
131
# set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/tools/libtraci)
132
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/tools/libtraci)
133
endif()
134
set(SWIG_MODULE_libtraci_EXTRA_DEPS ${libtraci_HEADERS} ../libsumo/libsumo_typemap.i)
135
if (CLANG_COMPILER)
136
set_property(SOURCE libtraci.i PROPERTY GENERATED_COMPILE_OPTIONS "-Wno-deprecated-declarations")
137
endif()
138
SWIG_ADD_LIBRARY(libtraci LANGUAGE python SOURCES libtraci.i)
139
target_link_libraries(libtraci libtracistatic ${libtcpip} Python::Module)
140
endif()
141
endif(ENABLE_PYTHON_BINDINGS)
142
143
endif()
144
145