2023-10-17 14:42:28 +02:00
cmake_minimum_required (VERSION 3.1)
set(CMAKE_CXX_STANDARD 11)
2018-06-09 17:14:08 +02:00
project (pfaedle)
2019-04-01 21:56:52 +02:00
if (CMAKE_BUILD_TYPE)
2023-10-10 13:10:34 +02:00
string(SUBSTRING ${CMAKE_BUILD_TYPE} 0 1 FIRST_CHAR)
string(TOUPPER ${FIRST_CHAR} FIRST_CHAR)
string(REGEX REPLACE "^.(.*)" "${FIRST_CHAR}\\1" CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}")
2019-04-01 21:56:52 +02:00
endif()
2018-06-09 17:14:08 +02:00
enable_testing()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
2023-10-10 13:10:34 +02:00
set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}")
2018-06-09 17:14:08 +02:00
# set compiler flags, see http://stackoverflow.com/questions/7724569/debug-vs-release-in-cmake
2023-12-29 12:01:59 +01:00
set(CMAKE_CXX_FLAGS "-Ofast -fsigned-char -fno-signed-zeros -fno-trapping-math -Wall -Wno-format-extra-args -Wextra -Wformat-nonliteral -Wformat-security -Wformat=2 -Wextra -Wno-implicit-fallthrough -pedantic -Wno-keyword-macro")
2022-01-03 22:27:59 +01:00
set(CMAKE_CXX_FLAGS_SANITIZE "-Og -g -fsanitize=address -fsanitize=leak -fsanitize=undefined -DLOGLEVEL=3 -DPFAEDLE_DBG=1")
set(CMAKE_CXX_FLAGS_PROFILE "-g -pg -DLOGLEVEL=3 -DPFAEDLE_DBG=1")
2018-07-24 19:33:18 +02:00
set(CMAKE_CXX_FLAGS_DEBUG "-Og -g -DLOGLEVEL=3 -DPFAEDLE_DBG=1")
2018-06-09 17:14:08 +02:00
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS} -DLOGLEVEL=2")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -DLOGLEVEL=2")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} -g -DLOGLEVEL=3")
# export compile commands to tools like clang
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
2018-08-10 16:42:38 +02:00
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPFAEDLE_PRECISION=${PFAEDLE_PRECISION}")
2022-10-12 12:08:52 +02:00
find_package(LibZip)
2023-08-23 13:46:23 +02:00
find_package(ZLIB)
2023-08-24 17:29:01 +02:00
find_package(BZip2)
2022-10-12 12:08:52 +02:00
if (LIBZIP_FOUND)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DLIBZIP_FOUND=1")
endif()
2023-08-23 13:46:23 +02:00
if (ZLIB_FOUND)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZLIB_FOUND=1")
else ()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPFXML_NO_ZLIB=1")
endif()
2023-08-24 17:29:01 +02:00
if (BZIP2_FOUND)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBZLIB_FOUND=1")
else ()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPFXML_NO_BZLIB=1")
endif()
2018-06-09 17:14:08 +02:00
# http://brianmilco.blogspot.de/2012/11/cmake-automatically-use-git-tags-as.html
include(GetGitRevisionDescription)
git_get_tag(VERSION_GIT)
get_git_is_dirty(VERSION_GIT_IS_DIRTY)
if ("${VERSION_GIT_IS_DIRTY}" STREQUAL "")
set(VERSION_GIT_FULL "${VERSION_GIT}")
else()
set(VERSION_GIT_FULL "${VERSION_GIT}-${VERSION_GIT_IS_DIRTY}")
endif()
2020-02-09 04:47:13 -08:00
# Download submodules if needed
2020-02-10 07:10:46 -08:00
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/src/configparser/.git OR NOT EXISTS ${CMAKE_SOURCE_DIR}/src/cppgtfs/.git OR NOT EXISTS ${CMAKE_SOURCE_DIR}/src/xml/.git)
execute_process(
COMMAND git submodule update --init --recursive
)
2020-02-09 04:47:13 -08:00
endif()
2018-06-09 17:14:08 +02:00
add_subdirectory(src)
# tests
2018-07-22 17:40:06 +02:00
add_test("utilTest" utilTest)
2022-01-03 22:27:59 +01:00
add_test("pfaedleTest" pfaedleTest)
2018-06-09 17:14:08 +02:00
# handles install target
install(
2019-06-28 15:10:31 +02:00
FILES pfaedle.cfg DESTINATION etc/${PROJECT_NAME} COMPONENT config PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
2019-02-11 12:37:07 +01:00
)
2018-06-09 17:14:08 +02:00
install(
2023-10-10 13:10:34 +02:00
FILES ${CMAKE_BINARY_DIR}/pfaedle DESTINATION bin
2019-06-28 15:10:31 +02:00
PERMISSIONS OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE COMPONENT binaries
2019-02-11 12:37:07 +01:00
)
2022-01-03 22:27:59 +01:00
install(
2023-10-10 13:10:34 +02:00
FILES ${CMAKE_BINARY_DIR}/shapevl DESTINATION bin
2022-01-03 22:27:59 +01:00
PERMISSIONS OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE COMPONENT binaries
)