set(libtracistatic_STAT_SRCS
Connection.cpp
Connection.h
Domain.h
Edge.cpp
GUI.cpp
InductionLoop.cpp
Junction.cpp
Lane.cpp
LaneArea.cpp
MultiEntryExit.cpp
Person.cpp
POI.cpp
Polygon.cpp
Route.cpp
Calibrator.cpp
BusStop.cpp
ParkingArea.cpp
ChargingStation.cpp
RouteProbe.cpp
Rerouter.cpp
VariableSpeedSign.cpp
MeanData.cpp
OverheadWire.cpp
Simulation.cpp
TrafficLight.cpp
Vehicle.cpp
VehicleType.cpp
)
if (NOT ISOLATED_BUILD)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/bin)
endif()
add_library(libtracistatic STATIC ${libtracistatic_STAT_SRCS})
add_dependencies(libtracistatic generate-version-h install_dll)
set_target_properties(libtracistatic PROPERTIES FOLDER "libtraci" PREFIX ""
OUTPUT_NAME libtracistatic${BINARY_SUFFIX}
OUTPUT_NAME_DEBUG libtracistatic${BINARY_SUFFIX}D)
if (WIN32)
set(libtcpip foreign_tcpip ws2_32)
else()
set(libtcpip foreign_tcpip)
endif()
add_library(libtracicpp SHARED ${libtracistatic_STAT_SRCS})
set_target_properties(libtracicpp PROPERTIES FOLDER "libtraci" PREFIX ""
OUTPUT_NAME libtracicpp${BINARY_SUFFIX}
OUTPUT_NAME_DEBUG libtracicpp${BINARY_SUFFIX}D)
target_include_directories(libtracicpp PUBLIC $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src>)
install(TARGETS libtracicpp EXPORT SUMOConfig
DESTINATION bin COMPONENT runtime
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
export(TARGETS libtracicpp NAMESPACE SUMO:: APPEND FILE "${CMAKE_BINARY_DIR}/SUMOConfig.cmake")
if ((GNU_COMPILER OR CLANG_COMPILER) AND NOT APPLE)
target_link_libraries(libtracicpp PRIVATE -Wl,--whole-archive ${libtcpip} -Wl,--no-whole-archive)
else ()
target_link_libraries(libtracicpp PRIVATE ${libtcpip})
endif()
if (SWIG_FOUND)
include(${SWIG_USE_FILE})
set_source_files_properties(libtraci.i PROPERTIES CPLUSPLUS ON)
file(GLOB libtraci_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/../libsumo/*.h")
if (ENABLE_JAVA_BINDINGS)
find_package(Java)
find_package(JNI)
if(JAVA_FOUND AND JNI_FOUND)
include(UseJava)
include_directories(${JNI_INCLUDE_DIRS})
set(CMAKE_SWIG_FLAGS -package org.eclipse.sumo.libtraci)
set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/java)
set(SWIG_MODULE_libtracijni_EXTRA_DEPS ${libtraci_HEADERS} ../libsumo/libsumo_typemap.i)
SWIG_ADD_LIBRARY(libtracijni LANGUAGE java SOURCES libtraci.i)
if ((GNU_COMPILER OR CLANG_COMPILER) AND NOT APPLE)
set_source_files_properties(${swig_generated_file_fullname} PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing")
target_link_libraries(libtracijni -Wl,--whole-archive libtracistatic ${libtcpip} -Wl,--no-whole-archive)
else()
target_link_libraries(libtracijni libtracistatic ${libtcpip})
endif()
if (MVN_EXECUTABLE)
ADD_CUSTOM_COMMAND(TARGET libtracijni POST_BUILD
COMMAND ${Python_EXECUTABLE} ${SUMO_TOOLS_DIR}/traci/rebuildConstants.py -o java/Constants.java -j org.eclipse.sumo.libtraci.Constants
COMMAND ${CMAKE_COMMAND} -E make_directory src/main/java/org/eclipse/sumo/libtraci
COMMAND ${CMAKE_COMMAND} -E copy_directory java src/main/java/org/eclipse/sumo/libtraci
COMMAND ${Python_EXECUTABLE} ${SUMO_TOOLS_DIR}/build_config/pom.py libtraci $<TARGET_FILE_DIR:libtracijni>
COMMAND ${MVN_COMMAND_PREFIX} ${MVN_EXECUTABLE} ${MVN_REPO} ${MVN_OPTS} --batch-mode package source:jar
)
# this dependency avoids concurrent maven access to the repo
add_dependencies(libtracijni libsumojni)
else()
message(WARNING "Could not build libtraci jar, maven was not found.")
endif()
set_target_properties(libtracijni PROPERTIES FOLDER "libtraci")
install(TARGETS libtracijni DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
endif()
if (ENABLE_CS_BINDINGS)
set(CS_NAMESPACE Eclipse.Sumo.Libtraci)
set(CMAKE_SWIG_FLAGS -namespace ${CS_NAMESPACE})
set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CS_NAMESPACE})
set(SWIG_MODULE_libtracics_EXTRA_DEPS ${libtraci_HEADERS} ../libsumo/libsumo_typemap.i)
SWIG_ADD_LIBRARY(libtracics LANGUAGE CSharp SOURCES libtraci.i)
if ((GNU_COMPILER OR CLANG_COMPILER) AND NOT APPLE)
set_source_files_properties(${swig_generated_file_fullname} PROPERTIES COMPILE_FLAGS "-Wno-strict-aliasing")
target_link_libraries(libtracics -Wl,--whole-archive libtracistatic ${libtcpip} -Wl,--no-whole-archive)
else()
target_link_libraries(libtracics libtracistatic ${libtcpip})
endif()
ADD_CUSTOM_COMMAND(TARGET libtracics POST_BUILD
COMMAND ${CMAKE_COMMAND} -E tar "cf" "$<TARGET_FILE_DIR:libtracics>/libtracics-sources.zip" --format=zip "${CS_NAMESPACE}"
)
set_target_properties(libtracics PROPERTIES FOLDER "libtraci" PREFIX "")
install(TARGETS libtracics DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
if (ENABLE_PYTHON_BINDINGS)
if (Python_Development.Module_FOUND)
set(CMAKE_SWIG_FLAGS "-keyword") # is necessary for using keyword args
# other options which should be evaluated: -builtin, -modern, -extranative
set(SWIG_OUTFILE_DIR ${CMAKE_CURRENT_BINARY_DIR})
if (NOT ISOLATED_BUILD)
set(CMAKE_SWIG_OUTDIR ${CMAKE_SOURCE_DIR}/tools/libtraci)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/tools/libtraci)
# set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/tools/libtraci)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/tools/libtraci)
endif()
set(SWIG_MODULE_libtraci_EXTRA_DEPS ${libtraci_HEADERS} ../libsumo/libsumo_typemap.i)
if (CLANG_COMPILER)
set_property(SOURCE libtraci.i PROPERTY GENERATED_COMPILE_OPTIONS "-Wno-deprecated-declarations")
endif()
SWIG_ADD_LIBRARY(libtraci LANGUAGE python SOURCES libtraci.i)
target_link_libraries(libtraci libtracistatic ${libtcpip} Python::Module)
endif()
endif(ENABLE_PYTHON_BINDINGS)
endif()