diff --git a/scripts/cmake/vcpkg_build_cmake.cmake b/scripts/cmake/vcpkg_build_cmake.cmake index a429ebf4b9ccdb..4c1ad3502e5664 100644 --- a/scripts/cmake/vcpkg_build_cmake.cmake +++ b/scripts/cmake/vcpkg_build_cmake.cmake @@ -62,45 +62,33 @@ function(vcpkg_build_cmake) set(TARGET_PARAM) endif() - foreach(BUILDTYPE "debug" "release") - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL BUILDTYPE) - if(BUILDTYPE STREQUAL "debug") - set(SHORT_BUILDTYPE "dbg") - set(CONFIG "Debug") - else() - set(SHORT_BUILDTYPE "rel") - set(CONFIG "Release") - endif() + foreach(BUILDTYPE IN LISTS VCPKG_BUILD_TYPES) + set(CONFIG "${VCPKG_BUILD_CMAKE_TYPE_${BUILDTYPE}}") - message(STATUS "Building ${TARGET_TRIPLET}-${SHORT_BUILDTYPE}") + message(STATUS "Building ${VCPKG_BUILD_TRIPLET_${BUILDTYPE}}") - if(_bc_ADD_BIN_TO_PATH) - set(_BACKUP_ENV_PATH "$ENV{PATH}") - if(BUILDTYPE STREQUAL "debug") - vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/debug/bin") - else() - vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/bin") - endif() - endif() + if(_bc_ADD_BIN_TO_PATH) + set(_BACKUP_ENV_PATH "$ENV{PATH}") + vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}${VCPKG_PATH_SUFFIX_${BUILDTYPE}}/bin") + endif() - if (_bc_DISABLE_PARALLEL) - vcpkg_execute_build_process( - COMMAND ${CMAKE_COMMAND} --build . --config ${CONFIG} ${TARGET_PARAM} -- ${BUILD_ARGS} ${NO_PARALLEL_ARG} - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${SHORT_BUILDTYPE} - LOGNAME "${_bc_LOGFILE_ROOT}-${TARGET_TRIPLET}-${SHORT_BUILDTYPE}" - ) - else() - vcpkg_execute_build_process( - COMMAND ${CMAKE_COMMAND} --build . --config ${CONFIG} ${TARGET_PARAM} -- ${BUILD_ARGS} ${PARALLEL_ARG} - NO_PARALLEL_COMMAND ${CMAKE_COMMAND} --build . --config ${CONFIG} ${TARGET_PARAM} -- ${BUILD_ARGS} ${NO_PARALLEL_ARG} - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${SHORT_BUILDTYPE} - LOGNAME "${_bc_LOGFILE_ROOT}-${TARGET_TRIPLET}-${SHORT_BUILDTYPE}" - ) - endif() + if (_bc_DISABLE_PARALLEL) + vcpkg_execute_build_process( + COMMAND ${CMAKE_COMMAND} --build . --config ${CONFIG} ${TARGET_PARAM} -- ${BUILD_ARGS} ${NO_PARALLEL_ARG} + WORKING_DIRECTORY ${VCPKG_BUILDTREE_TRIPLET_DIR_${BUILDTYPE}} + LOGNAME "${_bc_LOGFILE_ROOT}-${VCPKG_BUILD_TRIPLET_${BUILDTYPE}}" + ) + else() + vcpkg_execute_build_process( + COMMAND ${CMAKE_COMMAND} --build . --config ${CONFIG} ${TARGET_PARAM} -- ${BUILD_ARGS} ${PARALLEL_ARG} + NO_PARALLEL_COMMAND ${CMAKE_COMMAND} --build . --config ${CONFIG} ${TARGET_PARAM} -- ${BUILD_ARGS} ${NO_PARALLEL_ARG} + WORKING_DIRECTORY ${VCPKG_BUILDTREE_TRIPLET_DIR_${BUILDTYPE}} + LOGNAME "${_bc_LOGFILE_ROOT}-${VCPKG_BUILD_TRIPLET_${BUILDTYPE}}" + ) + endif() - if(_bc_ADD_BIN_TO_PATH) - set(ENV{PATH} "${_BACKUP_ENV_PATH}") - endif() + if(_bc_ADD_BIN_TO_PATH) + set(ENV{PATH} "${_BACKUP_ENV_PATH}") endif() endforeach() endfunction() diff --git a/scripts/cmake/vcpkg_common_definitions.cmake b/scripts/cmake/vcpkg_common_definitions.cmake index 33c66c3ec94cc3..979cace4cf6b3d 100644 --- a/scripts/cmake/vcpkg_common_definitions.cmake +++ b/scripts/cmake/vcpkg_common_definitions.cmake @@ -17,6 +17,13 @@ ## VCPKG_TARGET_IMPORT_LIBRARY_SUFFIX import library suffix for target (same as CMAKE_IMPORT_LIBRARY_SUFFIX) ## VCPKG_FIND_LIBRARY_PREFIXES target dependent prefixes used for find_library calls in portfiles ## VCPKG_FIND_LIBRARY_SUFFIXES target dependent suffixes used for find_library calls in portfiles +## VCPKG_BUILD_TYPES List of VCPKG_BUILD_TYPE which the current port will build (uppercase) +## VCPKG_BUILD_TYPE_SHORT_NAME_ Short name of the buildtype (e.g. DEBUG=dbg; RELEASE=rel) +## VCPKG_BUILD_CMAKE_TYPE_ CMAKE_BUILD_TYPE used for buildtype +## VCPKG_BUILD_QMAKE_CONFIG_ Required QMAKE CONFIG flags for buildtype +## VCPKG_PATH_SUFFIX_ Path suffix used for buildtype (e.g. /debug) +## VCPKG_BUILD_TRIPLET_ Fullname of the buildtriplet e.g. ${TARGET_TRIPLET}-${VCPKG_BUILD_TYPE_SHORT_NAME_} +## VCPKG_BUILDTREE_TRIPLET_DIR_ Path to current buildtype buildtree (e.g. CURRENT_BUILDTREES_DIR/TRIPLET-rel ) ## VCPKG_SYSTEM_LIBRARIES list of libraries are provide by the toolchain and are not managed by vcpkg ## ``` ## @@ -131,6 +138,30 @@ set(CMAKE_IMPORT_LIBRARY_PREFIX "${VCPKG_TARGET_IMPORT_LIBRARY_SUFFIX}") set(CMAKE_FIND_LIBRARY_SUFFIXES "${VCPKG_FIND_LIBRARY_SUFFIXES}" CACHE INTERNAL "") # Required by find_library set(CMAKE_FIND_LIBRARY_PREFIXES "${VCPKG_FIND_LIBRARY_PREFIXES}" CACHE INTERNAL "") # Required by find_library +# Script helpers for looping over the different buildtypes +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + set(_buildname "release") + list(APPEND VCPKG_BUILD_TYPES ${_buildname}) + #Might also be needed: set(VCPKG_BUILD_OPTION_MAPPING_${_buildname} "RELEASE") currently the value of VCPKG_BUILD_TYPES is used + set(VCPKG_BUILD_TYPE_SHORT_NAME_${_buildname} "rel") + set(VCPKG_PATH_SUFFIX_${_buildname} "") + set(VCPKG_COPY_EXE_${_buildname} 1) + set(VCPKG_BUILD_TRIPLET_${_buildname} "${TARGET_TRIPLET}-${VCPKG_BUILD_TYPE_SHORT_NAME_${_buildname}}") + set(VCPKG_BUILDTREE_TRIPLET_DIR_${_buildname} "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${VCPKG_BUILD_TYPE_SHORT_NAME_${_buildname}}") + unset(_buildname) +endif() +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + set(_buildname "debug") + list(APPEND VCPKG_BUILD_TYPES ${_buildname}) + #Might also be needed: set(VCPKG_BUILD_OPTION_MAPPING_${_buildname} "DEBUG") currently the value of VCPKG_BUILD_TYPES is used + set(VCPKG_BUILD_TYPE_SHORT_NAME_${_buildname} "dbg") + set(VCPKG_PATH_SUFFIX_${_buildname} "/debug") + set(VCPKG_COPY_EXE_${_buildname} 0) + set(VCPKG_BUILD_TRIPLET_${_buildname} "${TARGET_TRIPLET}-${VCPKG_BUILD_TYPE_SHORT_NAME_${_buildname}}") + set(VCPKG_BUILDTREE_TRIPLET_DIR_${_buildname} "${CURRENT_BUILDTREES_DIR}/${VCPKG_BUILD_TRIPLET_${_buildname}}") + unset(_buildname) +endif() + # Append platform libraries to VCPKG_SYSTEM_LIBRARIES # The variable are just appended to permit to custom triplets define the variable @@ -200,3 +231,4 @@ if(VCPKG_TARGET_IS_WINDOWS) list(APPEND VCPKG_SYSTEM_LIBRARIES wldap32) list(APPEND VCPKG_SYSTEM_LIBRARIES crypt32) endif() + diff --git a/scripts/cmake/vcpkg_configure_cmake.cmake b/scripts/cmake/vcpkg_configure_cmake.cmake index 14df78e53cf96c..675fd62675c834 100644 --- a/scripts/cmake/vcpkg_configure_cmake.cmake +++ b/scripts/cmake/vcpkg_configure_cmake.cmake @@ -91,15 +91,11 @@ function(vcpkg_configure_cmake) set(NINJA_CAN_BE_USED ON) # Ninja as generator set(NINJA_HOST ON) # Ninja as parallel configurator - if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") - set(_TARGETTING_UWP 1) - endif() - if(_csc_HOST_ARCHITECTURE STREQUAL "x86") # Prebuilt ninja binaries are only provided for x64 hosts set(NINJA_CAN_BE_USED OFF) set(NINJA_HOST OFF) - elseif(_TARGETTING_UWP) + elseif(VCPKG_TARGET_IS_UWP) # Ninja and MSBuild have many differences when targetting UWP, so use MSBuild to maximize existing compatibility set(NINJA_CAN_BE_USED OFF) endif() @@ -108,9 +104,8 @@ function(vcpkg_configure_cmake) set(GENERATOR ${_csc_GENERATOR}) elseif(_csc_PREFER_NINJA AND NINJA_CAN_BE_USED) set(GENERATOR "Ninja") - elseif(VCPKG_CHAINLOAD_TOOLCHAIN_FILE OR (VCPKG_CMAKE_SYSTEM_NAME AND NOT _TARGETTING_UWP)) + elseif(VCPKG_CHAINLOAD_TOOLCHAIN_FILE OR NOT VCPKG_TARGET_IS_WINDOWS) set(GENERATOR "Ninja") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v120") set(GENERATOR "Visual Studio 12 2013") elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v120") @@ -168,7 +163,8 @@ function(vcpkg_configure_cmake) if(DEFINED VCPKG_CMAKE_SYSTEM_NAME) list(APPEND _csc_OPTIONS "-DCMAKE_SYSTEM_NAME=${VCPKG_CMAKE_SYSTEM_NAME}") - if(_TARGETTING_UWP AND NOT DEFINED VCPKG_CMAKE_SYSTEM_VERSION) + if(VCPKG_TARGET_IS_UWP AND NOT DEFINED VCPKG_CMAKE_SYSTEM_VERSION) + message(WARNING "UWP triplet is missing VCPKG_CMAKE_SYSTEM_VERSION. Setting it to 10.0") set(VCPKG_CMAKE_SYSTEM_VERSION 10.0) elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android" AND NOT DEFINED VCPKG_CMAKE_SYSTEM_VERSION) set(VCPKG_CMAKE_SYSTEM_VERSION 21) @@ -205,26 +201,27 @@ function(vcpkg_configure_cmake) endif() if(NOT VCPKG_CHAINLOAD_TOOLCHAIN_FILE) - if(NOT DEFINED VCPKG_CMAKE_SYSTEM_NAME OR _TARGETTING_UWP) + if(VCPKG_TARGET_IS_MINGW) # MinGW also defines VCPKG_TARGET_IS_WINDOWS + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/mingw.cmake") + elseif(VCPKG_TARGET_IS_WINDOWS) set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/windows.cmake") - elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") + elseif(VCPKG_TARGET_IS_LINUX) set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/linux.cmake") - elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android") + elseif(VCPKG_TARGET_IS_ANDROID) set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/android.cmake") - elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Darwin") + elseif(VCPKG_TARGET_IS_OSX) set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/osx.cmake") - elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "iOS") - set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/ios.cmake") - elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + elseif(VCPKG_TARGET_IS_FREEBSD) set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/freebsd.cmake") - elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") + elseif(VCPKG_TARGET_IS_IOS) + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/ios.cmake") + elseif(VCPKG_TARGET_IS_OPENBSD) set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/openbsd.cmake") - elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "MinGW") - set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/mingw.cmake") + else() + message(STATUS "Unknown VCPKG target. No VCPKG_CHAINLOAD_TOOLCHAIN_FILE set!") endif() endif() - list(APPEND _csc_OPTIONS "-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}" "-DVCPKG_TARGET_TRIPLET=${TARGET_TRIPLET}" @@ -269,16 +266,16 @@ function(vcpkg_configure_cmake) endif() endforeach() - set(rel_command - ${CMAKE_COMMAND} ${_csc_SOURCE_PATH} ${_csc_OPTIONS} ${_csc_OPTIONS_RELEASE} - -G ${GENERATOR} - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_INSTALL_PREFIX=${CURRENT_PACKAGES_DIR}) - set(dbg_command - ${CMAKE_COMMAND} ${_csc_SOURCE_PATH} ${_csc_OPTIONS} ${_csc_OPTIONS_DEBUG} - -G ${GENERATOR} - -DCMAKE_BUILD_TYPE=Debug - -DCMAKE_INSTALL_PREFIX=${CURRENT_PACKAGES_DIR}/debug) + set(VCPKG_BUILD_CMAKE_TYPE_debug "Debug") + set(VCPKG_BUILD_CMAKE_TYPE_release "Release") + + foreach(buildtype IN LISTS VCPKG_BUILD_TYPES) + set(${VCPKG_BUILD_TYPE_SHORT_NAME_${buildtype}}_command + ${CMAKE_COMMAND} ${_csc_SOURCE_PATH} ${_csc_OPTIONS} ${_csc_OPTIONS_${buildtype}} + -G ${GENERATOR} + -DCMAKE_BUILD_TYPE=${VCPKG_BUILD_CMAKE_TYPE_${buildtype}} + -DCMAKE_INSTALL_PREFIX=${CURRENT_PACKAGES_DIR}${VCPKG_PATH_SUFFIX_${buildtype}}) + endforeach() if(NINJA_HOST AND CMAKE_HOST_WIN32 AND NOT _csc_DISABLE_PARALLEL_CONFIGURE) list(APPEND _csc_OPTIONS "-DCMAKE_DISABLE_SOURCE_CHANGES=ON") @@ -291,53 +288,33 @@ function(vcpkg_configure_cmake) set(_contents "rule CreateProcess\n command = $process\n\n" ) - - macro(_build_cmakecache whereat build_type) - set(${build_type}_line "build ${whereat}/CMakeCache.txt: CreateProcess\n process = cmd /c \"cd ${whereat} &&") - foreach(arg ${${build_type}_command}) - set(${build_type}_line "${${build_type}_line} \"${arg}\"") + foreach(buildtype IN LISTS VCPKG_BUILD_TYPES) + set(buildshort ${VCPKG_BUILD_TYPE_SHORT_NAME_${buildtype}}) + set(${buildtype}_line "build ../${TARGET_TRIPLET}-${buildshort}/CMakeCache.txt: CreateProcess\n process = cmd /c \"cd ../${TARGET_TRIPLET}-${buildshort} && ") + foreach(arg ${${buildshort}_command}) + string(APPEND ${buildtype}_line "\"${arg}\" ") endforeach() - set(_contents "${_contents}${${build_type}_line}\"\n\n") - endmacro() - - if(NOT DEFINED VCPKG_BUILD_TYPE) - _build_cmakecache(".." "rel") - _build_cmakecache("../../${TARGET_TRIPLET}-dbg" "dbg") - elseif(VCPKG_BUILD_TYPE STREQUAL "release") - _build_cmakecache(".." "rel") - elseif(VCPKG_BUILD_TYPE STREQUAL "debug") - _build_cmakecache("../../${TARGET_TRIPLET}-dbg" "dbg") - endif() - - file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/vcpkg-parallel-configure) - file(WRITE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/vcpkg-parallel-configure/build.ninja "${_contents}") + set(_contents "${_contents}${${buildtype}_line}\"\n\n") + endforeach() + file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/vcpkg-parallel-configure) + file(WRITE ${CURRENT_BUILDTREES_DIR}/vcpkg-parallel-configure/build.ninja "${_contents}") message(STATUS "Configuring ${TARGET_TRIPLET}") vcpkg_execute_required_process( COMMAND ninja -v - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/vcpkg-parallel-configure + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/vcpkg-parallel-configure LOGNAME ${_csc_LOGNAME} ) else() - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - message(STATUS "Configuring ${TARGET_TRIPLET}-dbg") - file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg) + foreach(buildtype IN LISTS VCPKG_BUILD_TYPES) + message(STATUS "Configuring ${TARGET_TRIPLET}-${VCPKG_BUILD_TYPE_SHORT_NAME_${buildtype}}") + file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${VCPKG_BUILD_TYPE_SHORT_NAME_${buildtype}}) vcpkg_execute_required_process( - COMMAND ${dbg_command} - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg - LOGNAME ${_csc_LOGNAME}-dbg + COMMAND ${${VCPKG_BUILD_TYPE_SHORT_NAME_${buildtype}}_command} + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${VCPKG_BUILD_TYPE_SHORT_NAME_${buildtype}} + LOGNAME ${_csc_LOGNAME}-${VCPKG_BUILD_TYPE_SHORT_NAME_${buildtype}} ) - endif() - - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") - message(STATUS "Configuring ${TARGET_TRIPLET}-rel") - file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel) - vcpkg_execute_required_process( - COMMAND ${rel_command} - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel - LOGNAME ${_csc_LOGNAME}-rel - ) - endif() + endforeach() endif() set(_VCPKG_CMAKE_GENERATOR "${GENERATOR}" PARENT_SCOPE) diff --git a/scripts/cmake/vcpkg_configure_qmake.cmake b/scripts/cmake/vcpkg_configure_qmake.cmake index f0baabb6ae63da..7e1ea4d3a0ca77 100644 --- a/scripts/cmake/vcpkg_configure_qmake.cmake +++ b/scripts/cmake/vcpkg_configure_qmake.cmake @@ -18,7 +18,7 @@ function(vcpkg_configure_qmake) # parse parameters such that semicolons in options arguments to COMMAND don't get erased cmake_parse_arguments(PARSE_ARGV 0 _csc "" "SOURCE_PATH" "OPTIONS;OPTIONS_RELEASE;OPTIONS_DEBUG;BUILD_OPTIONS;BUILD_OPTIONS_RELEASE;BUILD_OPTIONS_DEBUG") - + # Find qmake executable set(_triplet_hostbindir ${CURRENT_INSTALLED_DIR}/tools/qt5/bin) if(DEFINED VCPKG_QT_HOST_TOOLS_ROOT_DIR) @@ -39,7 +39,7 @@ function(vcpkg_configure_qmake) list(APPEND _csc_OPTIONS "CONFIG*=shared") list(APPEND _csc_OPTIONS_DEBUG "CONFIG*=separate_debug_info") endif() - + if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_CRT_LINKAGE STREQUAL "static") list(APPEND _csc_OPTIONS "CONFIG*=static-runtime") endif() @@ -55,76 +55,54 @@ function(vcpkg_configure_qmake) set(ENV{PKG_CONFIG} "${PKGCONFIG}") get_filename_component(PKGCONFIG_PATH "${PKGCONFIG}" DIRECTORY) vcpkg_add_to_path("${PKGCONFIG_PATH}") + set(PKGCONFIG_INSTALLED_SHARE_DIR "${CURRENT_INSTALLED_DIR}/share/pkgconfig") + set(PKGCONFIG_PACKAGES_SHARE_DIR "${CURRENT_PACKAGES_DIR}/share/pkgconfig") + + list(APPEND VCPKG_BUILD_QMAKE_CONFIG_release "CONFIG+=release;CONFIG-=debug") + list(APPEND VCPKG_BUILD_QMAKE_CONFIG_debug "CONFIG-=release;CONFIG+=debug") - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") - set(_config RELEASE) - set(PKGCONFIG_INSTALLED_DIR "${_VCPKG_INSTALLED_PKGCONF}${PATH_SUFFIX_${_config}}/lib/pkgconfig") - set(PKGCONFIG_INSTALLED_SHARE_DIR "${_VCPKG_INSTALLED_PKGCONF}/share/pkgconfig") - set(PKGCONFIG_PACKAGES_DIR "${_VCPKG_PACKAGES_PKGCONF}${PATH_SUFFIX_${_config}}/lib/pkgconfig") - set(PKGCONFIG_PACKAGES_SHARE_DIR "${_VCPKG_PACKAGES_PKGCONF}/share/pkgconfig") + foreach(buildtype IN LISTS VCPKG_BUILD_TYPES) + #Cleanup + file(REMOVE_RECURSE "${VCPKG_BUILDTREE_TRIPLET_DIR_${buildtype}}") + #Pkgconfig + set(PKGCONFIG_INSTALLED_DIR "${CURRENT_INSTALLED_DIR}${VCPKG_PATH_SUFFIX_${buildtype}}/lib/pkgconfig") + set(PKGCONFIG_PACKAGES_DIR "${CURRENT_PACKAGES_DIR}${VCPKG_PATH_SUFFIX_${buildtype}}/lib/pkgconfig") if(DEFINED ENV{PKG_CONFIG_PATH}) - set(BACKUP_ENV_PKG_CONFIG_PATH_${_config} $ENV{PKG_CONFIG_PATH}) + set(BACKUP_ENV_PKG_CONFIG_PATH_${buildtype} $ENV{PKG_CONFIG_PATH}) set(ENV{PKG_CONFIG_PATH} "${PKGCONFIG_INSTALLED_DIR}${VCPKG_HOST_PATH_SEPARATOR}${PKGCONFIG_INSTALLED_SHARE_DIR}${VCPKG_HOST_PATH_SEPARATOR}${PKGCONFIG_PACKAGES_DIR}${VCPKG_HOST_PATH_SEPARATOR}${PKGCONFIG_PACKAGES_SHARE_DIR}${VCPKG_HOST_PATH_SEPARATOR}$ENV{PKG_CONFIG_PATH}") else() set(ENV{PKG_CONFIG_PATH} "${PKGCONFIG_INSTALLED_DIR}${VCPKG_HOST_PATH_SEPARATOR}${PKGCONFIG_INSTALLED_SHARE_DIR}${VCPKG_HOST_PATH_SEPARATOR}${PKGCONFIG_PACKAGES_DIR}${VCPKG_HOST_PATH_SEPARATOR}${PKGCONFIG_PACKAGES_SHARE_DIR}") endif() + # qt.conf + string(TOLOWER ${buildtype} _lowerbuildtype) + set(_qt_conf "${VCPKG_BUILDTREE_TRIPLET_DIR_${buildtype}}/qt.conf") + configure_file("${CURRENT_INSTALLED_DIR}/tools/qt5/qt_${_lowerbuildtype}.conf" "${_qt_conf}") - configure_file(${CURRENT_INSTALLED_DIR}/tools/qt5/qt_release.conf ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/qt.conf) - - message(STATUS "Configuring ${TARGET_TRIPLET}-rel") - file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel) - if(DEFINED _csc_BUILD_OPTIONS OR DEFINED _csc_BUILD_OPTIONS_RELEASE) - set(BUILD_OPT -- ${_csc_BUILD_OPTIONS} ${_csc_BUILD_OPTIONS_RELEASE}) + message(STATUS "Configuring ${VCPKG_BUILD_TRIPLET_${buildtype}}") + if(DEFINED _csc_BUILD_OPTIONS OR DEFINED _csc_BUILD_OPTIONS_${buildtype}) + set(BUILD_OPT -- ${_csc_BUILD_OPTIONS} ${_csc_BUILD_OPTIONS_${buildtype}}) endif() + file(MAKE_DIRECTORY "${VCPKG_BUILDTREE_TRIPLET_DIR_${buildtype}}") + list(APPEND _csc_OPTIONS ${VCPKG_BUILD_QMAKE_CONFIG_${_buildname}}) vcpkg_execute_required_process( - COMMAND ${QMAKE_COMMAND} CONFIG-=debug CONFIG+=release - ${_csc_OPTIONS} ${_csc_OPTIONS_RELEASE} ${_csc_SOURCE_PATH} - -qtconf "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/qt.conf" + COMMAND ${QMAKE_COMMAND} + ${_csc_OPTIONS} ${_csc_OPTIONS_${buildtype}} ${_csc_SOURCE_PATH} + -qtconf "${VCPKG_BUILDTREE_TRIPLET_DIR_${buildtype}}/qt.conf" ${BUILD_OPT} - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel - LOGNAME config-${TARGET_TRIPLET}-rel - ) - message(STATUS "Configuring ${TARGET_TRIPLET}-rel done") - if(EXISTS "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/config.log") - file(REMOVE "${CURRENT_BUILDTREES_DIR}/internal-config-${TARGET_TRIPLET}-rel.log") - file(RENAME "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/config.log" "${CURRENT_BUILDTREES_DIR}/internal-config-${TARGET_TRIPLET}-rel.log") - endif() - endif() + WORKING_DIRECTORY "${VCPKG_BUILDTREE_TRIPLET_DIR_${buildtype}}" + LOGNAME config-${VCPKG_BUILD_TRIPLET_${buildtype}}) - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - set(_config DEBUG) - set(PATH_SUFFIX_DEBUG /debug) - set(PKGCONFIG_INSTALLED_DIR "${_VCPKG_INSTALLED_PKGCONF}${PATH_SUFFIX_${_config}}/lib/pkgconfig") - set(PKGCONFIG_INSTALLED_SHARE_DIR "${_VCPKG_INSTALLED_PKGCONF}/share/pkgconfig") - set(PKGCONFIG_PACKAGES_DIR "${_VCPKG_PACKAGES_PKGCONF}${PATH_SUFFIX_${_config}}/lib/pkgconfig") - set(PKGCONFIG_PACKAGES_SHARE_DIR "${_VCPKG_PACKAGES_PKGCONF}/share/pkgconfig") - if(DEFINED ENV{PKG_CONFIG_PATH}) - set(BACKUP_ENV_PKG_CONFIG_PATH_${_config} $ENV{PKG_CONFIG_PATH}) - set(ENV{PKG_CONFIG_PATH} "${PKGCONFIG_INSTALLED_DIR}${VCPKG_HOST_PATH_SEPARATOR}${PKGCONFIG_INSTALLED_SHARE_DIR}${VCPKG_HOST_PATH_SEPARATOR}${PKGCONFIG_PACKAGES_DIR}${VCPKG_HOST_PATH_SEPARATOR}${PKGCONFIG_PACKAGES_SHARE_DIR}${VCPKG_HOST_PATH_SEPARATOR}$ENV{PKG_CONFIG_PATH}") - else() - set(ENV{PKG_CONFIG_PATH} "${PKGCONFIG_INSTALLED_DIR}${VCPKG_HOST_PATH_SEPARATOR}${PKGCONFIG_INSTALLED_SHARE_DIR}${VCPKG_HOST_PATH_SEPARATOR}${PKGCONFIG_PACKAGES_DIR}${VCPKG_HOST_PATH_SEPARATOR}${PKGCONFIG_PACKAGES_SHARE_DIR}") + message(STATUS "Configuring ${VCPKG_BUILD_TRIPLET_${buildtype}} done") + if(EXISTS "${CURRENT_BUILDTREES_DIR}/${VCPKG_BUILD_TRIPLET_${buildtype}}/config.log") + file(REMOVE "${CURRENT_BUILDTREES_DIR}/internal-config-${VCPKG_BUILD_TRIPLET_${buildtype}}.log") + file(RENAME "${CURRENT_BUILDTREES_DIR}/${VCPKG_BUILD_TRIPLET_${buildtype}}/config.log" "${CURRENT_BUILDTREES_DIR}/internal-config-${VCPKG_BUILD_TRIPLET_${buildtype}}.log") endif() - - configure_file(${CURRENT_INSTALLED_DIR}/tools/qt5/qt_debug.conf ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/qt.conf) - - message(STATUS "Configuring ${TARGET_TRIPLET}-dbg") - file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg) - if(DEFINED _csc_BUILD_OPTIONS OR DEFINED _csc_BUILD_OPTIONS_DEBUG) - set(BUILD_OPT -- ${_csc_BUILD_OPTIONS} ${_csc_BUILD_OPTIONS_DEBUG}) - endif() - vcpkg_execute_required_process( - COMMAND ${QMAKE_COMMAND} CONFIG-=release CONFIG+=debug - ${_csc_OPTIONS} ${_csc_OPTIONS_DEBUG} ${_csc_SOURCE_PATH} - -qtconf "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/qt.conf" - ${BUILD_OPT} - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg - LOGNAME config-${TARGET_TRIPLET}-dbg - ) - message(STATUS "Configuring ${TARGET_TRIPLET}-dbg done") - if(EXISTS "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/config.log") - file(REMOVE "${CURRENT_BUILDTREES_DIR}/internal-config-${TARGET_TRIPLET}-dbg.log") - file(RENAME "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/config.log" "${CURRENT_BUILDTREES_DIR}/internal-config-${TARGET_TRIPLET}-dbg.log") + if(DEFINED BACKUP_ENV_PKG_CONFIG_PATH_${buildtype}) + set(ENV{PKG_CONFIG_PATH} "${BACKUP_ENV_PKG_CONFIG_PATH_${buildtype}}") + else() + unset(ENV{PKG_CONFIG_PATH}) endif() - endif() - + unset(_lowerbuildtype) + unset(_qt_conf) + endforeach() endfunction() \ No newline at end of file diff --git a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake index 7e4432e849222c..f579113fac2665 100644 --- a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake +++ b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake @@ -56,6 +56,7 @@ function(vcpkg_fixup_cmake_targets) string(REPLACE "." "\\." EXECUTABLE_SUFFIX "${VCPKG_TARGET_EXECUTABLE_SUFFIX}") + #TODO (in another PR): Needs to be rewritten to use new buildtype variables. set(DEBUG_SHARE ${CURRENT_PACKAGES_DIR}/debug/${_vfct_TARGET_PATH}) set(RELEASE_SHARE ${CURRENT_PACKAGES_DIR}/${_vfct_TARGET_PATH}) @@ -130,8 +131,8 @@ function(vcpkg_fixup_cmake_targets) endif() file(GLOB_RECURSE RELEASE_TARGETS - "${RELEASE_SHARE}/*-release.cmake" - ) + "${RELEASE_SHARE}/*-release.cmake") + foreach(RELEASE_TARGET IN LISTS RELEASE_TARGETS) file(READ ${RELEASE_TARGET} _contents) string(REPLACE "${CURRENT_INSTALLED_DIR}" "\${_IMPORT_PREFIX}" _contents "${_contents}") diff --git a/scripts/cmake/vcpkg_install_msbuild.cmake b/scripts/cmake/vcpkg_install_msbuild.cmake index ee3247cfaffafa..6f29b0691d87b8 100644 --- a/scripts/cmake/vcpkg_install_msbuild.cmake +++ b/scripts/cmake/vcpkg_install_msbuild.cmake @@ -154,58 +154,34 @@ function(vcpkg_install_msbuild) endif() get_filename_component(SOURCE_PATH_SUFFIX "${_csc_SOURCE_PATH}" NAME) - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") - message(STATUS "Building ${_csc_PROJECT_SUBPATH} for Release") - file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel) - file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel) - file(COPY ${_csc_SOURCE_PATH} DESTINATION ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel) - set(SOURCE_COPY_PATH ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/${SOURCE_PATH_SUFFIX}) + foreach(_buildname IN LISTS VCPKG_BUILD_TYPES) + message(STATUS "Building ${_csc_PROJECT_SUBPATH} for ${_csc_${_buildname}_CONFIGURATION}") + file(REMOVE_RECURSE ${VCPKG_BUILDTREE_TRIPLET_DIR_${_buildname}}) + file(MAKE_DIRECTORY ${VCPKG_BUILDTREE_TRIPLET_DIR_${_buildname}}) + file(COPY ${_csc_SOURCE_PATH} DESTINATION ${VCPKG_BUILDTREE_TRIPLET_DIR_${_buildname}}) + set(SOURCE_COPY_PATH ${VCPKG_BUILDTREE_TRIPLET_DIR_${_buildname}}/${SOURCE_PATH_SUFFIX}) vcpkg_execute_required_process( COMMAND msbuild ${SOURCE_COPY_PATH}/${_csc_PROJECT_SUBPATH} - /p:Configuration=${_csc_RELEASE_CONFIGURATION} + /p:Configuration=${_csc_${_buildname}_CONFIGURATION} ${_csc_OPTIONS} - ${_csc_OPTIONS_RELEASE} + ${_csc_OPTIONS_${_buildname}} WORKING_DIRECTORY ${SOURCE_COPY_PATH} - LOGNAME build-${TARGET_TRIPLET}-rel + LOGNAME build-${VCPKG_BUILD_TRIPLET_${_buildname}} ) file(GLOB_RECURSE LIBS ${SOURCE_COPY_PATH}/*.lib) file(GLOB_RECURSE DLLS ${SOURCE_COPY_PATH}/*.dll) file(GLOB_RECURSE EXES ${SOURCE_COPY_PATH}/*.exe) if(LIBS) - file(COPY ${LIBS} DESTINATION ${CURRENT_PACKAGES_DIR}/lib) + file(COPY ${LIBS} DESTINATION ${CURRENT_PACKAGES_DIR}${VCPKG_PATH_SUFFIX_${_buildname}}/lib) endif() if(DLLS) - file(COPY ${DLLS} DESTINATION ${CURRENT_PACKAGES_DIR}/bin) + file(COPY ${DLLS} DESTINATION ${CURRENT_PACKAGES_DIR}${VCPKG_PATH_SUFFIX_${_buildname}}/bin) endif() - if(EXES) - file(COPY ${EXES} DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT}) - vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/${PORT}) + if(EXES AND VCPKG_COPY_EXE_${_buildname}) + file(COPY ${EXES} DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT}${VCPKG_PATH_SUFFIX_${_buildname}}) + vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/${PORT}${VCPKG_PATH_SUFFIX_${_buildname}}) endif() - endif() - - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - message(STATUS "Building ${_csc_PROJECT_SUBPATH} for Debug") - file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg) - file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg) - file(COPY ${_csc_SOURCE_PATH} DESTINATION ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg) - set(SOURCE_COPY_PATH ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/${SOURCE_PATH_SUFFIX}) - vcpkg_execute_required_process( - COMMAND msbuild ${SOURCE_COPY_PATH}/${_csc_PROJECT_SUBPATH} - /p:Configuration=${_csc_DEBUG_CONFIGURATION} - ${_csc_OPTIONS} - ${_csc_OPTIONS_DEBUG} - WORKING_DIRECTORY ${SOURCE_COPY_PATH} - LOGNAME build-${TARGET_TRIPLET}-dbg - ) - file(GLOB_RECURSE LIBS ${SOURCE_COPY_PATH}/*.lib) - file(GLOB_RECURSE DLLS ${SOURCE_COPY_PATH}/*.dll) - if(LIBS) - file(COPY ${LIBS} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib) - endif() - if(DLLS) - file(COPY ${DLLS} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin) - endif() - endif() + endforeach() vcpkg_copy_pdbs()