diff --git a/CMakeLists.txt b/CMakeLists.txt index ee0576aed443b03724c4bd223bf800ae59b58b91..190edaec606ed889adba4d24bbe2ab4b2c69f2a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,72 +25,72 @@ set(JPSCORE_MAJOR_VERSION 0) set(JPSCORE_MINOR_VERSION 8) set(JPSCORE_PATCH_VERSION 3) set(JPSCORE_VERSION - ${JPSCORE_MAJOR_VERSION}.${JPSCORE_MINOR_VERSION}.${JPSCORE_PATCH_VERSION}) +${JPSCORE_MAJOR_VERSION}.${JPSCORE_MINOR_VERSION}.${JPSCORE_PATCH_VERSION}) message(STATUS "JPSCORE_VERSION: " ${JPSCORE_VERSION}) - +add_definitions("-DJPSCORE_VERSION=\"${JPSCORE_VERSION}\"") if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR - "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - set(warnings "-Wall -Wextra") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - set(warnings "/W4 /WX /EHsc") - elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") - message(STATUS "Compiling with Intel settings") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -w") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -w -tcheck") +"${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") +set(warnings "-Wall -Wextra") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") +set(warnings "/W4 /WX /EHsc") +elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") +message(STATUS "Compiling with Intel settings") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -w") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -w -tcheck") elseif () endif () set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${warnings}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${warnings}") if (NOT BUILD_TESTING) - set(BUILD_TESTING OFF) # test units & python tests are not generated. +set(BUILD_TESTING OFF) # test units & python tests are not generated. endif (NOT BUILD_TESTING) message(STATUS "BUILD_TESTING: " ${BUILD_TESTING}) if (NOT BUILD_CPPUNIT_TEST) - set(BUILD_CPPUNIT_TEST OFF) +set(BUILD_CPPUNIT_TEST OFF) endif (NOT BUILD_CPPUNIT_TEST) message(STATUS "BUILD_CPPUNIT_TEST: " ${BUILD_CPPUNIT_TEST}) if (NOT CMAKE_EXPORT_COMPILE_COMMANDS) - # To generate a compilation database "compilation_commands.json" for clang_check - set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +# To generate a compilation database "compilation_commands.json" for clang_check +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) endif (NOT CMAKE_EXPORT_COMPILE_COMMANDS) # Get number of processors. Mac is not supported if (NOT DEFINED PROCESSOR_COUNT) - # Unknown: - set(PROCESSOR_COUNT 0) - - # Linux: - set(cpuinfo_file "/proc/cpuinfo") - if (EXISTS "${cpuinfo_file}") - file(STRINGS "${cpuinfo_file}" procs REGEX "^processor.: [0-9]+$") - list(LENGTH procs PROCESSOR_COUNT) - endif (EXISTS "${cpuinfo_file}") - - # Windows: - if (WIN32) - set(PROCESSOR_COUNT "$ENV{NUMBER_OF_PROCESSORS}") - endif (WIN32) +# Unknown: +set(PROCESSOR_COUNT 0) + +# Linux: +set(cpuinfo_file "/proc/cpuinfo") +if (EXISTS "${cpuinfo_file}") +file(STRINGS "${cpuinfo_file}" procs REGEX "^processor.: [0-9]+$") +list(LENGTH procs PROCESSOR_COUNT) +endif (EXISTS "${cpuinfo_file}") + +# Windows: +if (WIN32) +set(PROCESSOR_COUNT "$ENV{NUMBER_OF_PROCESSORS}") +endif (WIN32) endif (NOT DEFINED PROCESSOR_COUNT) if (PROCESSOR_COUNT) - message( STATUS "PROCESSOR_COUNT: " ${PROCESSOR_COUNT}) - # set(CTEST_BUILD_FLAGS "-j${PROCESSOR_COUNT}") - message(STATUS "PROCESSOR_COUNT: 1") +message( STATUS "PROCESSOR_COUNT: " ${PROCESSOR_COUNT}) +# set(CTEST_BUILD_FLAGS "-j${PROCESSOR_COUNT}") +message(STATUS "PROCESSOR_COUNT: 1") - set(CTEST_BUILD_FLAGS "-j0") +set(CTEST_BUILD_FLAGS "-j0") endif (PROCESSOR_COUNT) if (NOT CMAKE_BUILD_TYPE) - # set (CMAKE_BUILD_TYPE Release) - set(CMAKE_BUILD_TYPE Debug) +# set (CMAKE_BUILD_TYPE Release) +set(CMAKE_BUILD_TYPE Debug) endif (NOT CMAKE_BUILD_TYPE) message(STATUS "CMAKE_BUILD_TYPE: " ${CMAKE_BUILD_TYPE}) if(NOT USE_DUAL_ABI) - set (USE_DUAL_ABI FALSE) +set (USE_DUAL_ABI FALSE) endif() #------------------ set important directories -------------------- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) @@ -106,19 +106,20 @@ message(STATUS "") message(STATUS "Platform: ") message(STATUS " Host: " ${CMAKE_HOST_SYSTEM_NAME} ${CMAKE_HOST_SYSTEM_VERSION} ${CMAKE_HOST_SYSTEM_PROCESSOR}) if (CMAKE_CROSSCOMPILING) - message(STATUS " Target: " ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_PROCESSOR}) +message(STATUS " Target: " ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_PROCESSOR}) endif () message(STATUS " CMake: " ${CMAKE_VERSION}) message(STATUS " CMake generator: " ${CMAKE_GENERATOR}) message(STATUS " CMake build tool: " ${CMAKE_BUILD_TOOL}) if (MSVC) - message(STATUS " MSVC: " ${MSVC_VERSION}) +message(STATUS " MSVC: " ${MSVC_VERSION}) +#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ZLIB_WINAPI) endif () if (CMAKE_GENERATOR MATCHES Xcode) - message(STATUS " Xcode: " ${XCODE_VERSION}) +message(STATUS " Xcode: " ${XCODE_VERSION}) endif () if (NOT CMAKE_GENERATOR MATCHES "Xcode|Visual Studio") - message(STATUS " Configuration: " ${CMAKE_BUILD_TYPE}) +message(STATUS " Configuration: " ${CMAKE_BUILD_TYPE}) endif () message(STATUS "") @@ -127,42 +128,88 @@ message(STATUS "") # message( STATUS "EXECUTABLE_OUTPUT_PATH: " ${EXECUTABLE_OUTPUT_PATH} ) # message( STATUS "CMAKE_VERBOSE_MAKEFILE: " ${CMAKE_VERBOSE_MAKEFILE} ) +find_package(Git REQUIRED) # no need for this msg. It comes from cmake.findgit() +find_program(GIT_SCM git DOC "Git version control") +mark_as_advanced(GIT_SCM) +find_file(GITDIR NAMES .git PATHS ${CMAKE_SOURCE_DIR} NO_DEFAULT_PATH) +if (GIT_SCM AND GITDIR) +# the commit's SHA1, and whether the building workspace was dirty or not +# describe --match=NeVeRmAtCh --always --tags --abbrev=40 --dirty +execute_process(COMMAND +"${GIT_EXECUTABLE}" --no-pager describe --tags --always --dirty +WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" +OUTPUT_VARIABLE GIT_SHA1 +ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + +# branch +execute_process( +COMMAND "${GIT_EXECUTABLE}" rev-parse --abbrev-ref HEAD +WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" +OUTPUT_VARIABLE GIT_BRANCH +OUTPUT_STRIP_TRAILING_WHITESPACE +) + +# the date of the commit +execute_process(COMMAND +"${GIT_EXECUTABLE}" log -1 --format=%ad --date=local +WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" +OUTPUT_VARIABLE GIT_DATE +ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + +# the subject of the commit +execute_process(COMMAND +"${GIT_EXECUTABLE}" log -1 --format=%s +WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" +OUTPUT_VARIABLE GIT_COMMIT_SUBJECT +ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + + + +add_definitions("-DGIT_COMMIT_HASH=\"${GIT_SHA1}\"") +add_definitions("-DGIT_COMMIT_DATE=\"${GIT_DATE}\"") +add_definitions("-DGIT_COMMIT_SUBJECT=\"${GIT_COMMIT_SUBJECT}\"") +add_definitions("-DGIT_BRANCH=\"${GIT_BRANCH}\"") +else() +message(STATUS "Not in a git repo") +endif() + + # add a target to generate API documentation with Doxygen find_package(Doxygen) if (DOXYGEN_FOUND) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) - add_custom_target(doc - ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - COMMENT "Generating API documentation with Doxygen" VERBATIM - ) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) +add_custom_target(doc +${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile +WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +COMMENT "Generating API documentation with Doxygen" VERBATIM +) endif (DOXYGEN_FOUND) #http://stackoverflow.com/questions/1487752/how-do-i-instruct-cmake-to-look-for-libraries-installed-by-macports if (APPLE) - # Detect if the "port" command is valid on this system; if so, return full path - execute_process(COMMAND which port RESULT_VARIABLE DETECT_MACPORTS OUTPUT_VARIABLE MACPORTS_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) - if (${DETECT_MACPORTS} EQUAL 0) - # "/opt/local/bin/port" doesn't have libs, so we get the parent directory - get_filename_component(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY) - # "/opt/local/bin" doesn't have libs, so we get the parent directory - get_filename_component(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY) - # "/opt/local" is where MacPorts lives, add `/lib` suffix and link - link_directories(${MACPORTS_PREFIX}/lib) - message(STATUS "Macports detected: ${MACPORTS_PREFIX}/lib") - # SET(CMAKE_SYSTEM_NAME Darwin) - # # Add MacPorts - # INCLUDE_DIRECTORIES(/opt/local/include) - - # LINK_DIRECTORIES(/opt/local/lib) - - else () - # Recommendation, also add a "brew --prefix" custom command to detect a homebrew build environment - execute_process(COMMAND brew --prefix RESULT_VARIABLE DETECT_BREW OUTPUT_VARIABLE BREW_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) - if (${DETECT_BREW} EQUAL 0) - link_directories(${BREW_PREFIX}/lib) - message(STATUS "Brew detected: ${BREW_PREFIX}") - endif () - endif () +# Detect if the "port" command is valid on this system; if so, return full path +execute_process(COMMAND which port RESULT_VARIABLE DETECT_MACPORTS OUTPUT_VARIABLE MACPORTS_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) +if (${DETECT_MACPORTS} EQUAL 0) +# "/opt/local/bin/port" doesn't have libs, so we get the parent directory +get_filename_component(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY) +# "/opt/local/bin" doesn't have libs, so we get the parent directory +get_filename_component(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY) +# "/opt/local" is where MacPorts lives, add `/lib` suffix and link +link_directories(${MACPORTS_PREFIX}/lib) +message(STATUS "Macports detected: ${MACPORTS_PREFIX}/lib") +# SET(CMAKE_SYSTEM_NAME Darwin) +# # Add MacPorts +# INCLUDE_DIRECTORIES(/opt/local/include) + +# LINK_DIRECTORIES(/opt/local/lib) + +else () +# Recommendation, also add a "brew --prefix" custom command to detect a homebrew build environment +execute_process(COMMAND brew --prefix RESULT_VARIABLE DETECT_BREW OUTPUT_VARIABLE BREW_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) +if (${DETECT_BREW} EQUAL 0) +link_directories(${BREW_PREFIX}/lib) +message(STATUS "Brew detected: ${BREW_PREFIX}") +endif () +endif () endif (APPLE) @@ -170,11 +217,11 @@ endif (APPLE) if (Boost_NO_SYSTEM_PATHS) - set(Boost_NO_SYSTEM_PATHS ON) - set(BOOST_INCLUDE_DIRS "${BOOST_ROOT}/include") - set(BOOST_LIBRARY_DIRS "${BOOST_ROOT}/stage/lib") - set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} ${BOOST_ROOT}) - set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${BOOST_LIBRARY_DIRS}) +set(Boost_NO_SYSTEM_PATHS ON) +set(BOOST_INCLUDE_DIRS "${BOOST_ROOT}/include") +set(BOOST_LIBRARY_DIRS "${BOOST_ROOT}/stage/lib") +set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} ${BOOST_ROOT}) +set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${BOOST_LIBRARY_DIRS}) endif (Boost_NO_SYSTEM_PATHS) # in case boost is a non-default location # SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/win32libs/boost") @@ -185,16 +232,16 @@ endif (Boost_NO_SYSTEM_PATHS) # find the correct OpenMP flag FIND_PACKAGE(OpenMP) if (OPENMP_FOUND) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") else (OPENMP_FOUND) - if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp") - # somehow find_package(openmp) does not work properly with clang - else (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - message(STATUS "Disabling OpenMP support") - endif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") +if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") +#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp") +# somehow find_package(openmp) does not work properly with clang +else (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") +message(STATUS "Disabling OpenMP support") +endif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") endif (OPENMP_FOUND) #statically link all gcc stuffs @@ -212,323 +259,323 @@ endif() # test all cpp-files in Utest if (BUILD_TESTING OR BUILD_CPPUNIT_TEST) - find_package(Boost COMPONENTS timer chrono system filesystem unit_test_framework REQUIRED) - IF (CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage") - IF (USE_DUAL_ABI) - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_USE_CXX11_ABI=0") - ENDIF(USE_DUAL_ABI) - set(CMAKE_EXE_LINKER_FLAGS "-fprofile-arcs -ftest-coverage") - set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake_modules/") - INCLUDE(CodeCoverage) - set(ENABLE_COVERAGE ON) - SETUP_TARGET_FOR_COVERAGE( - cov # Name for custom target. - ctest # Name of the test driver executable that runs the tests. - # NOTE! This should always have a ZERO as exit code - # otherwise the coverage generation will not complete. - coverage # Name of output directory. - ) - - endif (CMAKE_COMPILER_IS_GNUCXX) - file(GLOB_RECURSE test_files "${CMAKE_TEST_DIR}/*.cpp") - # file(GLOB test_py_files "${CMAKE_TEST_DIR}/*/runtest*.py") +find_package(Boost COMPONENTS timer chrono system filesystem unit_test_framework REQUIRED) +IF (CMAKE_COMPILER_IS_GNUCXX) +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage") +IF (USE_DUAL_ABI) +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_USE_CXX11_ABI=0") +ENDIF(USE_DUAL_ABI) +set(CMAKE_EXE_LINKER_FLAGS "-fprofile-arcs -ftest-coverage") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake_modules/") +INCLUDE(CodeCoverage) +set(ENABLE_COVERAGE ON) +SETUP_TARGET_FOR_COVERAGE( +cov # Name for custom target. +ctest # Name of the test driver executable that runs the tests. +# NOTE! This should always have a ZERO as exit code +# otherwise the coverage generation will not complete. +coverage # Name of output directory. +) + +endif (CMAKE_COMPILER_IS_GNUCXX) +file(GLOB_RECURSE test_files "${CMAKE_TEST_DIR}/*.cpp") +# file(GLOB test_py_files "${CMAKE_TEST_DIR}/*/runtest*.py") endif (BUILD_TESTING OR BUILD_CPPUNIT_TEST) if (BUILD_TESTING) - file(GLOB_RECURSE test_py_files "${CMAKE_TEST_DIR}/*runtest_*.py") +file(GLOB_RECURSE test_py_files "${CMAKE_TEST_DIR}/*runtest_*.py") endif (BUILD_TESTING) # add sources and headers set(source_files - Simulation.cpp - general/ArgumentParser.cpp - IO/progress_bar.cpp - tinyxml/tinystr.cpp - tinyxml/tinyxml.cpp - tinyxml/tinyxmlerror.cpp - tinyxml/tinyxmlparser.cpp - - geometry/Building.cpp - geometry/Line.cpp - geometry/Point.cpp - geometry/Transition.cpp - geometry/Hline.cpp - geometry/Obstacle.cpp - geometry/SubRoom.cpp - geometry/Crossing.cpp - geometry/NavLine.cpp - geometry/Room.cpp - geometry/Wall.cpp - geometry/Goal.cpp - - IO/GeoFileParser.cpp - IO/IniFileParser.cpp - IO/IODispatcher.cpp - IO/OutputHandler.cpp - IO/PedDistributionParser.cpp - IO/TraVisToClient.cpp - - math/ForceModel.cpp - math/Mathematics.cpp - math/ODESolver.cpp - math/GCFMModel.cpp - math/GompertzModel.cpp - math/GradientModel.cpp - math/VelocityModel.cpp - math/OperationalModel.cpp - - - mpi/LCGrid.cpp - - pedestrian/Ellipse.cpp - pedestrian/PedDistributor.cpp - pedestrian/Pedestrian.cpp - pedestrian/AgentsParameters.cpp - pedestrian/Knowledge.cpp - pedestrian/AgentsQueue.cpp - pedestrian/AgentsSource.cpp - pedestrian/Pedestrian.cpp - pedestrian/AgentsSourcesManager.cpp - pedestrian/StartDistribution.cpp - - - #voronoi/VoronoiDiagramGenerator.cpp - voronoi-boost/VoronoiPositionGenerator.cpp - - #floorfield - routing/ff_router/ffRouter.cpp - #routing/ff_router/LocalFloorfieldViaFM.cpp - routing/ff_router/FloorfieldViaFM.cpp - #routing/ff_router/FFKit.cpp - routing/ff_router/UnivFFviaFM.cpp - - #global_shortest - routing/global_shortest/AccessPoint.cpp - routing/global_shortest/GlobalRouter.cpp - routing/global_shortest/DTriangulation.cpp - - #general - routing/DirectionStrategy.cpp - routing/Router.cpp - routing/RoutingEngine.cpp - - - #quickest - routing/quickest/QuickestPathRouter.cpp - - #Smoke router - routing/smoke_router/SmokeRouter.cpp - routing/smoke_router/GraphNetwork.cpp - routing/smoke_router/NavigationGraph.cpp - routing/smoke_router/BrainStorage.cpp - routing/smoke_router/navigation_graph/GraphEdge.cpp - routing/smoke_router/navigation_graph/GraphVertex.cpp - routing/smoke_router/sensor/RoomToFloorSensor.cpp - routing/smoke_router/sensor/SensorManager.cpp - routing/smoke_router/sensor/AbstractSensor.cpp - routing/smoke_router/sensor/DiscoverDoorsSensor.cpp - routing/smoke_router/sensor/JamSensor.cpp - routing/smoke_router/sensor/LastDestinationsSensor.cpp - routing/smoke_router/sensor/locater.cpp - routing/smoke_router/cognitiveMap/associations.cpp - routing/smoke_router/cognitiveMap/connection.cpp - routing/smoke_router/cognitiveMap/cognitivemap.cpp - routing/smoke_router/cognitiveMap/landmark.cpp - routing/smoke_router/cognitiveMap/region.cpp - routing/smoke_router/cognitiveMap/youareherepointer.cpp - routing/smoke_router/cognitiveMap/cogmapoutputhandler.cpp - routing/smoke_router/cognitiveMap/landmarknetwork.cpp - routing/smoke_router/Brain.cpp - routing/smoke_router/cognitiveMap/internnavigationnetwork.cpp - visiLibity/source_code/visilibity.cpp - - poly2tri/common/shapes.cpp - poly2tri/sweep/sweep_context.cpp - poly2tri/sweep/advancing_front.cpp - poly2tri/sweep/sweep.cpp - poly2tri/sweep/cdt.cpp - events/EventManager.cpp - events/Event.cpp - - JPSfire/generic/FDSMesh.cpp - JPSfire/generic/Knot.cpp - JPSfire/generic/FDSMeshStorage.cpp - JPSfire/A_smoke_sensor/SmokeSensor.cpp - JPSfire/B_walking_speed/WalkingSpeed.cpp - JPSfire/C_toxicity_analysis/ToxicityAnalysis.cpp - JPSfire/C_toxicity_analysis/ToxicityOutputhandler.cpp - - math/KrauszModel.cpp) +Simulation.cpp +general/ArgumentParser.cpp +IO/progress_bar.cpp +tinyxml/tinystr.cpp +tinyxml/tinyxml.cpp +tinyxml/tinyxmlerror.cpp +tinyxml/tinyxmlparser.cpp + +geometry/Building.cpp +geometry/Line.cpp +geometry/Point.cpp +geometry/Transition.cpp +geometry/Hline.cpp +geometry/Obstacle.cpp +geometry/SubRoom.cpp +geometry/Crossing.cpp +geometry/NavLine.cpp +geometry/Room.cpp +geometry/Wall.cpp +geometry/Goal.cpp + +IO/GeoFileParser.cpp +IO/IniFileParser.cpp +IO/IODispatcher.cpp +IO/OutputHandler.cpp +IO/PedDistributionParser.cpp +IO/TraVisToClient.cpp + +math/ForceModel.cpp +math/Mathematics.cpp +math/ODESolver.cpp +math/GCFMModel.cpp +math/GompertzModel.cpp +math/GradientModel.cpp +math/VelocityModel.cpp +math/OperationalModel.cpp + + +mpi/LCGrid.cpp + +pedestrian/Ellipse.cpp +pedestrian/PedDistributor.cpp +pedestrian/Pedestrian.cpp +pedestrian/AgentsParameters.cpp +pedestrian/Knowledge.cpp +pedestrian/AgentsQueue.cpp +pedestrian/AgentsSource.cpp +pedestrian/Pedestrian.cpp +pedestrian/AgentsSourcesManager.cpp +pedestrian/StartDistribution.cpp + + +#voronoi/VoronoiDiagramGenerator.cpp +voronoi-boost/VoronoiPositionGenerator.cpp + +#floorfield +routing/ff_router/ffRouter.cpp +#routing/ff_router/LocalFloorfieldViaFM.cpp +routing/ff_router/FloorfieldViaFM.cpp +#routing/ff_router/FFKit.cpp +routing/ff_router/UnivFFviaFM.cpp + +#global_shortest +routing/global_shortest/AccessPoint.cpp +routing/global_shortest/GlobalRouter.cpp +routing/global_shortest/DTriangulation.cpp + +#general +routing/DirectionStrategy.cpp +routing/Router.cpp +routing/RoutingEngine.cpp + + +#quickest +routing/quickest/QuickestPathRouter.cpp + +#Smoke router +routing/smoke_router/SmokeRouter.cpp +routing/smoke_router/GraphNetwork.cpp +routing/smoke_router/NavigationGraph.cpp +routing/smoke_router/BrainStorage.cpp +routing/smoke_router/navigation_graph/GraphEdge.cpp +routing/smoke_router/navigation_graph/GraphVertex.cpp +routing/smoke_router/sensor/RoomToFloorSensor.cpp +routing/smoke_router/sensor/SensorManager.cpp +routing/smoke_router/sensor/AbstractSensor.cpp +routing/smoke_router/sensor/DiscoverDoorsSensor.cpp +routing/smoke_router/sensor/JamSensor.cpp +routing/smoke_router/sensor/LastDestinationsSensor.cpp +routing/smoke_router/sensor/locater.cpp +routing/smoke_router/cognitiveMap/associations.cpp +routing/smoke_router/cognitiveMap/connection.cpp +routing/smoke_router/cognitiveMap/cognitivemap.cpp +routing/smoke_router/cognitiveMap/landmark.cpp +routing/smoke_router/cognitiveMap/region.cpp +routing/smoke_router/cognitiveMap/youareherepointer.cpp +routing/smoke_router/cognitiveMap/cogmapoutputhandler.cpp +routing/smoke_router/cognitiveMap/landmarknetwork.cpp +routing/smoke_router/Brain.cpp +routing/smoke_router/cognitiveMap/internnavigationnetwork.cpp +visiLibity/source_code/visilibity.cpp + +poly2tri/common/shapes.cpp +poly2tri/sweep/sweep_context.cpp +poly2tri/sweep/advancing_front.cpp +poly2tri/sweep/sweep.cpp +poly2tri/sweep/cdt.cpp +events/EventManager.cpp +events/Event.cpp + +JPSfire/generic/FDSMesh.cpp +JPSfire/generic/Knot.cpp +JPSfire/generic/FDSMeshStorage.cpp +JPSfire/A_smoke_sensor/SmokeSensor.cpp +JPSfire/B_walking_speed/WalkingSpeed.cpp +JPSfire/C_toxicity_analysis/ToxicityAnalysis.cpp +JPSfire/C_toxicity_analysis/ToxicityOutputhandler.cpp + +math/KrauszModel.cpp) set(header_files - #floorfield - routing/ff_router/ffRouter.h - routing/ff_router/RectGrid.h - routing/ff_router/Trial.h - #routing/ff_router/LocalFloorfieldViaFM.h - routing/ff_router/FloorfieldViaFM.h - #routing/ff_router/FFKit.h - routing/ff_router/UnivFFviaFM.h - - #general - routing/DirectionStrategy.h - routing/DummyRouter.h - routing/GlobalRouter.h - routing/QuickestPathRouter.h - routing/SafestPathRouter.h - routing/Router.h - routing/RoutingEngine.h - - #global_shortest - routing/global_shortest/GlobalRouter.h - routing/global_shortest/AccessPoint.h - routing/global_shortest/DTriangulation.h - - #quickest - routing/quickest/QuickestPathRouter.h - - #Smoke router - routing/smoke_router/SmokeRouter.h - routing/smoke_router/GraphNetwork.h - routing/smoke_router/NavigationGraph.h - routing/smoke_router/BrainStorage.h - routing/smoke_router/navigation_graph/GraphEdge.h - routing/smoke_router/navigation_graph/GraphVertex.h - routing/smoke_router/sensor/AbstractSensor.h - routing/smoke_router/sensor/RoomToFloorSensor.h - routing/smoke_router/sensor/SensorManager.h - routing/smoke_router/sensor/DiscoverDoorsSensor.h - routing/smoke_router/sensor/JamSensor.h - routing/smoke_router/sensor/LastDestinationsSensor.h - routing/smoke_router/sensor/locater.h - routing/smoke_router/cognitiveMap/associations.h - routing/smoke_router/cognitiveMap/connection.cpp - routing/smoke_router/cognitiveMap/cognitivemap.h - routing/smoke_router/cognitiveMap/landmark.h - routing/smoke_router/cognitiveMap/region.h - routing/smoke_router/cognitiveMap/youareherepointer.h - routing/smoke_router/cognitiveMap/cogmapoutputhandler.h - routing/smoke_router/cognitiveMap/landmarknetwork.h - routing/smoke_router/Brain.h - routing/smoke_router/cognitiveMap/internnavigationnetwork.h - visiLibity/source_code/visilibity.hpp - - pedestrian/Pedestrian.h - pedestrian/PedDistributor.h - pedestrian/Ellipse.h - pedestrian/AgentsParameters.h - pedestrian/Knowledge.h - pedestrian/AgentsQueue.h - pedestrian/AgentsSource.h - pedestrian/Pedestrian.h - pedestrian/AgentsSourcesManager.h - pedestrian/StartDistribution.h - #voronoi/VoronoiDiagramGenerator.h - - voronoi-boost/VoronoiPositionGenerator.h - - mpi/LCGrid.h - - tinyxml/tinyxml.h - tinyxml/tinystr.h - - general/ArgumentParser.h - general/Configuration.h - general/Macros.h - general/randomnumbergenerator.h - - geometry/Crossing.h - geometry/NavLine.h - geometry/Room.h - geometry/Building.h - geometry/Wall.h - geometry/Line.h - geometry/Point.h - geometry/Transition.h - geometry/Hline.h - geometry/Obstacle.h - geometry/SubRoom.h - geometry/Goal.h - - IO/GeoFileParser.h - IO/IniFileParser.h - IO/IODispatcher.h - IO/OutputHandler.h - IO/PedDistributionParser.h - IO/TraVisToClient.h - - math/ForceModel.h - math/Mathematics.h - math/ODESolver.h - math/GCFMModel.h - math/GompertzModel.h - math/GradientModel.h - math/VelocityModel.h - math/OperationalModel.h - - - poly2tri/poly2tri.h - poly2tri/common/shapes.h - poly2tri/sweep/cdt.h - poly2tri/common/utils.h - poly2tri/sweep/sweep_context.h - poly2tri/sweep/advancing_front.h - poly2tri/sweep/sweep.h - events/EventManager.h - events/Event.h - - JPSfire/generic/FDSMesh.h - JPSfire/generic/Knot.h - JPSfire/generic/FDSMeshStorage.h - JPSfire/A_smoke_sensor/SmokeSensor.h - JPSfire/B_walking_speed/WalkingSpeed.h - JPSfire/C_toxicity_analysis/ToxicityAnalysis.h - JPSfire/C_toxicity_analysis/ToxicityOutputhandler.h - ) +#floorfield +routing/ff_router/ffRouter.h +routing/ff_router/RectGrid.h +routing/ff_router/Trial.h +#routing/ff_router/LocalFloorfieldViaFM.h +routing/ff_router/FloorfieldViaFM.h +#routing/ff_router/FFKit.h +routing/ff_router/UnivFFviaFM.h + +#general +routing/DirectionStrategy.h +routing/DummyRouter.h +routing/GlobalRouter.h +routing/QuickestPathRouter.h +routing/SafestPathRouter.h +routing/Router.h +routing/RoutingEngine.h + +#global_shortest +routing/global_shortest/GlobalRouter.h +routing/global_shortest/AccessPoint.h +routing/global_shortest/DTriangulation.h + +#quickest +routing/quickest/QuickestPathRouter.h + +#Smoke router +routing/smoke_router/SmokeRouter.h +routing/smoke_router/GraphNetwork.h +routing/smoke_router/NavigationGraph.h +routing/smoke_router/BrainStorage.h +routing/smoke_router/navigation_graph/GraphEdge.h +routing/smoke_router/navigation_graph/GraphVertex.h +routing/smoke_router/sensor/AbstractSensor.h +routing/smoke_router/sensor/RoomToFloorSensor.h +routing/smoke_router/sensor/SensorManager.h +routing/smoke_router/sensor/DiscoverDoorsSensor.h +routing/smoke_router/sensor/JamSensor.h +routing/smoke_router/sensor/LastDestinationsSensor.h +routing/smoke_router/sensor/locater.h +routing/smoke_router/cognitiveMap/associations.h +routing/smoke_router/cognitiveMap/connection.cpp +routing/smoke_router/cognitiveMap/cognitivemap.h +routing/smoke_router/cognitiveMap/landmark.h +routing/smoke_router/cognitiveMap/region.h +routing/smoke_router/cognitiveMap/youareherepointer.h +routing/smoke_router/cognitiveMap/cogmapoutputhandler.h +routing/smoke_router/cognitiveMap/landmarknetwork.h +routing/smoke_router/Brain.h +routing/smoke_router/cognitiveMap/internnavigationnetwork.h +visiLibity/source_code/visilibity.hpp + +pedestrian/Pedestrian.h +pedestrian/PedDistributor.h +pedestrian/Ellipse.h +pedestrian/AgentsParameters.h +pedestrian/Knowledge.h +pedestrian/AgentsQueue.h +pedestrian/AgentsSource.h +pedestrian/Pedestrian.h +pedestrian/AgentsSourcesManager.h +pedestrian/StartDistribution.h +#voronoi/VoronoiDiagramGenerator.h + +voronoi-boost/VoronoiPositionGenerator.h + +mpi/LCGrid.h + +tinyxml/tinyxml.h +tinyxml/tinystr.h + +general/ArgumentParser.h +general/Configuration.h +general/Macros.h +general/randomnumbergenerator.h + +geometry/Crossing.h +geometry/NavLine.h +geometry/Room.h +geometry/Building.h +geometry/Wall.h +geometry/Line.h +geometry/Point.h +geometry/Transition.h +geometry/Hline.h +geometry/Obstacle.h +geometry/SubRoom.h +geometry/Goal.h + +IO/GeoFileParser.h +IO/IniFileParser.h +IO/IODispatcher.h +IO/OutputHandler.h +IO/PedDistributionParser.h +IO/TraVisToClient.h + +math/ForceModel.h +math/Mathematics.h +math/ODESolver.h +math/GCFMModel.h +math/GompertzModel.h +math/GradientModel.h +math/VelocityModel.h +math/OperationalModel.h + + +poly2tri/poly2tri.h +poly2tri/common/shapes.h +poly2tri/sweep/cdt.h +poly2tri/common/utils.h +poly2tri/sweep/sweep_context.h +poly2tri/sweep/advancing_front.h +poly2tri/sweep/sweep.h +events/EventManager.h +events/Event.h + +JPSfire/generic/FDSMesh.h +JPSfire/generic/Knot.h +JPSfire/generic/FDSMeshStorage.h +JPSfire/A_smoke_sensor/SmokeSensor.h +JPSfire/B_walking_speed/WalkingSpeed.h +JPSfire/C_toxicity_analysis/ToxicityAnalysis.h +JPSfire/C_toxicity_analysis/ToxicityOutputhandler.h +) SET(AIROUTER_SRC - #AI router - routing/ai_router/AIRouter.cpp - routing/ai_router/BrainStorage.cpp - routing/ai_router/cognitiveMap/associations.cpp - routing/ai_router/cognitiveMap/connection.cpp - routing/ai_router/cognitiveMap/cognitivemap.cpp - routing/ai_router/cognitiveMap/landmark.cpp - routing/ai_router/cognitiveMap/region.cpp - routing/ai_router/cognitiveMap/landmarknetwork.cpp - routing/ai_router/cognitiveMap/internnavigationnetwork.cpp - routing/ai_router/perception/visualsystem.cpp - routing/ai_router/perception/visibleenvironment.cpp - routing/ai_router/perception/cgalgeometry.cpp - routing/ai_router/perception/sign.cpp - routing/ai_router/Cortex.cpp +#AI router +routing/ai_router/AIRouter.cpp +routing/ai_router/BrainStorage.cpp +routing/ai_router/cognitiveMap/associations.cpp +routing/ai_router/cognitiveMap/connection.cpp +routing/ai_router/cognitiveMap/cognitivemap.cpp +routing/ai_router/cognitiveMap/landmark.cpp +routing/ai_router/cognitiveMap/region.cpp +routing/ai_router/cognitiveMap/landmarknetwork.cpp +routing/ai_router/cognitiveMap/internnavigationnetwork.cpp +routing/ai_router/perception/visualsystem.cpp +routing/ai_router/perception/visibleenvironment.cpp +routing/ai_router/perception/cgalgeometry.cpp +routing/ai_router/perception/sign.cpp +routing/ai_router/Cortex.cpp ) SET(AIROUTER_HDR - #AI router - routing/ai_router/AIRouter.h - routing/ai_router/BrainStorage.h - routing/ai_router/cognitiveMap/associations.h - routing/ai_router/cognitiveMap/connection.cpp - routing/ai_router/cognitiveMap/cognitivemap.h - routing/ai_router/cognitiveMap/landmark.h - routing/ai_router/cognitiveMap/region.h - routing/ai_router/cognitiveMap/landmarknetwork.h - routing/ai_router/cognitiveMap/internnavigationnetwork.h - routing/ai_router/perception/visualsystem.h - routing/ai_router/perception/visibleenvironment.h - routing/ai_router/perception/cgalgeometry.h - routing/ai_router/perception/sign.h - routing/ai_router/Cortex.h +#AI router +routing/ai_router/AIRouter.h +routing/ai_router/BrainStorage.h +routing/ai_router/cognitiveMap/associations.h +routing/ai_router/cognitiveMap/connection.cpp +routing/ai_router/cognitiveMap/cognitivemap.h +routing/ai_router/cognitiveMap/landmark.h +routing/ai_router/cognitiveMap/region.h +routing/ai_router/cognitiveMap/landmarknetwork.h +routing/ai_router/cognitiveMap/internnavigationnetwork.h +routing/ai_router/perception/visualsystem.h +routing/ai_router/perception/visibleenvironment.h +routing/ai_router/perception/cgalgeometry.h +routing/ai_router/perception/sign.h +routing/ai_router/Cortex.h ) message(STATUS "AIROUTER: ${AIROUTER}") if(CGAL_FOUND AND AIROUTER) - SET(source_files ${source_files} ${AIROUTER_SRC}) - SET(header_files ${header_files} ${AIROUTER_HDR}) - message(STATUS "USE AI ROUTER") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DAIROUTER") +SET(source_files ${source_files} ${AIROUTER_SRC}) +SET(header_files ${header_files} ${AIROUTER_HDR}) +message(STATUS "USE AI ROUTER") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DAIROUTER") endif() add_library(core STATIC ${source_files}) @@ -549,48 +596,48 @@ target_link_libraries(cnpy ${ZLIB_LIBRARIES}) add_executable(jpscore main.cpp) if (Boost_FOUND) - message(STATUS "BOOST FOUND: " ${Boost_LIB_VERSION}) - message(STATUS "Boost_LIBRARY_DIRS: " ${Boost_LIBRARY_DIRS}) - message(STATUS "Boost_INCLUDE_DIR: " ${Boost_INCLUDE_DIR}) - message(STATUS "Boost_LIB_VERSION: " ${Boost_LIB_VERSION}) - message(STATUS "Boost_libraries: " ${Boost_LIBRARIES}) - link_directories(${Boost_LIBRARY_DIRS}) - - # suppress warnings in boost libraries with attribute SYSTEM - include_directories(SYSTEM ${Boost_INCLUDE_DIR}) - target_link_libraries(core ${Boost_LIBRARIES} cnpy) +message(STATUS "BOOST FOUND: " ${Boost_LIB_VERSION}) +message(STATUS "Boost_LIBRARY_DIRS: " ${Boost_LIBRARY_DIRS}) +message(STATUS "Boost_INCLUDE_DIR: " ${Boost_INCLUDE_DIR}) +message(STATUS "Boost_LIB_VERSION: " ${Boost_LIB_VERSION}) +message(STATUS "Boost_libraries: " ${Boost_LIBRARIES}) +link_directories(${Boost_LIBRARY_DIRS}) + +# suppress warnings in boost libraries with attribute SYSTEM +include_directories(SYSTEM ${Boost_INCLUDE_DIR}) +target_link_libraries(core ${Boost_LIBRARIES} cnpy) endif () if (GMP_FOUND) - message(STATUS "GMP FOUND: " ${GMP_FOUND}) - message(STATUS "GMP_LIBRARY: " ${GMP_LIBRARIES}) - message(STATUS "GMP_INCLUDE_DIR: " ${GMP_INCLUDE_DIR}) - include_directories(SYSTEM ${GMP_INCLUDE_DIR}) +message(STATUS "GMP FOUND: " ${GMP_FOUND}) +message(STATUS "GMP_LIBRARY: " ${GMP_LIBRARIES}) +message(STATUS "GMP_INCLUDE_DIR: " ${GMP_INCLUDE_DIR}) +include_directories(SYSTEM ${GMP_INCLUDE_DIR}) endif() if (MPFR_FOUND) - message(STATUS "MPFR FOUND: " ${MPFR_FOUND}) - message(STATUS "MPFR_LIBRARY: " ${MPFR_LIBRARIES}) - message(STATUS "MPFR_INCLUDE_DIR: " ${MPFR_INCLUDE_DIR}) - include_directories(SYSTEM ${MPFR_INCLUDE_DIR}) - #target_link_libraries(jpscore ${MPFR_LIBRARIES}) +message(STATUS "MPFR FOUND: " ${MPFR_FOUND}) +message(STATUS "MPFR_LIBRARY: " ${MPFR_LIBRARIES}) +message(STATUS "MPFR_INCLUDE_DIR: " ${MPFR_INCLUDE_DIR}) +include_directories(SYSTEM ${MPFR_INCLUDE_DIR}) +#target_link_libraries(jpscore ${MPFR_LIBRARIES}) endif() if (CGAL_FOUND) - message(STATUS "CGAL FOUND: " ${CGAL_FOUND}) - message(STATUS "CGAL_LIBRARY_DIRS: " ${CGAL_LIBRARIES_DIR}) - message(STATUS "CGAL_INCLUDE_DIRS: " ${CGAL_INCLUDE_DIRS}) - #message(STATUS "CGAL_LIB_VERSION: " ${CGAL_LIB_VERSION}) - message(STATUS "CGAL_libraries: " ${CGAL_LIBRARY}) - #link_directories(${CGAL_LIBRARIES_DIR}) - #link_directories(${) - include_directories(SYSTEM ${CGAL_INCLUDE_DIRS}) - #message(STATUS "CGAL_3rdparty" ${CGAL_3RD_PARTY_LIBRARIES}) - #target_link_libraries(jpscore ${CGAL_LIBRARIES}) +message(STATUS "CGAL FOUND: " ${CGAL_FOUND}) +message(STATUS "CGAL_LIBRARY_DIRS: " ${CGAL_LIBRARIES_DIR}) +message(STATUS "CGAL_INCLUDE_DIRS: " ${CGAL_INCLUDE_DIRS}) +#message(STATUS "CGAL_LIB_VERSION: " ${CGAL_LIB_VERSION}) +message(STATUS "CGAL_libraries: " ${CGAL_LIBRARY}) +#link_directories(${CGAL_LIBRARIES_DIR}) +#link_directories(${) +include_directories(SYSTEM ${CGAL_INCLUDE_DIRS}) +#message(STATUS "CGAL_3rdparty" ${CGAL_3RD_PARTY_LIBRARIES}) +#target_link_libraries(jpscore ${CGAL_LIBRARIES}) endif() @@ -598,7 +645,7 @@ endif() target_link_libraries(jpscore core) if (WIN32) - target_link_libraries(jpscore core wsock32) +target_link_libraries(jpscore core wsock32) endif (WIN32) target_link_libraries(jpscore ${GMP_LIBRARIES} ${MPFR_LIBRARIES} ${CGAL_LIBRARY} ${CGAL_3RD_PARTY_LIBRARIES}) @@ -658,121 +705,121 @@ target_link_libraries(jpscore ${GMP_LIBRARIES} ${MPFR_LIBRARIES} ${CGAL_LIBRARY} #---------------------------- compiler ------------------------------- # Initialize CXXFLAGS. if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${warning_flags}") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${warning_flags} -O0 -g -Wunused-variable -Wunused-parameter -Wunused-function -Wshadow -Wunused -DTRACE_LOGGING") - # set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${warning_flags}") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${warning_flags} -O0 -g -Wunused-variable -Wunused-parameter -Wunused-function -Wshadow -Wunused -DTRACE_LOGGING") +# set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG") endif () #-------------------- if (APPLE AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++") - SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -stdlib=libc++") - SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -stdlib=libc++") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") +SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++") +SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -stdlib=libc++") +SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -stdlib=libc++") endif (APPLE AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") if (NOT CMAKE_GENERATOR MATCHES "Xcode|Visual Studio") - include(CheckCXXCompilerFlag) - CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) - CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) - - if (COMPILER_SUPPORTS_CXX11) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - elseif (COMPILER_SUPPORTS_CXX0X) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") - else () - message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") - endif () +include(CheckCXXCompilerFlag) +CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) +CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) + +if (COMPILER_SUPPORTS_CXX11) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +elseif (COMPILER_SUPPORTS_CXX0X) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") +else () +message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") +endif () endif () if (MSVC) - message(STATUS "MSVC: " ${MSVC}) +message(STATUS "MSVC: " ${MSVC}) elseif (MSVC_IDE) - message(STATUS "MSVC_IDE: " ${MSVC_IDE}) +message(STATUS "MSVC_IDE: " ${MSVC_IDE}) elseif(MSVC60) - message(STATUS "MSVC60: " ${MSVC60}) +message(STATUS "MSVC60: " ${MSVC60}) elseif(MSVC71) - message(STATUS "MSVC71: " ${MSVC71}) +message(STATUS "MSVC71: " ${MSVC71}) elseif(MSVC80) - message(STATUS "MSVC80: " ${MSVC80}) +message(STATUS "MSVC80: " ${MSVC80}) elseif(MSVC90) - message(STATUS "MSVC90: " ${MSVC90}) +message(STATUS "MSVC90: " ${MSVC90}) elseif(MSVC10) - message(STATUS "MSVC10: " ${MSVC10}) +message(STATUS "MSVC10: " ${MSVC10}) elseif(MSVC12) - message(STATUS "MSVC12: " ${MSVC12}) +message(STATUS "MSVC12: " ${MSVC12}) elseif(MSVC13) - message(STATUS "MSVC13: " ${MSVC13}) +message(STATUS "MSVC13: " ${MSVC13}) endif() #--------------------- message(STATUS "C++ Compiler: " ${CMAKE_CXX_COMPILER}) if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - message(STATUS "Using Clang " ${CMAKE_CXX_COMPILER_VERSION}) +message(STATUS "Using Clang " ${CMAKE_CXX_COMPILER_VERSION}) endif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") if (CMAKE_COMPILER_IS_GNUCXX) - message(STATUS "Using g++ " ${CMAKE_CXX_COMPILER_VERSION}) +message(STATUS "Using g++ " ${CMAKE_CXX_COMPILER_VERSION}) endif (CMAKE_COMPILER_IS_GNUCXX) if (CMAKE_BUILD_TYPE MATCHES Debug) - set(CMAKE_CXX_LDFLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage") - message(STATUS "Debug flags: " ${CMAKE_CXX_FLAGS} " " ${CMAKE_CXX_FLAGS_DEBUG}) +set(CMAKE_CXX_LDFLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage") +message(STATUS "Debug flags: " ${CMAKE_CXX_FLAGS} " " ${CMAKE_CXX_FLAGS_DEBUG}) else (CMAKE_BUILD_TYPE MATCHES Debug) - message(STATUS "Release flags: " ${CMAKE_CXX_FLAGS} " , " ${CMAKE_CXX_FLAGS_RELEASE}) +message(STATUS "Release flags: " ${CMAKE_CXX_FLAGS} " , " ${CMAKE_CXX_FLAGS_RELEASE}) endif (CMAKE_BUILD_TYPE MATCHES Debug) # PGI ++ Flags if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "PGI") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --c++11 -Minform=inform") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --c++11 -Minform=inform") endif () # ----------------------------- cTest ------------------------------------------ if (BUILD_TESTING OR BUILD_CPPUNIT_TEST) - set(counter "0") - SET(BUILD_TEST_TIMEOUT 10800 CACHE STRING "Global timeout on all tests (seconds).") - SET(DART_TESTING_TIMEOUT "${BUILD_TEST_TIMEOUT}" CACHE STRING "" FORCE) - message(STATUS "Timeout: " ${BUILD_TEST_TIMEOUT} " s") - enable_testing() # adds another build target, which is test for Makefile generators - include(CTest) # adding Dart support - - # test if code compiles and runs default setting. Takes about 30 seconds - - # link_directories(${Boost_LIBRARY_DIRS}) - foreach (test_src ${test_files}) - MATH(EXPR counter "${counter}+1") - GET_FILENAME_COMPONENT(test ${test_src} NAME_WE) - message(STATUS "Add test " ${counter} " : " ${test}) - add_executable(${test} ${test_src}) - target_link_libraries(${test} core ${Boost_LIBRARIES}) - add_test(NAME ${test} COMMAND ${test}) - endforeach (test_src ${test_files}) +set(counter "0") +SET(BUILD_TEST_TIMEOUT 10800 CACHE STRING "Global timeout on all tests (seconds).") +SET(DART_TESTING_TIMEOUT "${BUILD_TEST_TIMEOUT}" CACHE STRING "" FORCE) +message(STATUS "Timeout: " ${BUILD_TEST_TIMEOUT} " s") +enable_testing() # adds another build target, which is test for Makefile generators +include(CTest) # adding Dart support + +# test if code compiles and runs default setting. Takes about 30 seconds + +# link_directories(${Boost_LIBRARY_DIRS}) +foreach (test_src ${test_files}) +MATH(EXPR counter "${counter}+1") +GET_FILENAME_COMPONENT(test ${test_src} NAME_WE) +message(STATUS "Add test " ${counter} " : " ${test}) +add_executable(${test} ${test_src}) +target_link_libraries(${test} core ${Boost_LIBRARIES}) +add_test(NAME ${test} COMMAND ${test}) +endforeach (test_src ${test_files}) endif (BUILD_TESTING OR BUILD_CPPUNIT_TEST) if (BUILD_TESTING) - # add_test (jpscore_compile ${CMAKE_CTEST_COMMAND} - # --build-and-test "${CMAKE_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}" #"${EXECUTABLE_OUTPUT_PATH}" #"${CMAKE_BINARY_DIR}" - # --build-generator ${CMAKE_GENERATOR} - # --build-makeprogram ${CMAKE_MAKE_PROGRAM} -j${PROCESSOR_COUNT} - # --build-two-config - # --build-exe-dir ${EXECUTABLE_OUTPUT_PATH} # todo wo soll der exe hin?: ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} - # --build-project JPScore - # --test-command jpscore --ini=${CMAKE_SOURCE_DIR}/inputfiles/Default/ini.xml - # ) - find_package(PythonInterp) - if (PYTHONINTERP_FOUND) - message(STATUS "Found Python: " ${PYTHON_EXECUTABLE}) - foreach (test_src ${test_py_files}) - MATH(EXPR counter "${counter}+1") - GET_FILENAME_COMPONENT(test ${test_src} NAME_WE) - message(STATUS "Add py test " ${counter} " : " ${test}) - # message (STATUS "Add python test: " ${test} " | test_src: " ${PYTHON_EXECUTABLE} " " ${test_src}) - add_test(NAME ${test} COMMAND ${PYTHON_EXECUTABLE} ${test_src}) - endforeach (test_src ${test_py_files}) - # set (test_parameters "${CMAKE_SOURCE_DIR}") - # add_test(NAME flow COMMAND "${CMAKE_TEST_DIR}/testflow.py" "${test_parameters}") - endif (PYTHONINTERP_FOUND) +# add_test (jpscore_compile ${CMAKE_CTEST_COMMAND} +# --build-and-test "${CMAKE_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}" #"${EXECUTABLE_OUTPUT_PATH}" #"${CMAKE_BINARY_DIR}" +# --build-generator ${CMAKE_GENERATOR} +# --build-makeprogram ${CMAKE_MAKE_PROGRAM} -j${PROCESSOR_COUNT} +# --build-two-config +# --build-exe-dir ${EXECUTABLE_OUTPUT_PATH} # todo wo soll der exe hin?: ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} +# --build-project JPScore +# --test-command jpscore --ini=${CMAKE_SOURCE_DIR}/inputfiles/Default/ini.xml +# ) +find_package(PythonInterp) +if (PYTHONINTERP_FOUND) +message(STATUS "Found Python: " ${PYTHON_EXECUTABLE}) +foreach (test_src ${test_py_files}) +MATH(EXPR counter "${counter}+1") +GET_FILENAME_COMPONENT(test ${test_src} NAME_WE) +message(STATUS "Add py test " ${counter} " : " ${test}) +# message (STATUS "Add python test: " ${test} " | test_src: " ${PYTHON_EXECUTABLE} " " ${test_src}) +add_test(NAME ${test} COMMAND ${PYTHON_EXECUTABLE} ${test_src}) +endforeach (test_src ${test_py_files}) +# set (test_parameters "${CMAKE_SOURCE_DIR}") +# add_test(NAME flow COMMAND "${CMAKE_TEST_DIR}/testflow.py" "${test_parameters}") +endif (PYTHONINTERP_FOUND) endif (BUILD_TESTING) @@ -780,25 +827,25 @@ install(TARGETS jpscore DESTINATION bin) # ------------- CPACK ------------------------------ IF(CMAKE_SYSTEM_NAME STREQUAL Linux) - SET(CPACK_GENERATOR "DEB") - - SET(CPACK_PACKAGE_DESCRIPTION "simulation core of JuPedSim") - SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The simulation core of JuPedSim, a framework for simulation and analysis of pedestrian dynamics") - #SET(CPACK_PACKAGE_VENDOR "nowardev") - SET(CPACK_PACKAGE_CONTACT "m.chraibi@fz-juelich.de") - SET(CPACK_PACKAGE_VERSION_MAJOR "${JPSCORE_MAJOR_VERSION}") - SET(CPACK_PACKAGE_VERSION_MINOR "${JPSCORE_MINOR_VERSION}") - SET(CPACK_PACKAGE_VERSION_PATCH "${JPSCORE_PATCH_VERSION}") - SET(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${JPSCORE_VERSION}") - SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${JPSCORE_VERSION}") - #SET(CPACK_DEBIAN_PACKAGE_DEPENDS " Boost (>= 1.59) ") - SET(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - SET( CPACK_DEBIAN_PACKAGE_HOMEPAGE "http://jupedsim.org") - SET(CPACK_DEBIAN_PACKAGE_SUGGESTS, "jpsvis, jpsreport, jpseditor") - SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") - SET(CPACK_DEBIAN_PACKAGE_SECTION "science") - SET(CPACK_DEBIAN_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR}) - - - INCLUDE(CPack) +SET(CPACK_GENERATOR "DEB") + +SET(CPACK_PACKAGE_DESCRIPTION "simulation core of JuPedSim") +SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The simulation core of JuPedSim, a framework for simulation and analysis of pedestrian dynamics") +#SET(CPACK_PACKAGE_VENDOR "nowardev") +SET(CPACK_PACKAGE_CONTACT "m.chraibi@fz-juelich.de") +SET(CPACK_PACKAGE_VERSION_MAJOR "${JPSCORE_MAJOR_VERSION}") +SET(CPACK_PACKAGE_VERSION_MINOR "${JPSCORE_MINOR_VERSION}") +SET(CPACK_PACKAGE_VERSION_PATCH "${JPSCORE_PATCH_VERSION}") +SET(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${JPSCORE_VERSION}") +SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${JPSCORE_VERSION}") +#SET(CPACK_DEBIAN_PACKAGE_DEPENDS " Boost (>= 1.59) ") +SET(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) +SET( CPACK_DEBIAN_PACKAGE_HOMEPAGE "http://jupedsim.org") +SET(CPACK_DEBIAN_PACKAGE_SUGGESTS, "jpsvis, jpsreport, jpseditor") +SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") +SET(CPACK_DEBIAN_PACKAGE_SECTION "science") +SET(CPACK_DEBIAN_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR}) + + +INCLUDE(CPack) ENDIF(CMAKE_SYSTEM_NAME STREQUAL Linux) diff --git a/IO/IniFileParser.cpp b/IO/IniFileParser.cpp index b99b3cec38bbbd663fd3ca17cac156d3d728637d..d50c854f1e3c8b4e6421349265e6eb81a7ed6440 100644 --- a/IO/IniFileParser.cpp +++ b/IO/IniFileParser.cpp @@ -45,6 +45,41 @@ #include "../routing/ai_router/AIRouter.h" #include "../routing/ff_router/ffRouter.h" +/* https://stackoverflow.com/questions/38530981/output-compiler-version-in-a-c-program#38531037 */ +std::string ver_string(int a, int b, int c) { + std::ostringstream ss; + ss << a << '.' << b << '.' << c; + return ss.str(); +} +//https://sourceforge.net/p/predef/wiki/Compilers/ +std::string true_cxx = +#ifdef __clang__ + "clang++"; +#elif defined(__GNU__) +"g++"; +#elif defined(__MINGW32__) + "MinGW"; +#elif defined(_MSC_VER) + "Visual Studio"; +#else +"Compiler not identified"; +#endif + + +std::string true_cxx_ver = +#ifdef __clang__ + ver_string(__clang_major__, __clang_minor__, __clang_patchlevel__); +#elif defined(__GNU__) + ver_string(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__); +#elif defined(__MINGW32__) +ver_string(__MINGW32__, __MINGW32_MAJOR_VERSION, __MINGW32_MINOR_VERSION); +#elif defined( _MSC_VER) + ver_string(_MSC_VER, _MSC_FULL_VER,_MSC_BUILD); +#else +""; +#endif + + IniFileParser::IniFileParser(Configuration* config) { _config = config; @@ -97,6 +132,25 @@ bool IniFileParser::Parse(std::string iniFile) Log->Write("ERROR:\t Wrong header version. Only version greater than %s is supported.", JPS_OLD_VERSION); return false; } + + //logfile + if (xMainNode->FirstChild("logfile")) { + _config->SetErrorLogFile( + _config->GetProjectRootDir()+xMainNode->FirstChild("logfile")->FirstChild()->Value()); + _config->SetLog(2); + Log->Write("INFO:\tlogfile <%s>", _config->GetErrorLogFile().c_str()); + } + + + Log->Write("----\nJuPedSim - JPScore\n"); + Log->Write("Current date : %s %s", __DATE__, __TIME__); + Log->Write("Version : %s", JPSCORE_VERSION); + Log->Write("Compiler : %s (%s)", true_cxx.c_str(), true_cxx_ver.c_str()); + Log->Write("Commit hash : %s", GIT_COMMIT_HASH); + Log->Write("Commit date : %s", GIT_COMMIT_DATE); + Log->Write("Branch : %s\n----\n", GIT_BRANCH); + + //seed if (xMainNode->FirstChild("seed")) { TiXmlNode* seedNode = xMainNode->FirstChild("seed")->FirstChild(); @@ -149,13 +203,6 @@ bool IniFileParser::Parse(std::string iniFile) _config->SetMaxOpenMPThreads(omp_get_max_threads()); Log->Write("INFO:\tUsing num_threads <%d> threads (%d available)", _config->GetMaxOpenMPThreads(), max_threads); - //logfile - if (xMainNode->FirstChild("logfile")) { - _config->SetErrorLogFile( - _config->GetProjectRootDir()+xMainNode->FirstChild("logfile")->FirstChild()->Value()); - _config->SetLog(2); - Log->Write("INFO:\tlogfile <%s>", _config->GetErrorLogFile().c_str()); - } //display statistics if (xMainNode->FirstChild("show_statistics")) { std::string value = xMainNode->FirstChild("show_statistics")->FirstChild()->Value(); diff --git a/Simulation.cpp b/Simulation.cpp index 14f85dbf01ca70d33ab5bfeda83a8fe843601ce3..471fb7ef462b82abc4a0701aad0106ea53f3b4c1 100644 --- a/Simulation.cpp +++ b/Simulation.cpp @@ -95,7 +95,7 @@ bool Simulation::InitArgs() } case 2: { char name[CLENGTH] = ""; - sprintf(name, "%s.P0.dat", _config->GetErrorLogFile().c_str()); + sprintf(name, "%s.txt", _config->GetErrorLogFile().c_str()); if (Log) delete Log; Log = new FileHandler(name); @@ -346,7 +346,7 @@ void Simulation::UpdateRoutesAndLocations() //exit(EXIT_FAILURE); #pragma omp critical(Simulation_Update_pedsToRemove) { - pedsToRemove.push_back(ped); + pedsToRemove.insert(ped); Log->incrementDeletedAgents(); } } diff --git a/general/ArgumentParser.cpp b/general/ArgumentParser.cpp index fb1ae9a0e4d232c05ec57eccb3f062089b602f48..e6838806cfe7d8c5f0dfb742587c348512823dd7 100644 --- a/general/ArgumentParser.cpp +++ b/general/ArgumentParser.cpp @@ -49,14 +49,15 @@ using namespace std; + + + void ArgumentParser::Usage(const std::string file) { - fprintf(stderr, "\n\nYou are actually using JuPedsim version %s \n\n", JPS_VERSION); fprintf(stderr, "Usages: \n"); fprintf(stderr, " %s <path to file> start the simulation with the specified file.\n", file.c_str()); fprintf(stderr, " %s search and use the file ini.xml in the current directory.\n", file.c_str()); - fprintf(stderr, " %s -v/--version display the current version.\n", file.c_str()); fprintf(stderr, " %s -h/--help display this text.\n", file.c_str()); #ifdef _JPS_AS_A_SERVICE fprintf(stderr, " %s --as-a-service -p <port nr> runs jps as a service at port <port nr>.\n", file.c_str()); @@ -77,6 +78,15 @@ bool ArgumentParser::ParseArgs(int argc, char** argv) if (argc==1) { Log->Write( "INFO: \tTrying to load the default configuration from the file <ini.xml>"); + // first logs will go to stdout + Log->Write("----\nJuPedSim - JPScore\n"); + Log->Write("Current date : %s %s", __DATE__, __TIME__); + Log->Write("Version : %s", JPSCORE_VERSION); + // Log->Write("Compiler : %s (%s)", true_cxx.c_str(), true_cxx_ver.c_str()); + Log->Write("Commit hash : %s", GIT_COMMIT_HASH); + Log->Write("Commit date : %s", GIT_COMMIT_DATE); + Log->Write("Branch : %s\n----\n", GIT_BRANCH); + IniFileParser* p = new IniFileParser(_config); if (!p->Parse("ini.xml")) { Usage(argv[0]); @@ -90,10 +100,6 @@ bool ArgumentParser::ParseArgs(int argc, char** argv) Usage(argv[0]); return false; } - else if (argument=="-v" || argument=="--version") { - fprintf(stderr, "You are actually using JuPedsim/jpscore version %s \n\n", JPS_VERSION); - return false; - } // other special case where a single configuration file is submitted //check if inifile options are given @@ -161,4 +167,3 @@ bool ArgumentParser::ParseArgs(int argc, char** argv) Usage(argv[0]); return false; } -