From c73e5d514d1a1e9a4adc98ae83bfdb4fc00f03f1 Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Sat, 1 Sep 2018 18:23:10 +0200 Subject: [PATCH] cmake+ci: install pdb's + enable on ci --- .appveyor.yml | 4 +--- cmake/ctest/build.ctest | 22 +++++++++++----------- cmake/ctest/configure_darwin.ctest | 6 +++--- cmake/ctest/configure_linux.ctest | 4 ++-- cmake/ctest/configure_windows.ctest | 8 +------- cmake_configure.cmake | 29 ++++++++++++++++++++++------- rwgame/CMakeLists.txt | 7 +++---- rwtools/rwfont/CMakeLists.txt | 5 +++-- rwviewer/CMakeLists.txt | 7 +++---- tests/CMakeLists.txt | 9 ++++----- 10 files changed, 53 insertions(+), 48 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 38a70e0b..3d4dbec2 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -17,12 +17,10 @@ environment: USE_CONAN: 1 platform: -# - Win32 - x64 configuration: -# - Debug - - Release + - RelWithDebInfo matrix: fast_finish: false diff --git a/cmake/ctest/build.ctest b/cmake/ctest/build.ctest index 4668357c..f8c162a5 100644 --- a/cmake/ctest/build.ctest +++ b/cmake/ctest/build.ctest @@ -6,7 +6,7 @@ set(_ARGS_BOOL USE_CONAN - DEBUG + BUILD_TYPE CHECK_IWYU BUILD_TOOLS BUILD_VIEWER @@ -67,6 +67,12 @@ endif() message(STATUS "Starting test...") ctest_start("${MODEL_NAME}" ${_CTEST_START_EXTRA_ARGS}) +set(ALL_BUILD_TYPES Release Debug MinSizeRel RelWithDebInfo) +list(FIND ALL_BUILD_TYPES "${BUILD_TYPE}" BUILD_TYPE_INDEX) +if(BUILD_TYPE_INDEX EQUAL -1) + message(FATAL_ERROR "Unknown build type '${BUILD_TYPE}'") +endif() + if(USE_CONAN) find_program(CONAN_BIN NAMES conan @@ -109,7 +115,7 @@ if(USE_CONAN) endif() endif() - if(DEBUG) + if(BUILD_TYPE STREQUAL "Debug") set(CONAN_CONFIGURATION "Debug") else() set(CONAN_CONFIGURATION "Release") @@ -149,15 +155,9 @@ if(USE_CONAN) endif() # CTEST_CONFIGURATION_TYPE is needed on Windows (no leading underscore) -if(DEBUG) - set(_CMAKE_BUILD_TYPE "Debug") - set(_CTEST_BUILD_CONFIGURATION "Debug") - set(CTEST_CONFIGURATION_TYPE "Debug") -else() - set(_CMAKE_BUILD_TYPE "Release") - set(_CTEST_BUILD_CONFIGURATION "Release") - set(CTEST_CONFIGURATION_TYPE "Release") -endif() +set(_CMAKE_BUILD_TYPE "${BUILD_TYPE}") +set(_CTEST_BUILD_CONFIGURATION "${BUILD_TYPE}") +set(CTEST_CONFIGURATION_TYPE "${BUILD_TYPE}") set(_CONFIGURE_OPTIONS "-DBUILD_TOOLS=${BUILD_TOOLS}" diff --git a/cmake/ctest/configure_darwin.ctest b/cmake/ctest/configure_darwin.ctest index 00865283..bb16d966 100644 --- a/cmake/ctest/configure_darwin.ctest +++ b/cmake/ctest/configure_darwin.ctest @@ -1,8 +1,8 @@ set(CMAKE_GENERATOR "Xcode") -if(ENV{DEBUG}) - set(DEBUG "$ENV{DEBUG}") +if($ENV{DEBUG}) + set(BUILD_TYPE "Debug") else() - set(DEBUG FALSE) + set(BUILD_TYPE "Release") endif() set(CONFIGURE_EXTRA_OPTIONS ";") set(BUILD_EXTRA_FLAGS "") diff --git a/cmake/ctest/configure_linux.ctest b/cmake/ctest/configure_linux.ctest index 4dc0c3d3..ca31df27 100644 --- a/cmake/ctest/configure_linux.ctest +++ b/cmake/ctest/configure_linux.ctest @@ -1,8 +1,8 @@ set(CMAKE_GENERATOR "Unix Makefiles") if($ENV{DEBUG}) - set(DEBUG "$ENV{DEBUG}") + set(BUILD_TYPE "Debug") else() - set(DEBUG FALSE) + set(BUILD_TYPE "Release") endif() set(CONFIGURE_EXTRA_OPTIONS ";") include(ProcessorCount) diff --git a/cmake/ctest/configure_windows.ctest b/cmake/ctest/configure_windows.ctest index e7cb76a7..a36cd8fe 100644 --- a/cmake/ctest/configure_windows.ctest +++ b/cmake/ctest/configure_windows.ctest @@ -25,13 +25,7 @@ endif() set(CONFIGURE_EXTRA_OPTIONS ";") set(BUILD_EXTRA_FLAGS "") -if(CONFIGURATION STREQUAL "Debug") - set(DEBUG TRUE) -elseif(CONFIGURATION STREQUAL "Release") - set(DEBUG FALSE) -else() - message(FATAL_ERROR "Unknown configuration '${CONFIGURATION}'") -endif() +set(BUILD_TYPE "${CONFIGURATION}") set(CONAN_ARCH "x86_64") diff --git a/cmake_configure.cmake b/cmake_configure.cmake index a2c16347..0ed510af 100644 --- a/cmake_configure.cmake +++ b/cmake_configure.cmake @@ -181,13 +181,11 @@ foreach(SAN ${ENABLE_SANITIZERS}) endif() endforeach() -include(CMakeParseArguments) - function(openrw_target_apply_options) set(IWYU_MAPPING "${PROJECT_SOURCE_DIR}/openrw_iwyu.imp") - cmake_parse_arguments("OPENRW_APPLY" "" "TARGET" "" ${ARGN}) + cmake_parse_arguments("ORW" "INSTALL;INSTALL_PDB" "TARGET" "" ${ARGN}) if(CHECK_IWYU) - iwyu_check(TARGET "${OPENRW_APPLY_TARGET}" + iwyu_check(TARGET "${ORW_TARGET}" EXTRA_OPTS "--mapping_file=${IWYU_MAPPING}" ) @@ -195,7 +193,7 @@ function(openrw_target_apply_options) if(CHECK_CLANGTIDY) clang_tidy_check_target( - TARGET "${OPENRW_APPLY_TARGET}" + TARGET "${ORW_TARGET}" FORMAT_STYLE "file" FIX "${CHECK_CLANGTIDY_FIX}" CHECK_ALL @@ -204,15 +202,32 @@ function(openrw_target_apply_options) if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") set_property( - TARGET "${OPENRW_APPLY_TARGET}" + TARGET "${ORW_TARGET}" APPEND PROPERTY STATIC_LIBRARY_FLAGS "-no_warning_for_no_symbols" ) elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") set_property( - TARGET "${OPENRW_APPLY_TARGET}" + TARGET "${ORW_TARGET}" APPEND PROPERTY LINK_FLAGS "/ignore:4099" ) endif() + + if(ORW_INSTALL) + install( + TARGETS "${ORW_TARGET}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ) + endif() + if(ORW_INSTALL_PDB) + if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + install(FILES "$<$,$>:$>" + DESTINATION "${CMAKE_INSTALL_BINDIR}" + ) + endif() + endif() + endfunction() diff --git a/rwgame/CMakeLists.txt b/rwgame/CMakeLists.txt index a1125c28..2b6a3fc2 100644 --- a/rwgame/CMakeLists.txt +++ b/rwgame/CMakeLists.txt @@ -61,8 +61,7 @@ target_link_libraries(rwgame SDL2::SDL2 ) -openrw_target_apply_options(TARGET rwgame) - -install(TARGETS rwgame - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" +openrw_target_apply_options( + TARGET rwgame + INSTALL INSTALL_PDB ) diff --git a/rwtools/rwfont/CMakeLists.txt b/rwtools/rwfont/CMakeLists.txt index 35e9404b..7494258b 100644 --- a/rwtools/rwfont/CMakeLists.txt +++ b/rwtools/rwfont/CMakeLists.txt @@ -11,6 +11,7 @@ target_link_libraries(rwfontmap Qt5::Gui ) -install(TARGETS rwfontmap - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" +openrw_target_apply_options( + TARGET rwfontmap + INSTALL INSTALL_PDB ) diff --git a/rwviewer/CMakeLists.txt b/rwviewer/CMakeLists.txt index 5b4e3f1d..0e4490b1 100644 --- a/rwviewer/CMakeLists.txt +++ b/rwviewer/CMakeLists.txt @@ -54,10 +54,9 @@ target_link_libraries(rwviewer Qt5::Widgets ) -openrw_target_apply_options(TARGET rwviewer) - -install(TARGETS rwviewer - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" +openrw_target_apply_options( + TARGET rwviewer + INSTALL INSTALL_PDB ) if(USE_CONAN) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7d362e79..b91bdaf1 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -76,7 +76,10 @@ target_link_libraries(rwtests Boost::filesystem ) -openrw_target_apply_options(TARGET rwtests) +openrw_target_apply_options( + TARGET rwtests + INSTALL INSTALL_PDB + ) if(SEPARATE_TEST_SUITES) foreach(TEST ${TESTS}) @@ -98,7 +101,3 @@ else() TIMEOUT 300 ) endif() - -install(TARGETS rwtests - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" - )