From 989d0497025e59c9f9946bb6c7b1c742604bb589 Mon Sep 17 00:00:00 2001 From: Norbert Nemec Date: Wed, 19 Jun 2019 22:32:39 +0200 Subject: mesonbuild - Update to 0.51.0 --- scripts/cmake/vcpkg_find_acquire_program.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 451f4bcd3..024840223 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -154,10 +154,10 @@ function(vcpkg_find_acquire_program VAR) else() set(SCRIPTNAME meson) endif() - set(PATHS ${DOWNLOADS}/tools/meson/meson-0.50.0) - set(URL "https://github.com/mesonbuild/meson/archive/0.50.0.zip") - set(ARCHIVE "meson-0.50.0.zip") - set(HASH 587cafe0cd551e3fb3507ecab904912dc3e053aa95c864b435526a20d52406536ba970a50be6c9f20d83314c5853aaefa102c5ca14623d0928b091a43e7b6d64) + set(PATHS ${DOWNLOADS}/tools/meson/meson-0.51.0) + set(URL "https://github.com/mesonbuild/meson/archive/0.51.0.zip") + set(ARCHIVE "meson-0.51.0.zip") + set(HASH bf1df65cde7e0e0a44e4b4be7d68de9897a77c4ea4c694f1d77fe82cd3c7e7818dc034a3313ce885ba6883b4ba6d282b7a589f665fa499d9eb79fc7a23e415cc) elseif(VAR MATCHES "FLEX") if(CMAKE_HOST_WIN32) set(PROGNAME win_flex) -- cgit v1.2.3 From 11506d1426163df3c867a99bacd84b8911ea3224 Mon Sep 17 00:00:00 2001 From: Norbert Nemec Date: Wed, 19 Jun 2019 22:35:08 +0200 Subject: set cmake_prefix_path correctly within vcpkg_configure_meson --- scripts/cmake/vcpkg_configure_meson.cmake | 1 + 1 file changed, 1 insertion(+) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_configure_meson.cmake b/scripts/cmake/vcpkg_configure_meson.cmake index f1ae0e65f..f907c76f1 100644 --- a/scripts/cmake/vcpkg_configure_meson.cmake +++ b/scripts/cmake/vcpkg_configure_meson.cmake @@ -26,6 +26,7 @@ function(vcpkg_configure_meson) set(MESON_RELEASE_LDFLAGS "${MESON_RELEASE_LDFLAGS} /INCREMENTAL:NO /OPT:REF /OPT:ICF") # select meson cmd-line options + list(APPEND _vcm_OPTIONS -Dcmake_prefix_path=${CURRENT_INSTALLED_DIR}) list(APPEND _vcm_OPTIONS --buildtype plain --backend ninja --wrap-mode nodownload) if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) list(APPEND _vcm_OPTIONS --default-library shared) -- cgit v1.2.3 From 54b3be6b60466370d37edbe64fb6c6ede8487f04 Mon Sep 17 00:00:00 2001 From: tarcila Date: Tue, 25 Jun 2019 02:21:30 -0400 Subject: [scripts] Fix vcpkg_fixup_cmake on non Windows platforms (#5630) * [scripts] Fix vcpkg_fixup_cmake on non Windows platforms Script was only handling tools executables ending with .exe. Changed it so anything under /bin/ in transformed. This fixes for instance FlatcTargets-release.cmake from flatbuffers port on osx. --- scripts/cmake/vcpkg_fixup_cmake_targets.cmake | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake index 982f414b6..1e0f2493d 100644 --- a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake +++ b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake @@ -4,7 +4,8 @@ # Transform all /debug/share//*targets-debug.cmake files and move them to /share/. # Removes all /debug/share//*targets.cmake and /debug/share//*config.cmake # -# Transform all references matching /bin/*.exe to /tools//*.exe +# Transform all references matching /bin/*.exe to /tools//*.exe on Windows +# Transform all references matching /bin/* to /tools//* on other platforms # # Fix ${_IMPORT_PREFIX} in auto generated targets to be one folder deeper. # Replace ${CURRENT_INSTALLED_DIR} with ${_IMPORT_PREFIX} in configs/targets. @@ -27,6 +28,13 @@ function(vcpkg_fixup_cmake_targets) set(_vfct_TARGET_PATH share/${PORT}) endif() + + if(NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + set(EXECUTABLE_SUFFIX "\\.exe") + else() + set(EXECUTABLE_SUFFIX) + endif() + set(DEBUG_SHARE ${CURRENT_PACKAGES_DIR}/debug/${_vfct_TARGET_PATH}) set(RELEASE_SHARE ${CURRENT_PACKAGES_DIR}/${_vfct_TARGET_PATH}) @@ -107,7 +115,7 @@ function(vcpkg_fixup_cmake_targets) foreach(RELEASE_TARGET IN LISTS RELEASE_TARGETS) file(READ ${RELEASE_TARGET} _contents) string(REPLACE "${CURRENT_INSTALLED_DIR}" "\${_IMPORT_PREFIX}" _contents "${_contents}") - string(REGEX REPLACE "\\\${_IMPORT_PREFIX}/bin/([^ \"]+\\.exe)" "\${_IMPORT_PREFIX}/tools/${PORT}/\\1" _contents "${_contents}") + string(REGEX REPLACE "\\\${_IMPORT_PREFIX}/bin/([^ \"]+${EXECUTABLE_SUFFIX})" "\${_IMPORT_PREFIX}/tools/${PORT}/\\1" _contents "${_contents}") file(WRITE ${RELEASE_TARGET} "${_contents}") endforeach() @@ -120,7 +128,7 @@ function(vcpkg_fixup_cmake_targets) file(READ ${DEBUG_TARGET} _contents) string(REPLACE "${CURRENT_INSTALLED_DIR}" "\${_IMPORT_PREFIX}" _contents "${_contents}") - string(REGEX REPLACE "\\\${_IMPORT_PREFIX}/bin/([^ \";]+\\.exe)" "\${_IMPORT_PREFIX}/tools/${PORT}/\\1" _contents "${_contents}") + string(REGEX REPLACE "\\\${_IMPORT_PREFIX}/bin/([^ \";]+${EXECUTABLE_SUFFIX})" "\${_IMPORT_PREFIX}/tools/${PORT}/\\1" _contents "${_contents}") string(REPLACE "\${_IMPORT_PREFIX}/lib" "\${_IMPORT_PREFIX}/debug/lib" _contents "${_contents}") string(REPLACE "\${_IMPORT_PREFIX}/bin" "\${_IMPORT_PREFIX}/debug/bin" _contents "${_contents}") file(WRITE ${RELEASE_SHARE}/${DEBUG_TARGET_REL} "${_contents}") -- cgit v1.2.3 From 1ce24dd0db6d9cf6cdb348ff29aa8454b3f1b028 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 25 Jun 2019 16:08:18 -0700 Subject: [docs]Update cmake docs (#7039) --- scripts/cmake/vcpkg_configure_cmake.cmake | 1 + scripts/cmake/vcpkg_extract_source_archive_ex.cmake | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_configure_cmake.cmake b/scripts/cmake/vcpkg_configure_cmake.cmake index 8f3aa6425..c17bd68c8 100644 --- a/scripts/cmake/vcpkg_configure_cmake.cmake +++ b/scripts/cmake/vcpkg_configure_cmake.cmake @@ -7,6 +7,7 @@ ## vcpkg_configure_cmake( ## SOURCE_PATH <${SOURCE_PATH}> ## [PREFER_NINJA] +## [DISABLE_PARALLEL_CONFIGURE] ## [GENERATOR <"NMake Makefiles">] ## [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] ## [OPTIONS_RELEASE <-DOPTIMIZE=1>...] diff --git a/scripts/cmake/vcpkg_extract_source_archive_ex.cmake b/scripts/cmake/vcpkg_extract_source_archive_ex.cmake index a70a5e4a3..a775c2094 100644 --- a/scripts/cmake/vcpkg_extract_source_archive_ex.cmake +++ b/scripts/cmake/vcpkg_extract_source_archive_ex.cmake @@ -25,7 +25,7 @@ ## This is usually obtained from calling [`vcpkg_download_distfile`](vcpkg_download_distfile.md). ## ## ### REF -## A friendly name that will be used instead of the filename of the archive. +## A friendly name that will be used instead of the filename of the archive. If more than 10 characters it will be truncated. ## ## By convention, this is set to the version number or tag fetched ## -- cgit v1.2.3 From 32ee6c96ce48beffd64fea04c676ffb0d297681b Mon Sep 17 00:00:00 2001 From: John Zhu Date: Tue, 25 Jun 2019 21:45:02 -0700 Subject: #5248 make vcpkg buildable as 'system' user (#7038) If we keep TMP, when run as 'system' user it is using Windows\Temp folder. --- scripts/cleanEnvironmentHelper.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/cleanEnvironmentHelper.ps1 b/scripts/cleanEnvironmentHelper.ps1 index a3792ecd3..fa5fe869d 100644 --- a/scripts/cleanEnvironmentHelper.ps1 +++ b/scripts/cleanEnvironmentHelper.ps1 @@ -1,6 +1,6 @@ # Capture environment variables for the System and User. Also add some special/built-in variables. # These will be used to synthesize a clean environment -$specialEnvironmentMap = @{ "SystemDrive"=$env:SystemDrive; "SystemRoot"=$env:SystemRoot; "UserProfile"=$env:UserProfile } # These are built-in and not set in the registry +$specialEnvironmentMap = @{ "SystemDrive"=$env:SystemDrive; "SystemRoot"=$env:SystemRoot; "UserProfile"=$env:UserProfile; "TMP"=$env:TMP } # These are built-in and not set in the registry $machineEnvironmentMap = [Environment]::GetEnvironmentVariables('Machine') # HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment $userEnvironmentMap = [Environment]::GetEnvironmentVariables('User') # HKEY_CURRENT_USER\Environment -- cgit v1.2.3 From fd87a081bb6acc33ec4e581f1ce60edcad80eda1 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 27 Jun 2019 00:00:48 +0200 Subject: Introduce an easier way to identify target systems... (#6846) * Introduce an easier way to identify target systems... * fix missing () * move the include around. also added vcpkg_common_functions to be automatically included * remove warning message * added remaining VCPKG_CMAKE_SYSTEM_NAMEs found only in vcpkg_configure_cmake to load a toolchain. * remove warning again from messed up merge --- scripts/cmake/vcpkg_common_definitions.cmake | 14 ++++++++++++++ scripts/ports.cmake | 2 ++ 2 files changed, 16 insertions(+) create mode 100644 scripts/cmake/vcpkg_common_definitions.cmake (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_common_definitions.cmake b/scripts/cmake/vcpkg_common_definitions.cmake new file mode 100644 index 000000000..8dc05de3c --- /dev/null +++ b/scripts/cmake/vcpkg_common_definitions.cmake @@ -0,0 +1,14 @@ +if (NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + set(VCPKG_TARGET_IS_WINDOWS 1) + if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + set(VCPKG_TARGET_IS_UWP 1) + endif() +elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Darwin") + set(VCPKG_TARGET_IS_OSX 1) +elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") + set(VCPKG_TARGET_IS_LINUX 1) +elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android") + set(VCPKG_TARGET_IS_ANDROID 1) +elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + set(VCPKG_TARGET_IS_FREEBSD 1) +endif() diff --git a/scripts/ports.cmake b/scripts/ports.cmake index 7a5f2749f..118cc9481 100644 --- a/scripts/ports.cmake +++ b/scripts/ports.cmake @@ -68,6 +68,8 @@ if(CMD MATCHES "^BUILD$") include(${CMAKE_TRIPLET_FILE}) set(TRIPLET_SYSTEM_ARCH ${VCPKG_TARGET_ARCHITECTURE}) + include(${CMAKE_CURRENT_LIST_DIR}/cmake/vcpkg_common_definitions.cmake) + include(${CMAKE_CURRENT_LIST_DIR}/cmake/vcpkg_common_functions.cmake) include(${CURRENT_PORT_DIR}/portfile.cmake) set(BUILD_INFO_FILE_PATH ${CURRENT_PACKAGES_DIR}/BUILD_INFO) -- cgit v1.2.3 From 35e985d3ccf60235bc4881df4d934610cd507090 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Thu, 27 Jun 2019 12:20:12 -0700 Subject: Triplets Overlay Implementation (#7053) * Triplets Overlay Implementation * Use cache for get_triplet_file_path() * Code cleanup --- scripts/ports.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/ports.cmake b/scripts/ports.cmake index 118cc9481..860d08893 100644 --- a/scripts/ports.cmake +++ b/scripts/ports.cmake @@ -32,7 +32,7 @@ endif() if(CMD MATCHES "^BUILD$") - set(CMAKE_TRIPLET_FILE ${VCPKG_ROOT_DIR}/triplets/${TARGET_TRIPLET}.cmake) + set(CMAKE_TRIPLET_FILE ${TARGET_TRIPLET_FILE}) if(NOT EXISTS ${CMAKE_TRIPLET_FILE}) message(FATAL_ERROR "Unsupported target triplet. Triplet file does not exist: ${CMAKE_TRIPLET_FILE}") endif() -- cgit v1.2.3 From b4675fd65a5baebe93d0e60e082ae43013ed246f Mon Sep 17 00:00:00 2001 From: myd7349 Date: Sat, 29 Jun 2019 01:17:39 +0800 Subject: [vcpkg] Add vcpkg_check_features (#6958) * [vcpkg] Add vcpkg_check_feature, vcpkg_check_features * [vcpkg] Remove vcpkg_check_feature * [oniguruma,xtensor] Use vcpkg_check_features --- scripts/cmake/vcpkg_check_features.cmake | 82 ++++++++++++++++++++++++++++++ scripts/cmake/vcpkg_common_functions.cmake | 1 + 2 files changed, 83 insertions(+) create mode 100644 scripts/cmake/vcpkg_check_features.cmake (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_check_features.cmake b/scripts/cmake/vcpkg_check_features.cmake new file mode 100644 index 000000000..c8848e987 --- /dev/null +++ b/scripts/cmake/vcpkg_check_features.cmake @@ -0,0 +1,82 @@ +## # vcpkg_check_features +## +## Check if one or more features are part of the package installation. +## +## ## Usage +## ```cmake +## vcpkg_check_features( +## +## [ ] +## ... +## ) +## ``` +## +## `vcpkg_check_features` accepts a list of (feature, output_variable) pairs. +## The syntax is similar to the `PROPERTIES` argument of `set_target_properties`. +## +## `vcpkg_check_features` will create a variable `FEATURE_OPTIONS` in the +## parent scope, which you can pass as a part of `OPTIONS` argument when +## calling functions like `vcpkg_config_cmake`: +## ```cmake +## vcpkg_config_cmake( +## SOURCE_PATH ${SOURCE_PATH} +## PREFER_NINJA +## OPTIONS +## -DBUILD_TESTING=ON +## ${FEATURE_OPTIONS} +## ) +## ``` +## +## ## Notes +## `vcpkg_check_features` is supposed to be called only once. Otherwise, the +## `FEATURE_OPTIONS` variable set by a previous call will be overwritten. +## +## ## Examples +## +## * [czmq](https://github.com/microsoft/vcpkg/blob/master/ports/czmq/portfile.cmake) +## * [oniguruma](https://github.com/microsoft/vcpkg/blob/master/ports/oniguruma/portfile.cmake) +## * [xtensor](https://github.com/microsoft/vcpkg/blob/master/ports/xtensor/portfile.cmake) +function(vcpkg_check_features) + cmake_parse_arguments(_vcf "" "" "" ${ARGN}) + + list(LENGTH ARGN _vcf_ARGC) + math(EXPR _vcf_INCORRECT_ARGN "${_vcf_ARGC} % 2") + + if(_vcf_INCORRECT_ARGN) + message(FATAL_ERROR "Called with incorrect number of arguments.") + endif() + + set(_vcf_IS_FEATURE_ARG ON) + set(_vcf_FEATURE_OPTIONS) + + # Process (feature, output_var) pairs + foreach(_vcf_ARG ${ARGN}) + if(_vcf_IS_FEATURE_ARG) + set(_vcf_FEATURE ${_vcf_ARG}) + + if(NOT ${_vcf_FEATURE} IN_LIST ALL_FEATURES) + message(FATAL_ERROR "Unknown feature: ${_vcf_FEATURE}") + endif() + + set(_vcf_IS_FEATURE_ARG OFF) + else() + set(_vcf_FEATURE_VAR ${_vcf_ARG}) + + if(${_vcf_FEATURE} IN_LIST FEATURES) + set(${_vcf_FEATURE_VAR} ON PARENT_SCOPE) + else() + set(${_vcf_FEATURE_VAR} OFF PARENT_SCOPE) + endif() + + list(APPEND _vcf_FEATURE_OPTIONS "-D${_vcf_FEATURE_VAR}=${${_vcf_FEATURE_VAR}}") + + set(_vcf_IS_FEATURE_ARG ON) + endif() + endforeach() + + if(DEFINED FEATURE_OPTIONS) + message(WARNING "FEATURE_OPTIONS is already defined and will be overwritten.") + endif() + + set(FEATURE_OPTIONS ${_vcf_FEATURE_OPTIONS} PARENT_SCOPE) +endfunction() diff --git a/scripts/cmake/vcpkg_common_functions.cmake b/scripts/cmake/vcpkg_common_functions.cmake index b99f8bee8..827d43abe 100644 --- a/scripts/cmake/vcpkg_common_functions.cmake +++ b/scripts/cmake/vcpkg_common_functions.cmake @@ -1,5 +1,6 @@ include(vcpkg_acquire_msys) include(vcpkg_add_to_path) +include(vcpkg_check_features) include(vcpkg_check_linkage) include(vcpkg_clean_msbuild) include(vcpkg_download_distfile) -- cgit v1.2.3 From a7bbee315276d37344a464eb95b02ca20ff1b0c2 Mon Sep 17 00:00:00 2001 From: myd7349 Date: Sat, 29 Jun 2019 23:29:13 +0800 Subject: [vcpkg] Update vcpkg_check_features document (#7091) * [oniguruma] Fix misusage of vcpkg_check_features * [xsimd] Use vcpkg_check_features --- scripts/cmake/vcpkg_check_features.cmake | 48 ++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 9 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_check_features.cmake b/scripts/cmake/vcpkg_check_features.cmake index c8848e987..115b1501f 100644 --- a/scripts/cmake/vcpkg_check_features.cmake +++ b/scripts/cmake/vcpkg_check_features.cmake @@ -1,6 +1,6 @@ ## # vcpkg_check_features ## -## Check if one or more features are part of the package installation. +## Check if one or more features are a part of the package installation. ## ## ## Usage ## ```cmake @@ -11,12 +11,9 @@ ## ) ## ``` ## -## `vcpkg_check_features` accepts a list of (feature, output_variable) pairs. -## The syntax is similar to the `PROPERTIES` argument of `set_target_properties`. +## `vcpkg_check_features` accepts a list of (feature, output_variable) pairs. If a feature is specified, the corresponding output variable will be set as `ON`, or `OFF` otherwise. The syntax is similar to the `PROPERTIES` argument of `set_target_properties`. ## -## `vcpkg_check_features` will create a variable `FEATURE_OPTIONS` in the -## parent scope, which you can pass as a part of `OPTIONS` argument when -## calling functions like `vcpkg_config_cmake`: +## `vcpkg_check_features` will create a variable `FEATURE_OPTIONS` in the parent scope, which you can pass as a part of `OPTIONS` argument when calling functions like `vcpkg_config_cmake`: ## ```cmake ## vcpkg_config_cmake( ## SOURCE_PATH ${SOURCE_PATH} @@ -28,13 +25,46 @@ ## ``` ## ## ## Notes -## `vcpkg_check_features` is supposed to be called only once. Otherwise, the -## `FEATURE_OPTIONS` variable set by a previous call will be overwritten. +## ```cmake +## vcpkg_check_features( ) +## ``` +## can be used as a replacement of: +## ```cmake +## if( IN_LIST FEATURES) +## set( ON) +## else() +## set( OFF) +## endif() +## ``` +## +## However, if you have a feature that was checked like this before: +## ```cmake +## if( IN_LIST FEATURES) +## set( OFF) +## else() +## set( ON) +## endif() +## ``` +## then you should not use `vcpkg_check_features` instead. [```oniguruma```](https://github.com/microsoft/vcpkg/blob/master/ports/oniguruma/portfile.cmake), for example, has a feature named `non-posix` which is checked with: +## ```cmake +## if("non-posix" IN_LIST FEATURES) +## set(ENABLE_POSIX_API OFF) +## else() +## set(ENABLE_POSIX_API ON) +## endif() +## ``` +## and by replacing these code with: +## ```cmake +## vcpkg_check_features(non-posix ENABLE_POSIX_API) +## ``` +## is totally wrong. +## +## `vcpkg_check_features` is supposed to be called only once. Otherwise, the `FEATURE_OPTIONS` variable set by a previous call will be overwritten. ## ## ## Examples ## ## * [czmq](https://github.com/microsoft/vcpkg/blob/master/ports/czmq/portfile.cmake) -## * [oniguruma](https://github.com/microsoft/vcpkg/blob/master/ports/oniguruma/portfile.cmake) +## * [xsimd](https://github.com/microsoft/vcpkg/blob/master/ports/xsimd/portfile.cmake) ## * [xtensor](https://github.com/microsoft/vcpkg/blob/master/ports/xtensor/portfile.cmake) function(vcpkg_check_features) cmake_parse_arguments(_vcf "" "" "" ${ARGN}) -- cgit v1.2.3 From e2049cb9754006b6a2abed781d34030e16702fad Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Sun, 30 Jun 2019 09:31:22 -0700 Subject: [vcpkg_configure_cmake] Add NO_CHARSET_FLAG option (#7074) * [vcpkg_configure_cmake] Add NO_CHARSET_FLAG option * [vcpkg_configure_cmake] Add documentation for new NO_CHARSET_FLAG option * [vcpkg_configure_cmake, windows toolchain] Handle NO_CHARSET_FLAG in toolchain * [build.cpp] Add Windows toolchain to package hash * [duilib,msix,thrift,tidy-html5] Use NO_CHARSET_FLAG to fix regressions --- scripts/cmake/vcpkg_configure_cmake.cmake | 9 ++++++++- scripts/toolchains/windows.cmake | 6 +++--- 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_configure_cmake.cmake b/scripts/cmake/vcpkg_configure_cmake.cmake index c17bd68c8..ab93c3075 100644 --- a/scripts/cmake/vcpkg_configure_cmake.cmake +++ b/scripts/cmake/vcpkg_configure_cmake.cmake @@ -51,7 +51,7 @@ ## * [poco](https://github.com/Microsoft/vcpkg/blob/master/ports/poco/portfile.cmake) ## * [opencv](https://github.com/Microsoft/vcpkg/blob/master/ports/opencv/portfile.cmake) function(vcpkg_configure_cmake) - cmake_parse_arguments(_csc "PREFER_NINJA;DISABLE_PARALLEL_CONFIGURE" "SOURCE_PATH;GENERATOR" "OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE" ${ARGN}) + cmake_parse_arguments(_csc "PREFER_NINJA;DISABLE_PARALLEL_CONFIGURE;NO_CHARSET_FLAG" "SOURCE_PATH;GENERATOR" "OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE" ${ARGN}) if(NOT VCPKG_PLATFORM_TOOLSET) message(FATAL_ERROR "Vcpkg has been updated with VS2017 support, however you need to rebuild vcpkg.exe by re-running bootstrap-vcpkg.bat\n") @@ -174,6 +174,11 @@ function(vcpkg_configure_cmake) else() message(FATAL_ERROR "You must set both the VCPKG_CXX_FLAGS and VCPKG_C_FLAGS") endif() + + set(VCPKG_SET_CHARSET_FLAG ON) + if(_csc_NO_CHARSET_FLAG) + set(VCPKG_SET_CHARSET_FLAG OFF) + endif() if(VCPKG_CHAINLOAD_TOOLCHAIN_FILE) list(APPEND _csc_OPTIONS "-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}") @@ -189,8 +194,10 @@ function(vcpkg_configure_cmake) list(APPEND _csc_OPTIONS "-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_ROOT_DIR}/scripts/toolchains/freebsd.cmake") endif() + list(APPEND _csc_OPTIONS "-DVCPKG_TARGET_TRIPLET=${TARGET_TRIPLET}" + "-DVCPKG_SET_CHARSET_FLAG=${VCPKG_SET_CHARSET_FLAG}" "-DVCPKG_PLATFORM_TOOLSET=${VCPKG_PLATFORM_TOOLSET}" "-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON" "-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON" diff --git a/scripts/toolchains/windows.cmake b/scripts/toolchains/windows.cmake index 12b1ae7f9..d5d7f8db5 100644 --- a/scripts/toolchains/windows.cmake +++ b/scripts/toolchains/windows.cmake @@ -9,7 +9,8 @@ if(NOT _CMAKE_IN_TRY_COMPILE) message(FATAL_ERROR "Invalid setting for VCPKG_CRT_LINKAGE: \"${VCPKG_CRT_LINKAGE}\". It must be \"static\" or \"dynamic\"") endif() - if(VCPKG_PLATFORM_TOOLSET MATCHES "v120") + set(CHARSET_FLAG "/utf-8") + if (NOT VCPKG_SET_CHARSET_FLAG OR VCPKG_PLATFORM_TOOLSET MATCHES "v120") # VS 2013 does not support /utf-8 set(CHARSET_FLAG) endif() @@ -17,7 +18,7 @@ if(NOT _CMAKE_IN_TRY_COMPILE) set(CMAKE_CXX_FLAGS " /DWIN32 /D_WINDOWS /W3 ${CHARSET_FLAG} /GR /EHsc /MP ${VCPKG_CXX_FLAGS}" CACHE STRING "") set(CMAKE_C_FLAGS " /DWIN32 /D_WINDOWS /W3 ${CHARSET_FLAG} /MP ${VCPKG_C_FLAGS}" CACHE STRING "") set(CMAKE_RC_FLAGS "-c65001 /DWIN32" CACHE STRING "") - + unset(CHARSET_FLAG) set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG ${VCPKG_CRT_LINK_FLAG_PREFIX}d /Z7 /Ob0 /Od /RTC1 ${VCPKG_CXX_FLAGS_DEBUG}" CACHE STRING "") @@ -27,5 +28,4 @@ if(NOT _CMAKE_IN_TRY_COMPILE) set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS}" CACHE STRING "") set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS}" CACHE STRING "") - endif() -- cgit v1.2.3 From b26cb1a041177ab113c723d89a4ef2af5614a9e5 Mon Sep 17 00:00:00 2001 From: Leonid Pospelov Date: Mon, 1 Jul 2019 22:30:24 +0200 Subject: [vcpkg] Use spaces instead of semicolons in the output (#7080) * Use spaces instead of semicolons in the output * Add prettify_command macro * Move pretty_command macro to a separate file --- scripts/cmake/vcpkg_common_functions.cmake | 1 + scripts/cmake/vcpkg_execute_build_process.cmake | 4 +++- scripts/cmake/vcpkg_execute_required_process.cmake | 4 +++- .../vcpkg_execute_required_process_repeat.cmake | 4 +++- scripts/cmake/vcpkg_prettify_command.cmake | 26 ++++++++++++++++++++++ 5 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 scripts/cmake/vcpkg_prettify_command.cmake (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_common_functions.cmake b/scripts/cmake/vcpkg_common_functions.cmake index 827d43abe..515b2bafe 100644 --- a/scripts/cmake/vcpkg_common_functions.cmake +++ b/scripts/cmake/vcpkg_common_functions.cmake @@ -32,3 +32,4 @@ include(vcpkg_get_windows_sdk) include(vcpkg_replace_string) include(vcpkg_from_git) include(vcpkg_test_cmake) +include(vcpkg_prettify_command) diff --git a/scripts/cmake/vcpkg_execute_build_process.cmake b/scripts/cmake/vcpkg_execute_build_process.cmake index d440ba2f6..9da6cec9f 100644 --- a/scripts/cmake/vcpkg_execute_build_process.cmake +++ b/scripts/cmake/vcpkg_execute_build_process.cmake @@ -31,6 +31,7 @@ ## ## Examples ## ## * [icu](https://github.com/Microsoft/vcpkg/blob/master/ports/icu/portfile.cmake) +include(vcpkg_prettify_command) function(vcpkg_execute_build_process) cmake_parse_arguments(_ebp "" "WORKING_DIRECTORY;LOGNAME" "COMMAND;NO_PARALLEL_COMMAND" ${ARGN}) @@ -131,8 +132,9 @@ function(vcpkg_execute_build_process) file(TO_NATIVE_PATH "${LOG}" NATIVE_LOG) list(APPEND STRINGIFIED_LOGS " ${NATIVE_LOG}\n") endforeach() + vcpkg_prettify_command(_ebp_COMMAND _ebp_COMMAND_PRETTY) message(FATAL_ERROR - " Command failed: ${_ebp_COMMAND}\n" + " Command failed: ${_ebp_COMMAND_PRETTY}\n" " Working Directory: ${_ebp_WORKING_DIRECTORY}\n" " See logs for more information:\n" ${STRINGIFIED_LOGS}) diff --git a/scripts/cmake/vcpkg_execute_required_process.cmake b/scripts/cmake/vcpkg_execute_required_process.cmake index 2e9ba7058..e65d1970a 100644 --- a/scripts/cmake/vcpkg_execute_required_process.cmake +++ b/scripts/cmake/vcpkg_execute_required_process.cmake @@ -28,6 +28,7 @@ ## * [openssl](https://github.com/Microsoft/vcpkg/blob/master/ports/openssl/portfile.cmake) ## * [boost](https://github.com/Microsoft/vcpkg/blob/master/ports/boost/portfile.cmake) ## * [qt5](https://github.com/Microsoft/vcpkg/blob/master/ports/qt5/portfile.cmake) +include(vcpkg_prettify_command) function(vcpkg_execute_required_process) cmake_parse_arguments(vcpkg_execute_required_process "" "WORKING_DIRECTORY;LOGNAME" "COMMAND" ${ARGN}) set(LOG_OUT "${CURRENT_BUILDTREES_DIR}/${vcpkg_execute_required_process_LOGNAME}-out.log") @@ -53,8 +54,9 @@ function(vcpkg_execute_required_process) file(TO_NATIVE_PATH "${LOG}" NATIVE_LOG) list(APPEND STRINGIFIED_LOGS " ${NATIVE_LOG}\n") endforeach() + vcpkg_prettify_command(vcpkg_execute_required_process_COMMAND vcpkg_execute_required_process_COMMAND_PRETTY) message(FATAL_ERROR - " Command failed: ${vcpkg_execute_required_process_COMMAND}\n" + " Command failed: ${vcpkg_execute_required_process_COMMAND_PRETTY}\n" " Working Directory: ${vcpkg_execute_required_process_WORKING_DIRECTORY}\n" " Error code: ${error_code}\n" " See logs for more information:\n" diff --git a/scripts/cmake/vcpkg_execute_required_process_repeat.cmake b/scripts/cmake/vcpkg_execute_required_process_repeat.cmake index 0c77c3913..ca11e8ea4 100644 --- a/scripts/cmake/vcpkg_execute_required_process_repeat.cmake +++ b/scripts/cmake/vcpkg_execute_required_process_repeat.cmake @@ -1,4 +1,5 @@ # Usage: vcpkg_execute_required_process_repeat(COUNT COMMAND [...] WORKING_DIRECTORY LOGNAME ) +include(vcpkg_prettify_command) function(vcpkg_execute_required_process_repeat) cmake_parse_arguments(vcpkg_execute_required_process_repeat "" "COUNT;WORKING_DIRECTORY;LOGNAME" "COMMAND" ${ARGN}) #debug_message("vcpkg_execute_required_process_repeat(${vcpkg_execute_required_process_repeat_COMMAND})") @@ -18,8 +19,9 @@ function(vcpkg_execute_required_process_repeat) endif() endforeach(loop_count) if (NOT SUCCESSFUL_EXECUTION) + vcpkg_prettify_command(vcpkg_execute_required_process_repeat_COMMAND vcpkg_execute_required_process_repeat_COMMAND_PRETTY) message(FATAL_ERROR - " Command failed: ${vcpkg_execute_required_process_repeat_COMMAND}\n" + " Command failed: ${vcpkg_execute_required_process_repeat_COMMAND_PRETTY}\n" " Working Directory: ${vcpkg_execute_required_process_repeat_WORKING_DIRECTORY}\n" " See logs for more information:\n" " ${NATIVE_BUILDTREES_DIR}\\${vcpkg_execute_required_process_repeat_LOGNAME}-out.log\n" diff --git a/scripts/cmake/vcpkg_prettify_command.cmake b/scripts/cmake/vcpkg_prettify_command.cmake new file mode 100644 index 000000000..9d9a2b798 --- /dev/null +++ b/scripts/cmake/vcpkg_prettify_command.cmake @@ -0,0 +1,26 @@ +## # vcpkg_prettify_command +## +## Turns list of command arguments into a formatted string. +## +## ## Usage +## ```cmake +## vcpkg_prettify_command() +## ``` +## +## ## Examples +## +## * `scripts/cmake/vcpkg_execute_build_process.cmake` +## * `scripts/cmake/vcpkg_execute_required_process.cmake` +## * `scripts/cmake/vcpkg_execute_required_process_repeat.cmake` + +macro(vcpkg_prettify_command INPUT_VAR OUTPUT_VAR) + set(${OUTPUT_VAR} "") + foreach(v ${${INPUT_VAR}}) + if(${v} MATCHES "( )") + list(APPEND ${OUTPUT_VAR} \"${v}\") + else() + list(APPEND ${OUTPUT_VAR} ${v}) + endif() + endforeach() + list(JOIN ${OUTPUT_VAR} " " ${OUTPUT_VAR}) +endmacro() -- cgit v1.2.3 From 12587b1b882905431d19052b2b068e499a1d9791 Mon Sep 17 00:00:00 2001 From: YenForYang Date: Mon, 1 Jul 2019 15:31:17 -0500 Subject: Update python2, python3, perl, aria2, ninja, ruby, 7z (#6791) --- scripts/cmake/vcpkg_find_acquire_program.cmake | 40 +++++++++++++------------- 1 file changed, 20 insertions(+), 20 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 024840223..0399fc50c 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -54,9 +54,9 @@ function(vcpkg_find_acquire_program VAR) set(PATHS ${DOWNLOADS}/tools/perl/perl/bin) set(BREW_PACKAGE_NAME "perl") set(APT_PACKAGE_NAME "perl") - set(URL "http://strawberryperl.com/download/5.24.1.1/strawberry-perl-5.24.1.1-32bit-portable.zip") - set(ARCHIVE "strawberry-perl-5.24.1.1-32bit-portable.zip") - set(HASH a6e685ea24376f50db5f06c5b46075f1d3be25168fa1f27fa9b02e2ac017826cee62a2b43562f9b6c989337a231ba914416c110075457764de2d11f99d5e0f26) + set(URL "http://strawberryperl.com/download/5.30.0.1/strawberry-perl-5.30.0.1-32bit.zip") + set(ARCHIVE "strawberry-perl-5.30.0.1-32bit.zip") + set(HASH d353d3dc743ebdc6d1e9f6f2b7a6db3c387c1ce6c890bae8adc8ae5deae8404f4c5e3cf249d1e151e7256d4c5ee9cd317e6c41f3b6f244340de18a24b938e0c4) elseif(VAR MATCHES "NASM") set(PROGNAME nasm) set(PATHS ${DOWNLOADS}/tools/nasm/nasm-2.14) @@ -92,9 +92,9 @@ function(vcpkg_find_acquire_program VAR) set(PROGNAME python) set(SUBDIR "python2") set(PATHS ${DOWNLOADS}/tools/python/${SUBDIR}) - set(URL "https://www.python.org/ftp/python/2.7.14/python-2.7.14.msi") + set(URL "https://www.python.org/ftp/python/2.7.16/python-2.7.16.msi") set(ARCHIVE "python2.msi") - set(HASH 8c3ad6e527742d99ba96dcfd1098861b14e7207b80d51a54e9b410ab2f36e44e05561ea1527d8e92b3e10808311536260bd9e82db0da3b513fb1be18e108510e) + set(HASH c34a6fa2438682104dccb53650a2bdb79eac7996deff075201a0f71bb835d60d3ed866652a1931f15a29510fe8e1009ac04e423b285122d2e5747fefc4c10254) else() set(PROGNAME python2) set(BREW_PACKAGE_NAME "python2") @@ -102,10 +102,10 @@ function(vcpkg_find_acquire_program VAR) endif() elseif(VAR MATCHES "RUBY") set(PROGNAME "ruby") - set(PATHS ${DOWNLOADS}/tools/ruby/rubyinstaller-2.4.1-1-x86/bin) - set(URL https://github.com/oneclick/rubyinstaller2/releases/download/2.4.1-1/rubyinstaller-2.4.1-1-x86.7z) - set(ARCHIVE rubyinstaller-2.4.1-1-x86.7z) - set(HASH b51112e9b58cfcbe8cec0607e8a16fff6a943d9b4e31b2a7fbf5df5f83f050bf0a4812d3dd6000ff21a3d5fd219cd0a309c58ac1c1db950a9b0072405e4b70f5) + set(PATHS ${DOWNLOADS}/tools/ruby/rubyinstaller-2.6.3-1-x86/bin) + set(URL https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.3-1/rubyinstaller-2.6.3-1-x86.7z) + set(ARCHIVE rubyinstaller-2.6.3-1-x86.7z) + set(HASH 4322317dd02ce13527bf09d6e6a7787ca3814ea04337107d28af1ac360bd272504b32e20ed3ea84eb5b21dae7b23bfe5eb0e529b6b0aa21a1a2bbb0a542d7aec) elseif(VAR MATCHES "JOM") set(PROGNAME jom) set(SUBDIR "jom-1.1.3") @@ -116,12 +116,12 @@ function(vcpkg_find_acquire_program VAR) elseif(VAR MATCHES "7Z") set(PROGNAME 7z) set(PATHS "${PROGRAM_FILES_PLATFORM_BITNESS}/7-Zip" "${PROGRAM_FILES_32_BIT}/7-Zip" "${DOWNLOADS}/tools/7z/Files/7-Zip") - set(URL "http://7-zip.org/a/7z1604.msi") - set(ARCHIVE "7z1604.msi") - set(HASH 556f95f7566fe23704d136239e4cf5e2a26f939ab43b44145c91b70d031a088d553e5c21301f1242a2295dcde3143b356211f0108c68e65eef8572407618326d) + set(URL "https://7-zip.org/a/7z1900.msi") + set(ARCHIVE "7z1900.msi") + set(HASH f73b04e2d9f29d4393fde572dcf3c3f0f6fa27e747e5df292294ab7536ae24c239bf917689d71eb10cc49f6b9a4ace26d7c122ee887d93cc935f268c404e9067) elseif(VAR MATCHES "NINJA") set(PROGNAME ninja) - set(SUBDIR "ninja-1.8.2") + set(SUBDIR "ninja-1.9.0") if(CMAKE_HOST_WIN32) set(PATHS "${DOWNLOADS}/tools/ninja/${SUBDIR}") elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") @@ -133,9 +133,9 @@ function(vcpkg_find_acquire_program VAR) endif() set(BREW_PACKAGE_NAME "ninja") set(APT_PACKAGE_NAME "ninja-build") - set(URL "https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-win.zip") - set(ARCHIVE "ninja-1.8.2-win.zip") - set(HASH 9b9ce248240665fcd6404b989f3b3c27ed9682838225e6dc9b67b551774f251e4ff8a207504f941e7c811e7a8be1945e7bcb94472a335ef15e23a0200a32e6d5) + set(URL "https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-win.zip") + set(ARCHIVE "ninja-1.9.0-win.zip") + set(HASH 1c050e602ec63d4dcf44d9ab3d2d02ac731b4b2977bc0b420a21e85604487f58ec8d3045941d4153ef06ab00c175ca7cf9d57b8e20a757528290e135639962ac) elseif(VAR MATCHES "NUGET") set(PROGNAME nuget) set(PATHS "${DOWNLOADS}/tools/nuget") @@ -229,10 +229,10 @@ function(vcpkg_find_acquire_program VAR) # Download Tools elseif(VAR MATCHES "ARIA2") set(PROGNAME aria2c) - set(PATHS ${DOWNLOADS}/tools/aria2c/aria2-1.33.1-win-32bit-build1) - set(URL "https://github.com/aria2/aria2/releases/download/release-1.33.1/aria2-1.33.1-win-32bit-build1.zip") - set(ARCHIVE "aria2-1.33.1-win-32bit-build1.zip") - set(HASH 2456176ba3d506a07cf0cc4f61f080e1ff8cb4106426d66f354c5bb67a9a8720b5ddb26904275e61b1f623c932355f7dcde4cd17556cc895f11293c23c3a9bf3) + set(PATHS ${DOWNLOADS}/tools/aria2c/aria2-1.34.0-win-32bit-build1) + set(URL "https://github.com/aria2/aria2/releases/download/release-1.34.0/aria2-1.34.0-win-32bit-build1.zip") + set(ARCHIVE "aria2-1.34.0-win-32bit-build1.zip") + set(HASH 2a5480d503ac6e8203040c7e516a3395028520da05d0ebf3a2d56d5d24ba5d17630e8f318dd4e3cc2094cc4668b90108fb58e8b986b1ffebd429995058063c27) else() message(FATAL "unknown tool ${VAR} -- unable to acquire.") endif() -- cgit v1.2.3 From d2b3ef9e88fcb51b7273a76abe6e78d49d73a329 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 1 Jul 2019 22:39:51 -0700 Subject: Fix vcpkg_from_git (#7082) * [vcpkg_from_git/fdlibm] Fix flaky sha256 issues * [doc] regenerate docs --- scripts/cmake/vcpkg_from_git.cmake | 61 ++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 32 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_from_git.cmake b/scripts/cmake/vcpkg_from_git.cmake index 2fc66b279..0db818f80 100644 --- a/scripts/cmake/vcpkg_from_git.cmake +++ b/scripts/cmake/vcpkg_from_git.cmake @@ -8,7 +8,6 @@ ## OUT_SOURCE_PATH ## URL ## REF <59f7335e4d...> -## SHA512 ## [PATCHES ...] ## ) ## ``` @@ -20,17 +19,10 @@ ## This should be set to `SOURCE_PATH` by convention. ## ## ### URL -## The url of the git repository. -## -## ### SHA512 -## The SHA512 hash that should match the archive form of the commit. -## -## This is most easily determined by first setting it to `0`, then trying to build the port. The error message will contain the full hash, which can be copied back into the portfile. +## The url of the git repository. Must start with `https`. ## ## ### REF -## A stable git commit-ish (ideally a tag or commit) that will not change contents. **This should not be a branch.** -## -## For repositories without official releases, this can be set to the full commit id of the current latest master. +## The git sha of the commit to download. ## ## ### PATCHES ## A list of patches to be applied to the extracted sources. @@ -38,14 +30,14 @@ ## Relative paths are based on the port directory. ## ## ## Notes: -## `OUT_SOURCE_PATH`, `REF`, `SHA512`, and `URL` must be specified. +## `OUT_SOURCE_PATH`, `REF`, and `URL` must be specified. ## ## ## Examples: ## ## * [fdlibm](https://github.com/Microsoft/vcpkg/blob/master/ports/fdlibm/portfile.cmake) function(vcpkg_from_git) - set(oneValueArgs OUT_SOURCE_PATH URL REF SHA512) + set(oneValueArgs OUT_SOURCE_PATH URL REF) set(multipleValuesArgs PATCHES) cmake_parse_arguments(_vdud "" "${oneValueArgs}" "${multipleValuesArgs}" ${ARGN}) @@ -57,12 +49,15 @@ function(vcpkg_from_git) message(FATAL_ERROR "The git url must be specified") endif() - if(NOT DEFINED _vdud_REF) - message(FATAL_ERROR "The git ref must be specified.") + if( NOT _vdud_URL MATCHES "^https:") + # vcpkg_from_git does not support a SHA256 parameter because hashing the git archive is + # not stable across all supported platforms. The tradeoff is to require https to download + # and the ref to be the git sha (i.e. not things that can change like a label) + message(FATAL_ERROR "The git url must be https") endif() - if(NOT DEFINED _vdud_SHA512) - message(FATAL_ERROR "vcpkg_from_git requires a SHA512 argument. If you do not know the SHA512, add it as 'SHA512 0' and re-run this command.") + if(NOT DEFINED _vdud_REF) + message(FATAL_ERROR "The git ref must be specified.") endif() # using .tar.gz instead of .zip because the hash of the latter is affected by timezone. @@ -71,18 +66,6 @@ function(vcpkg_from_git) set(ARCHIVE "${DOWNLOADS}/${PORT}-${SANITIZED_REF}.tar.gz") set(TEMP_SOURCE_PATH "${CURRENT_BUILDTREES_DIR}/src/${SANITIZED_REF}") - function(test_hash FILE_PATH FILE_KIND CUSTOM_ERROR_ADVICE) - file(SHA512 ${FILE_PATH} FILE_HASH) - if(NOT FILE_HASH STREQUAL _vdud_SHA512) - message(FATAL_ERROR - "\nFile does not have expected hash:\n" - " File path: [ ${FILE_PATH} ]\n" - " Expected hash: [ ${_vdud_SHA512} ]\n" - " Actual hash: [ ${FILE_HASH} ]\n" - "${CUSTOM_ERROR_ADVICE}\n") - endif() - endfunction() - if(NOT EXISTS "${ARCHIVE}") if(_VCPKG_NO_DOWNLOADS) message(FATAL_ERROR "Downloads are disabled, but '${ARCHIVE}' does not exist.") @@ -93,26 +76,40 @@ function(vcpkg_from_git) vcpkg_execute_required_process( COMMAND ${GIT} init git-tmp WORKING_DIRECTORY ${DOWNLOADS} - LOGNAME git-init + LOGNAME git-init-${TARGET_TRIPLET} ) vcpkg_execute_required_process( COMMAND ${GIT} fetch ${_vdud_URL} ${_vdud_REF} --depth 1 -n WORKING_DIRECTORY ${DOWNLOADS}/git-tmp - LOGNAME git-fetch + LOGNAME git-fetch-${TARGET_TRIPLET} + ) + execute_process( + COMMAND ${GIT} rev-parse FETCH_HEAD + OUTPUT_VARIABLE REV_PARSE_HEAD + ERROR_VARIABLE REV_PARSE_HEAD + RESULT_VARIABLE error_code + WORKING_DIRECTORY ${DOWNLOADS}/git-tmp ) + if(error_code) + message(FATAL_ERROR "unable to determine FETCH_HEAD after fetching git repository") + endif() + string(REGEX REPLACE "\n$" "" REV_PARSE_HEAD "${REV_PARSE_HEAD}") + if(NOT REV_PARSE_HEAD STREQUAL _vdud_REF) + message(FATAL_ERROR "REF (${_vdud_REF}) does not match FETCH_HEAD (${REV_PARSE_HEAD})") + endif() + file(MAKE_DIRECTORY "${DOWNLOADS}/temp") vcpkg_execute_required_process( COMMAND ${GIT} archive FETCH_HEAD -o "${TEMP_ARCHIVE}" WORKING_DIRECTORY ${DOWNLOADS}/git-tmp LOGNAME git-archive ) - test_hash("${TEMP_ARCHIVE}" "downloaded repo" "") + get_filename_component(downloaded_file_dir "${ARCHIVE}" DIRECTORY) file(MAKE_DIRECTORY "${downloaded_file_dir}") file(RENAME "${TEMP_ARCHIVE}" "${ARCHIVE}") else() message(STATUS "Using cached ${ARCHIVE}") - test_hash("${ARCHIVE}" "cached file" "Please delete the file and retry if this file should be downloaded again.") endif() vcpkg_extract_source_archive_ex( -- cgit v1.2.3 From 4642a4fc6c4437b7d68294ab4e34d3fe38051244 Mon Sep 17 00:00:00 2001 From: cskrisz Date: Tue, 2 Jul 2019 22:47:50 +0200 Subject: Fix Python3 tool on Windows (#7051) * Delete python37._pth from python3-embed * Add version number to SUBDIR * [open62541] Use Python in version subdir --- scripts/cmake/vcpkg_find_acquire_program.cmake | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 0399fc50c..fcfa6d0a1 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -45,6 +45,7 @@ function(vcpkg_find_acquire_program VAR) unset(_vfa_RENAME) unset(SUBDIR) unset(REQUIRED_INTERPRETER) + unset(POST_INSTALL_COMMAND) vcpkg_get_program_files_platform_bitness(PROGRAM_FILES_PLATFORM_BITNESS) vcpkg_get_program_files_32_bit(PROGRAM_FILES_32_BIT) @@ -77,11 +78,12 @@ function(vcpkg_find_acquire_program VAR) elseif(VAR MATCHES "PYTHON3") if(CMAKE_HOST_WIN32) set(PROGNAME python) - set(SUBDIR "python3") + set(SUBDIR "python-3.7.3") set(PATHS ${DOWNLOADS}/tools/python/${SUBDIR}) set(URL "https://www.python.org/ftp/python/3.7.3/python-3.7.3-embed-win32.zip") set(ARCHIVE "python-3.7.3-embed-win32.zip") set(HASH 2c1b1f0a29d40a91771ae21a5f733eedc10984cd182cb10c2793bbd24191a89f20612a3f23c34047f37fb06369016bfd4a52915ed1b4a56f8bd2b4ca6994eb31) + set(POST_INSTALL_COMMAND ${CMAKE_COMMAND} -E remove python37._pth) else() set(PROGNAME python3) set(BREW_PACKAGE_NAME "python") @@ -291,6 +293,14 @@ function(vcpkg_find_acquire_program VAR) endif() endif() + if(DEFINED POST_INSTALL_COMMAND) + vcpkg_execute_required_process( + COMMAND ${POST_INSTALL_COMMAND} + WORKING_DIRECTORY ${PROG_PATH_SUBDIR} + LOGNAME ${VAR}-tool-post-install + ) + endif() + do_find() endif() -- cgit v1.2.3 From 24b1618b292541086cc97820df8619d6ede046f5 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 2 Jul 2019 15:12:47 -0700 Subject: revert ninja update (#7135) Causing failures on Linux, revert until investigation is complete. --- scripts/cmake/vcpkg_find_acquire_program.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index fcfa6d0a1..737e332bc 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -123,7 +123,7 @@ function(vcpkg_find_acquire_program VAR) set(HASH f73b04e2d9f29d4393fde572dcf3c3f0f6fa27e747e5df292294ab7536ae24c239bf917689d71eb10cc49f6b9a4ace26d7c122ee887d93cc935f268c404e9067) elseif(VAR MATCHES "NINJA") set(PROGNAME ninja) - set(SUBDIR "ninja-1.9.0") + set(SUBDIR "ninja-1.8.2") if(CMAKE_HOST_WIN32) set(PATHS "${DOWNLOADS}/tools/ninja/${SUBDIR}") elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") @@ -135,9 +135,9 @@ function(vcpkg_find_acquire_program VAR) endif() set(BREW_PACKAGE_NAME "ninja") set(APT_PACKAGE_NAME "ninja-build") - set(URL "https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-win.zip") - set(ARCHIVE "ninja-1.9.0-win.zip") - set(HASH 1c050e602ec63d4dcf44d9ab3d2d02ac731b4b2977bc0b420a21e85604487f58ec8d3045941d4153ef06ab00c175ca7cf9d57b8e20a757528290e135639962ac) + set(URL "https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-win.zip") + set(ARCHIVE "ninja-1.8.2-win.zip") + set(HASH 9b9ce248240665fcd6404b989f3b3c27ed9682838225e6dc9b67b551774f251e4ff8a207504f941e7c811e7a8be1945e7bcb94472a335ef15e23a0200a32e6d5) elseif(VAR MATCHES "NUGET") set(PROGNAME nuget) set(PATHS "${DOWNLOADS}/tools/nuget") -- cgit v1.2.3 From 2b8e225b2ea83a3138d4b7345f104c1bd9a129dd Mon Sep 17 00:00:00 2001 From: Robert Schumacher Date: Sat, 6 Jul 2019 13:29:46 -0700 Subject: [vcpkg] Fix powershell font corruption bug (#7094) * [vcpkg] Fix font corruption bug on Windows by downloading Powershell Core * [vcpkg] Rename subtool to powershell-core * [vcpkg] Add missing includes to project files --- scripts/vcpkgTools.xml | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'scripts') diff --git a/scripts/vcpkgTools.xml b/scripts/vcpkgTools.xml index c7d5c218a..8f90ce8dc 100644 --- a/scripts/vcpkgTools.xml +++ b/scripts/vcpkgTools.xml @@ -114,4 +114,11 @@ 56a55ae9a6b5dfad4f28f9fe9b8114f1475c999d2f07fff7efa7375f987e74b498e9b63c41fc6c577756f15f3a1459c6d5d367902de3bedebdf9a9fd49089a86 ninja-freebsd-1.8.2.zip + + 6.2.1 + pwsh.exe + https://github.com/PowerShell/PowerShell/releases/download/v6.2.1/PowerShell-6.2.1-win-x86.zip + ab1effc926b000a6adc12198a1886514ec203621a53b0cd7ec1cd9a8225dccda7e857feaabcfba4004bea73129b986abaad777c4573f44e0af70411226ce08b0 + PowerShell-6.2.1-win-x86.zip + -- cgit v1.2.3 From 1053d5b386778536b64a42afd1198e91581721bc Mon Sep 17 00:00:00 2001 From: myd7349 Date: Sun, 7 Jul 2019 15:33:46 +0800 Subject: [vcpkg] Fix incorrect setting of FEATURE_OPTIONS (#7158) Setting a variable in PARENT_SCOPE will not make the variable also visible in current scope, which, as a result, causes FEATURE_OPTIONS to be set incorrectly. --- scripts/cmake/vcpkg_check_features.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_check_features.cmake b/scripts/cmake/vcpkg_check_features.cmake index 115b1501f..d089ac5b1 100644 --- a/scripts/cmake/vcpkg_check_features.cmake +++ b/scripts/cmake/vcpkg_check_features.cmake @@ -94,12 +94,12 @@ function(vcpkg_check_features) if(${_vcf_FEATURE} IN_LIST FEATURES) set(${_vcf_FEATURE_VAR} ON PARENT_SCOPE) + list(APPEND _vcf_FEATURE_OPTIONS "-D${_vcf_FEATURE_VAR}=ON") else() set(${_vcf_FEATURE_VAR} OFF PARENT_SCOPE) + list(APPEND _vcf_FEATURE_OPTIONS "-D${_vcf_FEATURE_VAR}=OFF") endif() - list(APPEND _vcf_FEATURE_OPTIONS "-D${_vcf_FEATURE_VAR}=${${_vcf_FEATURE_VAR}}") - set(_vcf_IS_FEATURE_ARG ON) endif() endforeach() -- cgit v1.2.3 From e7aafb7742ef299094183df5bc20cc17b504366d Mon Sep 17 00:00:00 2001 From: YenForYang Date: Tue, 9 Jul 2019 16:53:48 -0500 Subject: Cleanup vcpkg_configure_cmake.cmake (#6792) --- scripts/cmake/vcpkg_configure_cmake.cmake | 170 ++++++++++++++++-------------- 1 file changed, 89 insertions(+), 81 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_configure_cmake.cmake b/scripts/cmake/vcpkg_configure_cmake.cmake index ab93c3075..37362a5a2 100644 --- a/scripts/cmake/vcpkg_configure_cmake.cmake +++ b/scripts/cmake/vcpkg_configure_cmake.cmake @@ -17,20 +17,22 @@ ## ## ## Parameters ## ### SOURCE_PATH -## Specifies the directory containing the `CMakeLists.txt`. By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. +## Specifies the directory containing the `CMakeLists.txt`. +## By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. ## ## ### PREFER_NINJA -## Indicates that, when available, Vcpkg should use Ninja to perform the build. This should be specified unless the port is known to not work under Ninja. +## Indicates that, when available, Vcpkg should use Ninja to perform the build. +## This should be specified unless the port is known to not work under Ninja. ## ## ### DISABLE_PARALLEL_CONFIGURE ## Disables running the CMake configure step in parallel. -## ## This is needed for libraries which write back into their source directory during configure. ## ## ### GENERATOR ## Specifies the precise generator to use. ## -## This is useful if some project-specific buildsystem has been wrapped in a cmake script that won't perform an actual build. If used for this purpose, it should be set to "NMake Makefiles". +## This is useful if some project-specific buildsystem has been wrapped in a cmake script that won't perform an actual build. +## If used for this purpose, it should be set to "NMake Makefiles". ## ## ### OPTIONS ## Additional options passed to CMake during the configuration. @@ -51,31 +53,41 @@ ## * [poco](https://github.com/Microsoft/vcpkg/blob/master/ports/poco/portfile.cmake) ## * [opencv](https://github.com/Microsoft/vcpkg/blob/master/ports/opencv/portfile.cmake) function(vcpkg_configure_cmake) - cmake_parse_arguments(_csc "PREFER_NINJA;DISABLE_PARALLEL_CONFIGURE;NO_CHARSET_FLAG" "SOURCE_PATH;GENERATOR" "OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE" ${ARGN}) + cmake_parse_arguments(_csc + "PREFER_NINJA;DISABLE_PARALLEL_CONFIGURE;NO_CHARSET_FLAG" + "SOURCE_PATH;GENERATOR" + "OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE" + ${ARGN} + ) if(NOT VCPKG_PLATFORM_TOOLSET) - message(FATAL_ERROR "Vcpkg has been updated with VS2017 support, however you need to rebuild vcpkg.exe by re-running bootstrap-vcpkg.bat\n") - endif() - - if(DEFINED ENV{PROCESSOR_ARCHITEW6432}) - set(_csc_HOST_ARCHITECTURE $ENV{PROCESSOR_ARCHITEW6432}) - else() - set(_csc_HOST_ARCHITECTURE $ENV{PROCESSOR_ARCHITECTURE}) + message(FATAL_ERROR "Vcpkg has been updated with VS2017 support; " + "however, vcpkg.exe must be rebuilt by re-running bootstrap-vcpkg.bat\n") endif() if(CMAKE_HOST_WIN32) set(_PATHSEP ";") + if(DEFINED ENV{PROCESSOR_ARCHITEW6432}) + set(_csc_HOST_ARCHITECTURE $ENV{PROCESSOR_ARCHITEW6432}) + else() + set(_csc_HOST_ARCHITECTURE $ENV{PROCESSOR_ARCHITECTURE}) + endif() else() set(_PATHSEP ":") endif() 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(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + elseif(_TARGETTING_UWP) # Ninja and MSBuild have many differences when targetting UWP, so use MSBuild to maximize existing compatibility set(NINJA_CAN_BE_USED OFF) endif() @@ -84,43 +96,43 @@ 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 VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")) + elseif(VCPKG_CHAINLOAD_TOOLCHAIN_FILE OR (VCPKG_CMAKE_SYSTEM_NAME AND NOT _TARGETTING_UWP)) set(GENERATOR "Ninja") - elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x86" AND VCPKG_PLATFORM_TOOLSET MATCHES "v120") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v120") set(GENERATOR "Visual Studio 12 2013") - elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x64" AND VCPKG_PLATFORM_TOOLSET MATCHES "v120") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v120") set(GENERATOR "Visual Studio 12 2013 Win64") - elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "arm" AND VCPKG_PLATFORM_TOOLSET MATCHES "v120") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v120") set(GENERATOR "Visual Studio 12 2013 ARM") - elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x86" AND VCPKG_PLATFORM_TOOLSET MATCHES "v140") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v140") set(GENERATOR "Visual Studio 14 2015") - elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x64" AND VCPKG_PLATFORM_TOOLSET MATCHES "v140") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v140") set(GENERATOR "Visual Studio 14 2015 Win64") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" AND VCPKG_PLATFORM_TOOLSET MATCHES "v140") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v140") set(GENERATOR "Visual Studio 14 2015 ARM") - elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x86" AND VCPKG_PLATFORM_TOOLSET MATCHES "v141") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v141") set(GENERATOR "Visual Studio 15 2017") - elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x64" AND VCPKG_PLATFORM_TOOLSET MATCHES "v141") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v141") set(GENERATOR "Visual Studio 15 2017 Win64") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" AND VCPKG_PLATFORM_TOOLSET MATCHES "v141") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v141") set(GENERATOR "Visual Studio 15 2017 ARM") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64" AND VCPKG_PLATFORM_TOOLSET MATCHES "v141") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v141") set(GENERATOR "Visual Studio 15 2017") set(ARCH "ARM64") - elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x86" AND VCPKG_PLATFORM_TOOLSET MATCHES "v142") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v142") set(GENERATOR "Visual Studio 16 2019") set(ARCH "Win32") - elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x64" AND VCPKG_PLATFORM_TOOLSET MATCHES "v142") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v142") set(GENERATOR "Visual Studio 16 2019") set(ARCH "x64") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" AND VCPKG_PLATFORM_TOOLSET MATCHES "v142") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v142") set(GENERATOR "Visual Studio 16 2019") set(ARCH "ARM") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64" AND VCPKG_PLATFORM_TOOLSET MATCHES "v142") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v142") set(GENERATOR "Visual Studio 16 2019") set(ARCH "ARM64") @@ -128,7 +140,8 @@ function(vcpkg_configure_cmake) if(NOT VCPKG_CMAKE_SYSTEM_NAME) set(VCPKG_CMAKE_SYSTEM_NAME Windows) endif() - message(FATAL_ERROR "Unable to determine appropriate generator for: ${VCPKG_CMAKE_SYSTEM_NAME}-${VCPKG_TARGET_ARCHITECTURE}-${VCPKG_PLATFORM_TOOLSET}") + message(FATAL_ERROR "Unable to determine appropriate generator for: " + "${VCPKG_CMAKE_SYSTEM_NAME}-${VCPKG_TARGET_ARCHITECTURE}-${VCPKG_PLATFORM_TOOLSET}") endif() # If we use Ninja, make sure it's on PATH @@ -143,10 +156,11 @@ function(vcpkg_configure_cmake) if(DEFINED VCPKG_CMAKE_SYSTEM_NAME) list(APPEND _csc_OPTIONS "-DCMAKE_SYSTEM_NAME=${VCPKG_CMAKE_SYSTEM_NAME}") - if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" AND NOT DEFINED VCPKG_CMAKE_SYSTEM_VERSION) + if(_TARGETTING_UWP AND NOT DEFINED VCPKG_CMAKE_SYSTEM_VERSION) set(VCPKG_CMAKE_SYSTEM_VERSION 10.0) endif() endif() + if(DEFINED VCPKG_CMAKE_SYSTEM_VERSION) list(APPEND _csc_OPTIONS "-DCMAKE_SYSTEM_VERSION=${VCPKG_CMAKE_SYSTEM_VERSION}") endif() @@ -156,46 +170,43 @@ function(vcpkg_configure_cmake) elseif(VCPKG_LIBRARY_LINKAGE STREQUAL "static") list(APPEND _csc_OPTIONS -DBUILD_SHARED_LIBS=OFF) else() - message(FATAL_ERROR "Invalid setting for VCPKG_LIBRARY_LINKAGE: \"${VCPKG_LIBRARY_LINKAGE}\". It must be \"static\" or \"dynamic\"") - endif() - - if((NOT DEFINED VCPKG_CXX_FLAGS_DEBUG AND NOT DEFINED VCPKG_C_FLAGS_DEBUG) OR - (DEFINED VCPKG_CXX_FLAGS_DEBUG AND DEFINED VCPKG_C_FLAGS_DEBUG)) - else() - message(FATAL_ERROR "You must set both the VCPKG_CXX_FLAGS_DEBUG and VCPKG_C_FLAGS_DEBUG") - endif() - if((NOT DEFINED VCPKG_CXX_FLAGS_RELEASE AND NOT DEFINED VCPKG_C_FLAGS_RELEASE) OR - (DEFINED VCPKG_CXX_FLAGS_RELEASE AND DEFINED VCPKG_C_FLAGS_RELEASE)) - else() - message(FATAL_ERROR "You must set both the VCPKG_CXX_FLAGS_RELEASE and VCPKG_C_FLAGS_RELEASE") - endif() - if((NOT DEFINED VCPKG_CXX_FLAGS AND NOT DEFINED VCPKG_C_FLAGS) OR - (DEFINED VCPKG_CXX_FLAGS AND DEFINED VCPKG_C_FLAGS)) - else() - message(FATAL_ERROR "You must set both the VCPKG_CXX_FLAGS and VCPKG_C_FLAGS") + message(FATAL_ERROR + "Invalid setting for VCPKG_LIBRARY_LINKAGE: \"${VCPKG_LIBRARY_LINKAGE}\". " + "It must be \"static\" or \"dynamic\"") endif() + macro(check_both_vars_are_set var1 var2) + if((NOT DEFINED ${var1} OR NOT DEFINED ${var2}) AND (DEFINED ${var1} OR DEFINED ${var2})) + message(FATAL_ERROR "Both ${var1} and ${var2} must be set.") + endif() + endmacro() + + check_both_vars_are_set(VCPKG_CXX_FLAGS_DEBUG VCPKG_C_FLAGS_DEBUG) + check_both_vars_are_set(VCPKG_CXX_FLAGS_RELEASE VCPKG_C_FLAGS_RELEASE) + check_both_vars_are_set(VCPKG_CXX_FLAGS VCPKG_C_FLAGS) + set(VCPKG_SET_CHARSET_FLAG ON) if(_csc_NO_CHARSET_FLAG) set(VCPKG_SET_CHARSET_FLAG OFF) endif() - if(VCPKG_CHAINLOAD_TOOLCHAIN_FILE) - list(APPEND _csc_OPTIONS "-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}") - elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" OR NOT DEFINED VCPKG_CMAKE_SYSTEM_NAME) - list(APPEND _csc_OPTIONS "-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_ROOT_DIR}/scripts/toolchains/windows.cmake") - elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") - list(APPEND _csc_OPTIONS "-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_ROOT_DIR}/scripts/toolchains/linux.cmake") - elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android") - list(APPEND _csc_OPTIONS "-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_ROOT_DIR}/scripts/toolchains/android.cmake") - elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Darwin") - list(APPEND _csc_OPTIONS "-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_ROOT_DIR}/scripts/toolchains/osx.cmake") - elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") - list(APPEND _csc_OPTIONS "-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_ROOT_DIR}/scripts/toolchains/freebsd.cmake") + if(NOT VCPKG_CHAINLOAD_TOOLCHAIN_FILE) + if(NOT DEFINED VCPKG_CMAKE_SYSTEM_NAME OR _TARGETTING_UWP) + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${VCPKG_ROOT_DIR}/scripts/toolchains/windows.cmake") + elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${VCPKG_ROOT_DIR}/scripts/toolchains/linux.cmake") + elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android") + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${VCPKG_ROOT_DIR}/scripts/toolchains/android.cmake") + elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Darwin") + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${VCPKG_ROOT_DIR}/scripts/toolchains/osx.cmake") + elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${VCPKG_ROOT_DIR}/scripts/toolchains/freebsd.cmake") + endif() endif() list(APPEND _csc_OPTIONS + "-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}" "-DVCPKG_TARGET_TRIPLET=${TARGET_TRIPLET}" "-DVCPKG_SET_CHARSET_FLAG=${VCPKG_SET_CHARSET_FLAG}" "-DVCPKG_PLATFORM_TOOLSET=${VCPKG_PLATFORM_TOOLSET}" @@ -227,15 +238,11 @@ function(vcpkg_configure_cmake) endif() # Sets configuration variables for macOS builds - if(DEFINED VCPKG_INSTALL_NAME_DIR) - list(APPEND _csc_OPTIONS "-DCMAKE_INSTALL_NAME_DIR=${VCPKG_INSTALL_NAME_DIR}") - endif() - if(DEFINED VCPKG_OSX_DEPLOYMENT_TARGET) - list(APPEND _csc_OPTIONS "-DCMAKE_OSX_DEPLOYMENT_TARGET=${VCPKG_OSX_DEPLOYMENT_TARGET}") - endif() - if(DEFINED VCPKG_OSX_SYSROOT) - list(APPEND _csc_OPTIONS "-DCMAKE_OSX_SYSROOT=${VCPKG_OSX_SYSROOT}") - endif() + foreach(config_var INSTALL_NAME_DIR OSX_DEPLOYMENT_TARGET OSX_SYSROOT) + if(DEFINED VCPKG_${config_var}) + list(APPEND _csc_OPTIONS "-DCMAKE_${config_var}=${VCPKG_${config_var}}") + endif() + endforeach() set(rel_command ${CMAKE_COMMAND} ${_csc_SOURCE_PATH} "${_csc_OPTIONS}" "${_csc_OPTIONS_RELEASE}" @@ -248,7 +255,7 @@ function(vcpkg_configure_cmake) -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=${CURRENT_PACKAGES_DIR}/debug) - if(NINJA_HOST AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows" AND NOT _csc_DISABLE_PARALLEL_CONFIGURE) + if(NINJA_HOST AND CMAKE_HOST_WIN32 AND NOT _csc_DISABLE_PARALLEL_CONFIGURE) vcpkg_find_acquire_program(NINJA) get_filename_component(NINJA_PATH ${NINJA} DIRECTORY) @@ -259,20 +266,21 @@ function(vcpkg_configure_cmake) "rule CreateProcess\n command = $process\n\n" ) - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") - set(rel_line "build ../CMakeCache.txt: CreateProcess\n process = cmd /c \"cd .. &&") - foreach(arg ${rel_command}) - set(rel_line "${rel_line} \"${arg}\"") + 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}\"") endforeach() - set(_contents "${_contents}${rel_line}\"\n\n") - endif() + set(_contents "${_contents}${${build_type}_line}\"\n\n") + endmacro() - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - set(dbg_line "build ../../${TARGET_TRIPLET}-dbg/CMakeCache.txt: CreateProcess\n process = cmd /c \"cd ../../${TARGET_TRIPLET}-dbg &&") - foreach(arg ${dbg_command}) - set(dbg_line "${dbg_line} \"${arg}\"") - endforeach() - set(_contents "${_contents}${dbg_line}\"\n\n") + 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) -- cgit v1.2.3 From f97f92785f78460949a1044d417eab1d37715080 Mon Sep 17 00:00:00 2001 From: Igor Kostenko Date: Wed, 10 Jul 2019 07:17:17 +0100 Subject: Added nasm mirror as nasm.us is down again (#7175) --- scripts/cmake/vcpkg_find_acquire_program.cmake | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 737e332bc..84ebdbfa8 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -60,12 +60,15 @@ function(vcpkg_find_acquire_program VAR) set(HASH d353d3dc743ebdc6d1e9f6f2b7a6db3c387c1ce6c890bae8adc8ae5deae8404f4c5e3cf249d1e151e7256d4c5ee9cd317e6c41f3b6f244340de18a24b938e0c4) elseif(VAR MATCHES "NASM") set(PROGNAME nasm) - set(PATHS ${DOWNLOADS}/tools/nasm/nasm-2.14) + set(PATHS ${DOWNLOADS}/tools/nasm/nasm-2.14.02) set(BREW_PACKAGE_NAME "nasm") set(APT_PACKAGE_NAME "nasm") - set(URL "http://www.nasm.us/pub/nasm/releasebuilds/2.14/win32/nasm-2.14-win32.zip") - set(ARCHIVE "nasm-2.14-win32.zip") - set(HASH 64481b0346b83de8c9568f04a54f68e0f4c71724afa0b414f12e4080951d8c49e489bfc32117f9a489e3e49477b1cadc583c672311316d27c543af304c4b7f2a) + set(URL + "http://www.nasm.us/pub/nasm/releasebuilds/2.14.02/win32/nasm-2.14.02-win32.zip" + "http://fossies.org/windows/misc/nasm-2.14.02-win32.zip" + ) + set(ARCHIVE "nasm-2.14.02-win32.zip") + set(HASH a0f16a9f3b668b086e3c4e23a33ff725998e120f2e3ccac8c28293fd4faeae6fc59398919e1b89eed7461685d2730de02f2eb83e321f73609f35bf6b17a23d1e) elseif(VAR MATCHES "YASM") set(PROGNAME yasm) set(SUBDIR 1.3.0.6) -- cgit v1.2.3 From 684989a1e48b6b7f0ac1c340a702236974762f05 Mon Sep 17 00:00:00 2001 From: "Curtis.Bezault" Date: Tue, 16 Jul 2019 14:02:13 -0700 Subject: use additional env param --- scripts/get_triplet_environment.cmake | 1 + 1 file changed, 1 insertion(+) (limited to 'scripts') diff --git a/scripts/get_triplet_environment.cmake b/scripts/get_triplet_environment.cmake index bc79b16ce..24ff40905 100644 --- a/scripts/get_triplet_environment.cmake +++ b/scripts/get_triplet_environment.cmake @@ -9,3 +9,4 @@ message("VCPKG_PLATFORM_TOOLSET=${VCPKG_PLATFORM_TOOLSET}") message("VCPKG_VISUAL_STUDIO_PATH=${VCPKG_VISUAL_STUDIO_PATH}") message("VCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}") message("VCPKG_BUILD_TYPE=${VCPKG_BUILD_TYPE}") +message("VCPKG_ENV_PASSTHROUGH=${VCPKG_ENV_PASSTHROUGH}") -- cgit v1.2.3 From 44dcc3d4f3d2bc56cc9f6d0371a141ad0145d537 Mon Sep 17 00:00:00 2001 From: "Curtis.Bezault" Date: Tue, 16 Jul 2019 15:34:13 -0700 Subject: First pass at port settings --- scripts/get_triplet_environment.cmake | 3 +++ 1 file changed, 3 insertions(+) (limited to 'scripts') diff --git a/scripts/get_triplet_environment.cmake b/scripts/get_triplet_environment.cmake index 24ff40905..e561492de 100644 --- a/scripts/get_triplet_environment.cmake +++ b/scripts/get_triplet_environment.cmake @@ -1,4 +1,7 @@ include(${CMAKE_TRIPLET_FILE}) +if (DEFINED CMAKE_PORTFILE_SETTINGS) + include(${CMAKE_PORTFILE_SETTINGS} OPTIONAL) +endif() # GUID used as a flag - "cut here line" message("c35112b6-d1ba-415b-aa5d-81de856ef8eb") -- cgit v1.2.3 From 64198a8109b9d1cffcc3830f70d0c3f2b066638d Mon Sep 17 00:00:00 2001 From: "Curtis.Bezault" Date: Tue, 16 Jul 2019 15:51:50 -0700 Subject: Add to vcpkg.cmake --- scripts/get_triplet_environment.cmake | 4 ++-- scripts/ports.cmake | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'scripts') diff --git a/scripts/get_triplet_environment.cmake b/scripts/get_triplet_environment.cmake index e561492de..f76054556 100644 --- a/scripts/get_triplet_environment.cmake +++ b/scripts/get_triplet_environment.cmake @@ -1,6 +1,6 @@ include(${CMAKE_TRIPLET_FILE}) -if (DEFINED CMAKE_PORTFILE_SETTINGS) - include(${CMAKE_PORTFILE_SETTINGS} OPTIONAL) +if (DEFINED CMAKE_PORT_SETTINGS) + include(${CMAKE_PORT_SETTINGS} OPTIONAL) endif() # GUID used as a flag - "cut here line" diff --git a/scripts/ports.cmake b/scripts/ports.cmake index 860d08893..0c33fdffc 100644 --- a/scripts/ports.cmake +++ b/scripts/ports.cmake @@ -67,6 +67,7 @@ if(CMD MATCHES "^BUILD$") file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR} ${CURRENT_PACKAGES_DIR}) include(${CMAKE_TRIPLET_FILE}) + include(${CMAKE_PORT_SETTINGS} OPTIONAL) set(TRIPLET_SYSTEM_ARCH ${VCPKG_TARGET_ARCHITECTURE}) include(${CMAKE_CURRENT_LIST_DIR}/cmake/vcpkg_common_definitions.cmake) include(${CMAKE_CURRENT_LIST_DIR}/cmake/vcpkg_common_functions.cmake) -- cgit v1.2.3 From d4ab567609495a5c239f537d7c1e200f7b8a19c0 Mon Sep 17 00:00:00 2001 From: "Curtis.Bezault" Date: Wed, 17 Jul 2019 10:10:36 -0700 Subject: first pass at abi additional files --- scripts/get_triplet_environment.cmake | 1 + 1 file changed, 1 insertion(+) (limited to 'scripts') diff --git a/scripts/get_triplet_environment.cmake b/scripts/get_triplet_environment.cmake index f76054556..ab5e8f8c3 100644 --- a/scripts/get_triplet_environment.cmake +++ b/scripts/get_triplet_environment.cmake @@ -13,3 +13,4 @@ message("VCPKG_VISUAL_STUDIO_PATH=${VCPKG_VISUAL_STUDIO_PATH}") message("VCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}") message("VCPKG_BUILD_TYPE=${VCPKG_BUILD_TYPE}") message("VCPKG_ENV_PASSTHROUGH=${VCPKG_ENV_PASSTHROUGH}") +message("VCPKG_ABI_ADDITIONAL_FILES=${VCPKG_ABI_ADDITIONAL_FILES}") -- cgit v1.2.3 From bb3a9ddb6ec917f549e991f6bd344ce77054bb67 Mon Sep 17 00:00:00 2001 From: Curtis J Bezault Date: Thu, 18 Jul 2019 09:02:21 -0700 Subject: [vcpkg] Environment Variable Passthrough (#7290) * use additional env param * remove partials * remove change to linux triplet * Fix some issues that vicroms pointed out * whitespace change --- scripts/get_triplet_environment.cmake | 1 + 1 file changed, 1 insertion(+) (limited to 'scripts') diff --git a/scripts/get_triplet_environment.cmake b/scripts/get_triplet_environment.cmake index bc79b16ce..24ff40905 100644 --- a/scripts/get_triplet_environment.cmake +++ b/scripts/get_triplet_environment.cmake @@ -9,3 +9,4 @@ message("VCPKG_PLATFORM_TOOLSET=${VCPKG_PLATFORM_TOOLSET}") message("VCPKG_VISUAL_STUDIO_PATH=${VCPKG_VISUAL_STUDIO_PATH}") message("VCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}") message("VCPKG_BUILD_TYPE=${VCPKG_BUILD_TYPE}") +message("VCPKG_ENV_PASSTHROUGH=${VCPKG_ENV_PASSTHROUGH}") -- cgit v1.2.3 From 618fa203c13c30bd19826988cff66481bca0562f Mon Sep 17 00:00:00 2001 From: Curtis J Bezault Date: Fri, 19 Jul 2019 08:01:38 -0700 Subject: [vcpkg] Portfile Settings (#7292) --- scripts/get_triplet_environment.cmake | 3 +++ scripts/ports.cmake | 1 + 2 files changed, 4 insertions(+) (limited to 'scripts') diff --git a/scripts/get_triplet_environment.cmake b/scripts/get_triplet_environment.cmake index 24ff40905..21464bb2e 100644 --- a/scripts/get_triplet_environment.cmake +++ b/scripts/get_triplet_environment.cmake @@ -1,4 +1,7 @@ include(${CMAKE_TRIPLET_FILE}) +if (DEFINED CMAKE_ENV_OVERRIDES_FILE) + include(${CMAKE_ENV_OVERRIDES_FILE} OPTIONAL) +endif() # GUID used as a flag - "cut here line" message("c35112b6-d1ba-415b-aa5d-81de856ef8eb") diff --git a/scripts/ports.cmake b/scripts/ports.cmake index 860d08893..58510567b 100644 --- a/scripts/ports.cmake +++ b/scripts/ports.cmake @@ -67,6 +67,7 @@ if(CMD MATCHES "^BUILD$") file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR} ${CURRENT_PACKAGES_DIR}) include(${CMAKE_TRIPLET_FILE}) + include(${ENV_OVERRIDES_FILE} OPTIONAL) set(TRIPLET_SYSTEM_ARCH ${VCPKG_TARGET_ARCHITECTURE}) include(${CMAKE_CURRENT_LIST_DIR}/cmake/vcpkg_common_definitions.cmake) include(${CMAKE_CURRENT_LIST_DIR}/cmake/vcpkg_common_functions.cmake) -- cgit v1.2.3 From 126812d18bf244b9141d466ca27582df176a2038 Mon Sep 17 00:00:00 2001 From: crusader-mike Date: Mon, 22 Jul 2019 12:47:57 -0500 Subject: Resolves "project is never up-to-date" problem (issue 6179) (#7322) --- scripts/buildsystems/msbuild/applocal.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/buildsystems/msbuild/applocal.ps1 b/scripts/buildsystems/msbuild/applocal.ps1 index 2fdd9fdb4..ab51dc9be 100644 --- a/scripts/buildsystems/msbuild/applocal.ps1 +++ b/scripts/buildsystems/msbuild/applocal.ps1 @@ -29,7 +29,7 @@ function deployBinary([string]$targetBinaryDir, [string]$SourceDir, [string]$tar Copy-Item "$SourceDir\$targetBinaryName" $targetBinaryDir } if ($copiedFilesLog) { Add-Content $copiedFilesLog "$targetBinaryDir\$targetBinaryName" -Encoding UTF8 } - if ($tlogFile) { Add-Content $tlogFile "$targetBinaryDir\$targetBinaryName" } + if ($tlogFile) { Add-Content $tlogFile "$targetBinaryDir\$targetBinaryName" -Encoding Unicode } } -- cgit v1.2.3 From 459908ae14458a615bb0a8c278c799cabd34e558 Mon Sep 17 00:00:00 2001 From: "Curtis.Bezault" Date: Tue, 23 Jul 2019 10:07:39 -0700 Subject: add external file hashes to the binary paragraph --- scripts/get_triplet_environment.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/get_triplet_environment.cmake b/scripts/get_triplet_environment.cmake index ab5e8f8c3..fa1e5cb39 100644 --- a/scripts/get_triplet_environment.cmake +++ b/scripts/get_triplet_environment.cmake @@ -13,4 +13,4 @@ message("VCPKG_VISUAL_STUDIO_PATH=${VCPKG_VISUAL_STUDIO_PATH}") message("VCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}") message("VCPKG_BUILD_TYPE=${VCPKG_BUILD_TYPE}") message("VCPKG_ENV_PASSTHROUGH=${VCPKG_ENV_PASSTHROUGH}") -message("VCPKG_ABI_ADDITIONAL_FILES=${VCPKG_ABI_ADDITIONAL_FILES}") +message("VCPKG_EXTERNAL_FILES=${VCPKG_EXTERNAL_FILES}") -- cgit v1.2.3 From 165907550c8f6ce7506beef591f55cd3f8458d78 Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Fri, 2 Aug 2019 09:52:39 -0700 Subject: Update tests, and add documentation! (#7506) This PR does the following: * fix tests -- now, they're always built in the CMake scripts, and they work on VS2015 *add a new flag, BUILD_TESTING, which allows one to turn off testing builds * Add documentation for running tests --- scripts/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index b0e4f98a5..09d77b07d 100644 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -249,7 +249,7 @@ buildDir="$vcpkgRootDir/toolsrc/build.rel" rm -rf "$buildDir" mkdir -p "$buildDir" -(cd "$buildDir" && CXX=$CXX "$cmakeExe" .. -DCMAKE_BUILD_TYPE=Release -G "Ninja" "-DCMAKE_MAKE_PROGRAM=$ninjaExe" "-DDEFINE_DISABLE_METRICS=$vcpkgDisableMetrics" "-DVCPKG_ALLOW_APPLE_CLANG=$vcpkgAllowAppleClang") || exit 1 +(cd "$buildDir" && CXX=$CXX "$cmakeExe" .. -DCMAKE_BUILD_TYPE=Release -G "Ninja" "-DCMAKE_MAKE_PROGRAM=$ninjaExe" "-DBUILD_TESTING=OFF" "-DDEFINE_DISABLE_METRICS=$vcpkgDisableMetrics" "-DVCPKG_ALLOW_APPLE_CLANG=$vcpkgAllowAppleClang") || exit 1 (cd "$buildDir" && "$cmakeExe" --build .) || exit 1 rm -rf "$vcpkgRootDir/vcpkg" -- cgit v1.2.3 From 6eaf7f0f977e62b07515cb17676dcf5d383d357d Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 8 Aug 2019 14:18:47 +0200 Subject: add definition for host specific path separators --- scripts/cmake/vcpkg_common_definitions.cmake | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_common_definitions.cmake b/scripts/cmake/vcpkg_common_definitions.cmake index 8dc05de3c..f9221f946 100644 --- a/scripts/cmake/vcpkg_common_definitions.cmake +++ b/scripts/cmake/vcpkg_common_definitions.cmake @@ -1,3 +1,4 @@ +#Helper variable to identify the Target system. VCPKG_TARGET_IS_ if (NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") set(VCPKG_TARGET_IS_WINDOWS 1) if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") @@ -12,3 +13,12 @@ elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android") elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") set(VCPKG_TARGET_IS_FREEBSD 1) endif() + +#Helper variable to identify the host path seperator. +if(WIN32) + set(VCPKG_HOST_PATH_SEPARATOR ";") + set(VCPKG_HOST_PATH_SEPARATOR_ESCAPED "\\;") #sometimes needed to differentiate between the cmake list separator +elseif(UNIX) + set(VCPKG_HOST_PATH_SEPARATOR ":") + set(VCPKG_HOST_PATH_SEPARATOR_ESCAPED ":") +endif() \ No newline at end of file -- cgit v1.2.3 From b72fa4561f31c4ea6cdc733094cebf72bedff854 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 8 Aug 2019 14:22:53 +0200 Subject: use it in vcpkg_add_to_path. --- scripts/cmake/vcpkg_add_to_path.cmake | 12 ++---------- scripts/cmake/vcpkg_common_definitions.cmake | 4 ++-- 2 files changed, 4 insertions(+), 12 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_add_to_path.cmake b/scripts/cmake/vcpkg_add_to_path.cmake index 7ab08c88e..05763b2ef 100644 --- a/scripts/cmake/vcpkg_add_to_path.cmake +++ b/scripts/cmake/vcpkg_add_to_path.cmake @@ -29,19 +29,11 @@ function(vcpkg_add_to_path) if(NOT "${ARGC}" STREQUAL "2") message(FATAL_ERROR "Expected second argument.") endif() - if(CMAKE_HOST_WIN32) - set(ENV{PATH} "${ARGV1};$ENV{PATH}") - else() - set(ENV{PATH} "${ARGV1}:$ENV{PATH}") - endif() + set(ENV{PATH} "${ARGV1}${VCPKG_HOST_PATH_SEPARATOR}$ENV{PATH}") else() if(NOT "${ARGC}" STREQUAL "1") message(FATAL_ERROR "Unexpected second argument: ${ARGV1}") endif() - if(CMAKE_HOST_WIN32) - set(ENV{PATH} "$ENV{PATH};${ARGV0}") - else() - set(ENV{PATH} "$ENV{PATH}:${ARGV0}") - endif() + set(ENV{PATH} "$ENV{PATH}${VCPKG_HOST_PATH_SEPARATOR}${ARGV0}") endif() endfunction() \ No newline at end of file diff --git a/scripts/cmake/vcpkg_common_definitions.cmake b/scripts/cmake/vcpkg_common_definitions.cmake index f9221f946..f43780959 100644 --- a/scripts/cmake/vcpkg_common_definitions.cmake +++ b/scripts/cmake/vcpkg_common_definitions.cmake @@ -15,10 +15,10 @@ elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") endif() #Helper variable to identify the host path seperator. -if(WIN32) +if(CMAKE_HOST_WIN32) set(VCPKG_HOST_PATH_SEPARATOR ";") set(VCPKG_HOST_PATH_SEPARATOR_ESCAPED "\\;") #sometimes needed to differentiate between the cmake list separator -elseif(UNIX) +elseif(CMAKE_HOST_UNIX) set(VCPKG_HOST_PATH_SEPARATOR ":") set(VCPKG_HOST_PATH_SEPARATOR_ESCAPED ":") endif() \ No newline at end of file -- cgit v1.2.3 From 5899cd1d25c134f8a30476f4939ab57952c59815 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 8 Aug 2019 14:40:47 +0200 Subject: improve documentation --- scripts/cmake/vcpkg_common_definitions.cmake | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_common_definitions.cmake b/scripts/cmake/vcpkg_common_definitions.cmake index f43780959..d9b397fa1 100644 --- a/scripts/cmake/vcpkg_common_definitions.cmake +++ b/scripts/cmake/vcpkg_common_definitions.cmake @@ -1,3 +1,15 @@ +## # vcpkg_common_definitions +## +## File contains helpful variabls for portfiles which are commonly needed or used. +## +## ## The following variables are available: +## ```cmake +## VCPKG_TARGET_IS_ with being one of the following: WINDOWS, UWP, LINUX, OSX, ANDROID, FREEBSD. only defined if +## VCPKG_HOST_PATH_SEPARATOR Host specific path separator +## VCPKG_HOST_PATH_SEPARATOR_ESCAPED Escaped version of VCPKG_HOST_PATH_SEPARATOR if necessary (e.g. symbol with special meaning in cmake like ";") +## ``` +## + #Helper variable to identify the Target system. VCPKG_TARGET_IS_ if (NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") set(VCPKG_TARGET_IS_WINDOWS 1) @@ -14,7 +26,7 @@ elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") set(VCPKG_TARGET_IS_FREEBSD 1) endif() -#Helper variable to identify the host path seperator. +#Helper variable to identify the host path separator. if(CMAKE_HOST_WIN32) set(VCPKG_HOST_PATH_SEPARATOR ";") set(VCPKG_HOST_PATH_SEPARATOR_ESCAPED "\\;") #sometimes needed to differentiate between the cmake list separator -- cgit v1.2.3 From ad82c38cc1e8cc87f026cbd179e8bfaa62ce3553 Mon Sep 17 00:00:00 2001 From: "Curtis.Bezault" Date: Fri, 9 Aug 2019 14:40:09 -0700 Subject: Actually only override the PUBLIC ABI, not the private one --- scripts/get_triplet_environment.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/get_triplet_environment.cmake b/scripts/get_triplet_environment.cmake index 8ae365812..a838624ca 100644 --- a/scripts/get_triplet_environment.cmake +++ b/scripts/get_triplet_environment.cmake @@ -13,4 +13,4 @@ message("VCPKG_VISUAL_STUDIO_PATH=${VCPKG_VISUAL_STUDIO_PATH}") message("VCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}") message("VCPKG_BUILD_TYPE=${VCPKG_BUILD_TYPE}") message("VCPKG_ENV_PASSTHROUGH=${VCPKG_ENV_PASSTHROUGH}") -message("VCPKG_EXTERNAL_FILES=${VCPKG_EXTERNAL_FILES}") +message("VCPKG_EXTERNAL_FILES=${VCPKG_PUBLIC_ABI_OVERRIDE}") -- cgit v1.2.3 From f9561a08db1add3052d4759adf051fc903e2e3e4 Mon Sep 17 00:00:00 2001 From: "Curtis.Bezault" Date: Fri, 9 Aug 2019 14:47:58 -0700 Subject: remove unnecessary include, fix variable extraction --- scripts/get_triplet_environment.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/get_triplet_environment.cmake b/scripts/get_triplet_environment.cmake index a838624ca..0457cee9b 100644 --- a/scripts/get_triplet_environment.cmake +++ b/scripts/get_triplet_environment.cmake @@ -13,4 +13,4 @@ message("VCPKG_VISUAL_STUDIO_PATH=${VCPKG_VISUAL_STUDIO_PATH}") message("VCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}") message("VCPKG_BUILD_TYPE=${VCPKG_BUILD_TYPE}") message("VCPKG_ENV_PASSTHROUGH=${VCPKG_ENV_PASSTHROUGH}") -message("VCPKG_EXTERNAL_FILES=${VCPKG_PUBLIC_ABI_OVERRIDE}") +message("VCPKG_PUBLIC_ABI_OVERRIDE=${VCPKG_PUBLIC_ABI_OVERRIDE}") -- cgit v1.2.3 From cabbe165259bbde86103e8764d67d122f84eb13e Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 12 Aug 2019 08:24:20 +0200 Subject: [vcpkg/cmake] Added a function to fail from portfiles in a default way (#7601) * added function vcpkg_fail_port_install to fail the portfile under requested circumstances and display a standarized failure message * added always option. * fix linux regressions * bump control for ci tu rerun --- scripts/cmake/vcpkg_common_functions.cmake | 1 + scripts/cmake/vcpkg_fail_port_install.cmake | 92 +++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 scripts/cmake/vcpkg_fail_port_install.cmake (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_common_functions.cmake b/scripts/cmake/vcpkg_common_functions.cmake index 515b2bafe..e9e52bad8 100644 --- a/scripts/cmake/vcpkg_common_functions.cmake +++ b/scripts/cmake/vcpkg_common_functions.cmake @@ -9,6 +9,7 @@ include(vcpkg_extract_source_archive_ex) include(vcpkg_execute_required_process) include(vcpkg_execute_required_process_repeat) include(vcpkg_execute_build_process) +include(vcpkg_fail_port_install) include(vcpkg_find_acquire_program) include(vcpkg_fixup_cmake_targets) include(vcpkg_from_github) diff --git a/scripts/cmake/vcpkg_fail_port_install.cmake b/scripts/cmake/vcpkg_fail_port_install.cmake new file mode 100644 index 000000000..0fdacb639 --- /dev/null +++ b/scripts/cmake/vcpkg_fail_port_install.cmake @@ -0,0 +1,92 @@ +## # vcpkg_fail_port_install +## +## Fails the current portfile with a (default) error message +## +## ## Usage +## ```cmake +## vcpkg_fail_port_install([MESSAGE ] [ON_TARGET [ ...]] +## [ON_ARCH [ ...]] +## [ON_CRT_LINKAGE [ ...]]) +## [ON_LIBRARY_LINKAGE [ ...]]) +## ``` +## +## ## Parameters +## ### MESSAGE +## Additional failure message. If non is given a default message will be displayed depending on the failure condition +## +## ### ALWAYS +## will always fail early +## +## ### ON_TARGET +## targets for which the build should fail early. Valid targets are from VCPKG_IS_TARGET_ (see vcpkg_common_definitions.cmake) +## +## ### ON_ARCH +## architecture for which the build should fail early. +## +## ### ON_CRT_LINKAGE +## CRT linkage for which the build should fail early. +## +## ### ON_LIBRARY_LINKAGE +## library linkage for which the build should fail early. +## +## ## Examples +## +## * [aws-lambda-cpp](https://github.com/Microsoft/vcpkg/blob/master/ports/aws-lambda-cpp/portfile.cmake) +function(vcpkg_fail_port_install) + cmake_parse_arguments(PARSE_ARGV 0 _csc "ALWAYS" "MESSAGE" "ON_TARGET;ON_ARCH;ON_CRT_LINKAGE;ON_LIBRARY_LINKAGE") + if(DEFINED _csc_UNPARSED_ARGUMENTS) + message(FATAL_ERROR "Unknown arguments passed to vcpkg_fail_port_install. Please correct the portfile!") + endif() + if(DEFINED _csc_MESSAGE) + set(_csc_MESSAGE "${_csc_MESSAGE}\n") + else() + set(_csc_MESSAGE "") + endif() + + unset(_fail_port) + #Target fail check + if(DEFINED _csc_ON_TARGET) + foreach(_target ${_csc_ON_TARGET}) + string(TOUPPER ${_target} _target_upper) + if(VCPKG_TARGET_IS_${_target_upper}) + set(_fail_port TRUE) + set(_csc_MESSAGE "${_csc_MESSAGE}Target '${_target}' not supported by ${PORT}!\n") + endif() + endforeach() + endif() + + #Architecture fail check + if(DEFINED _csc_ON_ARCH) + foreach(_arch ${_csc_ON_ARCH}) + if(${VCPKG_TARGET_ARCHITECTURE} MATCHES ${_arch}) + set(_fail_port TRUE) + set(_csc_MESSAGE "${_csc_MESSAGE}Architecture '${_arch}' not supported by ${PORT}!\n") + endif() + endforeach() + endif() + + #CRT linkage fail check + if(DEFINED _csc_ON_CRT_LINKAGE) + foreach(_crt_link ${_csc_ON_CRT_LINKAGE}) + if("${VCPKG_CRT_LINKAGE}" MATCHES "${_crt_link}") + set(_fail_port TRUE) + set(_csc_MESSAGE "${_csc_MESSAGE}CRT linkage '${VCPKG_CRT_LINKAGE}' not supported by ${PORT}!\n") + endif() + endforeach() + endif() + + #Library linkage fail check + if(DEFINED _csc_ON_LIBRARY_LINKAGE) + foreach(_lib_link ${_csc_ON_LIBRARY_LINKAGE}) + if("${VCPKG_LIBRARY_LINKAGE}" MATCHES "${_lib_link}") + set(_fail_port TRUE) + set(_csc_MESSAGE "${_csc_MESSAGE}Library linkage '${VCPKG_LIBRARY_LINKAGE}' not supported by ${PORT}!\n") + endif() + endforeach() + endif() + + if(_fail_port OR _csc_ALWAYS) + message(FATAL_ERROR ${_csc_MESSAGE}) + endif() + +endfunction() \ No newline at end of file -- cgit v1.2.3 From 01e342d016691e0a20e684de346cbc94d2c7fe2c Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 12 Aug 2019 09:49:24 +0200 Subject: use VCPKG_HOST_PATH_SEPARATOR in scripts --- scripts/cmake/vcpkg_build_cmake.cmake | 9 ++------- scripts/cmake/vcpkg_build_qmake.cmake | 6 ++---- 2 files changed, 4 insertions(+), 11 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_build_cmake.cmake b/scripts/cmake/vcpkg_build_cmake.cmake index b110d2cc9..cfdbec28f 100644 --- a/scripts/cmake/vcpkg_build_cmake.cmake +++ b/scripts/cmake/vcpkg_build_cmake.cmake @@ -74,15 +74,10 @@ function(vcpkg_build_cmake) if(_bc_ADD_BIN_TO_PATH) set(_BACKUP_ENV_PATH "$ENV{PATH}") - if(CMAKE_HOST_WIN32) - set(_PATHSEP ";") - else() - set(_PATHSEP ":") - endif() if(BUILDTYPE STREQUAL "debug") - set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/bin${_PATHSEP}$ENV{PATH}") + set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/bin${VCPKG_HOST_PATH_SEPARATOR}$ENV{PATH}") else() - set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin${_PATHSEP}$ENV{PATH}") + set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin${VCPKG_HOST_PATH_SEPARATOR}$ENV{PATH}") endif() endif() diff --git a/scripts/cmake/vcpkg_build_qmake.cmake b/scripts/cmake/vcpkg_build_qmake.cmake index cf79fe8fc..a10fac315 100644 --- a/scripts/cmake/vcpkg_build_qmake.cmake +++ b/scripts/cmake/vcpkg_build_qmake.cmake @@ -11,11 +11,9 @@ function(vcpkg_build_qmake) cmake_parse_arguments(_csc "SKIP_MAKEFILES" "BUILD_LOGNAME" "TARGETS;RELEASE_TARGETS;DEBUG_TARGETS" ${ARGN}) if(CMAKE_HOST_WIN32) - set(_PATHSEP ";") vcpkg_find_acquire_program(JOM) set(INVOKE "${JOM}") else() - set(_PATHSEP ":") find_program(MAKE make) set(INVOKE "${MAKE}") endif() @@ -58,7 +56,7 @@ function(vcpkg_build_qmake) #First generate the makefiles so we can modify them if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/debug/lib${_PATHSEP}${CURRENT_INSTALLED_DIR}/debug/bin${_PATHSEP}${CURRENT_INSTALLED_DIR}/tools/qt5${_PATHSEP}${ENV_PATH_BACKUP}") + set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/debug/lib${VCPKG_HOST_PATH_SEPARATOR}${CURRENT_INSTALLED_DIR}/debug/bin${VCPKG_HOST_PATH_SEPARATOR}${CURRENT_INSTALLED_DIR}/tools/qt5${VCPKG_HOST_PATH_SEPARATOR}${ENV_PATH_BACKUP}") if(NOT _csc_SKIP_MAKEFILES) run_jom(qmake_all makefiles dbg) @@ -83,7 +81,7 @@ function(vcpkg_build_qmake) endif() if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") - set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/lib${_PATHSEP}${CURRENT_INSTALLED_DIR}/bin${_PATHSEP}${CURRENT_INSTALLED_DIR}/tools/qt5${_PATHSEP}${ENV_PATH_BACKUP}") + set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/lib${VCPKG_HOST_PATH_SEPARATOR}${CURRENT_INSTALLED_DIR}/bin${VCPKG_HOST_PATH_SEPARATOR}${CURRENT_INSTALLED_DIR}/tools/qt5${VCPKG_HOST_PATH_SEPARATOR}${ENV_PATH_BACKUP}") if(NOT _csc_SKIP_MAKEFILES) run_jom(qmake_all makefiles rel) -- cgit v1.2.3 From 173642528e2cf7a3f18b41d903b5ff5a758d34ae Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 12 Aug 2019 10:04:50 +0200 Subject: use vcpkg add to path in build scripts --- scripts/cmake/vcpkg_build_cmake.cmake | 4 ++-- scripts/cmake/vcpkg_build_qmake.cmake | 23 +++++++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_build_cmake.cmake b/scripts/cmake/vcpkg_build_cmake.cmake index cfdbec28f..d049c907b 100644 --- a/scripts/cmake/vcpkg_build_cmake.cmake +++ b/scripts/cmake/vcpkg_build_cmake.cmake @@ -75,9 +75,9 @@ function(vcpkg_build_cmake) if(_bc_ADD_BIN_TO_PATH) set(_BACKUP_ENV_PATH "$ENV{PATH}") if(BUILDTYPE STREQUAL "debug") - set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/bin${VCPKG_HOST_PATH_SEPARATOR}$ENV{PATH}") + vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/bin") else() - set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin${VCPKG_HOST_PATH_SEPARATOR}$ENV{PATH}") + vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin") endif() endif() diff --git a/scripts/cmake/vcpkg_build_qmake.cmake b/scripts/cmake/vcpkg_build_qmake.cmake index a10fac315..5b4f017e0 100644 --- a/scripts/cmake/vcpkg_build_qmake.cmake +++ b/scripts/cmake/vcpkg_build_qmake.cmake @@ -56,9 +56,15 @@ function(vcpkg_build_qmake) #First generate the makefiles so we can modify them if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/debug/lib${VCPKG_HOST_PATH_SEPARATOR}${CURRENT_INSTALLED_DIR}/debug/bin${VCPKG_HOST_PATH_SEPARATOR}${CURRENT_INSTALLED_DIR}/tools/qt5${VCPKG_HOST_PATH_SEPARATOR}${ENV_PATH_BACKUP}") + set(_BUILD_PREFIX "/debug") + set(_int_build_type dbg) + + vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/tools/qt5") + vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}${_BUILD_PREFIX}/bin") + vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}${_BUILD_PREFIX}/lib") + if(NOT _csc_SKIP_MAKEFILES) - run_jom(qmake_all makefiles dbg) + run_jom(qmake_all makefiles ${_int_build_type}) #Store debug makefiles path file(GLOB_RECURSE DEBUG_MAKEFILES ${DEBUG_DIR}/*Makefile*) @@ -77,13 +83,18 @@ function(vcpkg_build_qmake) endforeach() endif() - run_jom("${_csc_DEBUG_TARGETS}" ${_csc_BUILD_LOGNAME} dbg) + run_jom("${_csc_DEBUG_TARGETS}" ${_csc_BUILD_LOGNAME} ${_int_build_type}) endif() if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") - set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/lib${VCPKG_HOST_PATH_SEPARATOR}${CURRENT_INSTALLED_DIR}/bin${VCPKG_HOST_PATH_SEPARATOR}${CURRENT_INSTALLED_DIR}/tools/qt5${VCPKG_HOST_PATH_SEPARATOR}${ENV_PATH_BACKUP}") + set(_int_build_type rel) + + vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/tools/qt5") + vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}${_BUILD_PREFIX}/bin") + vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}${_BUILD_PREFIX}/lib") + if(NOT _csc_SKIP_MAKEFILES) - run_jom(qmake_all makefiles rel) + run_jom(qmake_all makefiles ${_int_build_type}) #Store release makefile path file(GLOB_RECURSE RELEASE_MAKEFILES ${RELEASE_DIR}/*Makefile*) @@ -100,7 +111,7 @@ function(vcpkg_build_qmake) endforeach() endif() - run_jom("${_csc_RELEASE_TARGETS}" ${_csc_BUILD_LOGNAME} rel) + run_jom("${_csc_RELEASE_TARGETS}" ${_csc_BUILD_LOGNAME} ${_int_build_type}) endif() # Restore the original value of ENV{PATH} -- cgit v1.2.3 From 0f3b6fc1638c3c0bf33a560d1ab89215b7af02fd Mon Sep 17 00:00:00 2001 From: dan-shaw <51385773+dan-shaw@users.noreply.github.com> Date: Mon, 12 Aug 2019 14:41:53 -0700 Subject: vs 2019 integration bug (#7623) --- scripts/buildsystems/vcpkg.cmake | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) (limited to 'scripts') diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake index f657e2710..6eb0f62dd 100644 --- a/scripts/buildsystems/vcpkg.cmake +++ b/scripts/buildsystems/vcpkg.cmake @@ -38,17 +38,7 @@ else() elseif(CMAKE_GENERATOR MATCHES "^Visual Studio 15 2017$") set(_VCPKG_TARGET_TRIPLET_ARCH x86) elseif(CMAKE_GENERATOR MATCHES "^Visual Studio 16 2019$") - if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^[Xx]86$") - set(_VCPKG_TARGET_TRIPLET_ARCH x86) - elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^[Aa][Mm][Dd]64$") - set(_VCPKG_TARGET_TRIPLET_ARCH x64) - elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^[Aa][Rr][Mm]$") - set(_VCPKG_TARGET_TRIPLET_ARCH arm) - elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^[Aa][Rr][Mm]64$") - set(_VCPKG_TARGET_TRIPLET_ARCH arm64) - else() - - endif() + set(_VCPKG_TARGET_TRIPLET_ARCH x86) else() find_program(_VCPKG_CL cl) if(_VCPKG_CL MATCHES "amd64/cl.exe$" OR _VCPKG_CL MATCHES "x64/cl.exe$") -- cgit v1.2.3 From a3a6530631df905eb5c0e26d0b20d7d548e0c465 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Tue, 13 Aug 2019 20:13:55 -0700 Subject: [vcpkg_check_features] Set output variable explicitly and allow reverse-logic check (#7558) * [vcpkg_check_features] Set OUT_EXPAND_OPTIONS explicitly * [vcpkg_check_features] Allow reverse logic for features * [vcpkg_check_features] Document new parameters * [vcpkg_check_features] Remove unnecessary logging * Do not create variables for each feature only set OUT_FEATURE_OPTIONS * Improve documentation * Update ports that use vcpkg_check_features() * Missing documentation updates * [pcl] Fix tools feature * [opencv,opencv4] Fix usage of vcpkg_check_features() * [opencv4] Fix typo --- scripts/cmake/vcpkg_check_features.cmake | 255 +++++++++++++++++++----------- scripts/cmake/vcpkg_configure_cmake.cmake | 6 + 2 files changed, 173 insertions(+), 88 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_check_features.cmake b/scripts/cmake/vcpkg_check_features.cmake index d089ac5b1..81ebc234d 100644 --- a/scripts/cmake/vcpkg_check_features.cmake +++ b/scripts/cmake/vcpkg_check_features.cmake @@ -1,112 +1,191 @@ ## # vcpkg_check_features -## -## Check if one or more features are a part of the package installation. -## +## Check if one or more features are a part of a package installation. +## ## ## Usage ## ```cmake ## vcpkg_check_features( -## -## [ ] -## ... +## OUT_FEATURE_OPTIONS +## [FEATURES +## +## [ ] +## ...] +## [INVERTED_FEATURES +## +## [ ] +## ...] ## ) ## ``` -## -## `vcpkg_check_features` accepts a list of (feature, output_variable) pairs. If a feature is specified, the corresponding output variable will be set as `ON`, or `OFF` otherwise. The syntax is similar to the `PROPERTIES` argument of `set_target_properties`. -## -## `vcpkg_check_features` will create a variable `FEATURE_OPTIONS` in the parent scope, which you can pass as a part of `OPTIONS` argument when calling functions like `vcpkg_config_cmake`: -## ```cmake -## vcpkg_config_cmake( -## SOURCE_PATH ${SOURCE_PATH} -## PREFER_NINJA -## OPTIONS -## -DBUILD_TESTING=ON -## ${FEATURE_OPTIONS} -## ) -## ``` -## +## `vcpkg_check_features()` accepts these parameters: +## +## * `OUT_FEATURE_OPTIONS`: +## An output variable, the function will clear the variable passed to `OUT_FEATURE_OPTIONS` +## and then set it to contain a list of option definitions (`-D=ON|OFF`). +## +## This should be set to `FEATURE_OPTIONS` by convention. +## +## * `FEATURES`: +## A list of (`FEATURE_NAME`, `OPTION_NAME`) pairs. +## For each `FEATURE_NAME` a definition is added to `OUT_FEATURE_OPTIONS` in the form of: +## +## * `-D=ON`, if a feature is specified for installation, +## * `-D=OFF`, otherwise. +## +## * `INVERTED_FEATURES`: +## A list of (`FEATURE_NAME`, `OPTION_NAME`) pairs, uses reversed logic from `FEATURES`. +## For each `FEATURE_NAME` a definition is added to `OUT_FEATURE_OPTIONS` in the form of: +## +## * `-D=OFF`, if a feature is specified for installation, +## * `-D=ON`, otherwise. +## +## ## ## Notes +## +## The `FEATURES` name parameter can be omitted if no `INVERTED_FEATURES` are used. +## +## At least one (`FEATURE_NAME`, `OPTION_NAME`) pair must be passed to the function call. +## +## Arguments passed to `FEATURES` and `INVERTED_FEATURES` are not validated to prevent duplication. +## If the same (`FEATURE_NAME`, `OPTION_NAME`) pair is passed to both lists, +## two conflicting definitions are added to `OUT_FEATURE_OPTIONS`. +## +## +## ## Examples +## +## ### Example 1: Regular features +## ## ```cmake -## vcpkg_check_features( ) -## ``` -## can be used as a replacement of: -## ```cmake -## if( IN_LIST FEATURES) -## set( ON) -## else() -## set( OFF) -## endif() +## $ ./vcpkg install mimalloc[asm,secure] +## +## # ports/mimalloc/portfile.cmake +## vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS +## # Keyword FEATURES is optional if INVERTED_FEATURES are not used +## asm MI_SEE_ASM +## override MI_OVERRIDE +## secure MI_SECURE +## ) +## +## vcpkg_configure_cmake( +## SOURCE_PATH ${SOURCE_PATH} +## PREFER_NINJA +## OPTIONS +## # Expands to "-DMI_SEE_ASM=ON; -DMI_OVERRIDE=OFF; -DMI_SECURE=ON" +## ${FEATURE_OPTIONS} +## ) ## ``` -## -## However, if you have a feature that was checked like this before: +## +## ### Example 2: Inverted features +## ## ```cmake -## if( IN_LIST FEATURES) -## set( OFF) -## else() -## set( ON) -## endif() +## $ ./vcpkg install cpprestsdk[websockets] +## +## # ports/cpprestsdk/portfile.cmake +## vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS +## INVERTED_FEATURES # <- Keyword INVERTED_FEATURES required +## brotli CPPREST_EXCLUDE_BROTLI +## websockets CPPREST_EXCLUDE_WEBSOCKETS +## ) +## +## vcpkg_configure_cmake( +## SOURCE_PATH ${SOURCE_PATH} +## PREFER_NINJA +## OPTIONS +## # Expands to "-DCPPREST_EXCLUDE_BROTLI=ON; -DCPPREST_EXCLUDE_WEBSOCKETS=OFF" +## ${FEATURE_OPTIONS} +## ) ## ``` -## then you should not use `vcpkg_check_features` instead. [```oniguruma```](https://github.com/microsoft/vcpkg/blob/master/ports/oniguruma/portfile.cmake), for example, has a feature named `non-posix` which is checked with: +## +## ### Example 3: Set multiple options for same feature +## ## ```cmake -## if("non-posix" IN_LIST FEATURES) -## set(ENABLE_POSIX_API OFF) -## else() -## set(ENABLE_POSIX_API ON) -## endif() -## ``` -## and by replacing these code with: +## $ ./vcpkg install pcl[cuda] +## +## # ports/pcl/portfile.cmake +## vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS +## cuda WITH_CUDA +## cuda BUILD_CUDA +## cuda BUILD_GPU +## ) +## +## vcpkg_configure_cmake( +## SOURCE_PATH ${SOURCE_PATH} +## PREFER_NINJA +## OPTIONS +## # Expands to "-DWITH_CUDA=ON; -DBUILD_CUDA=ON; -DBUILD_GPU=ON" +## ${FEATURE_OPTIONS} +## ) +## ``` +## +## ### Example 4: Use regular and inverted features +## ## ```cmake -## vcpkg_check_features(non-posix ENABLE_POSIX_API) -## ``` -## is totally wrong. -## -## `vcpkg_check_features` is supposed to be called only once. Otherwise, the `FEATURE_OPTIONS` variable set by a previous call will be overwritten. -## -## ## Examples -## -## * [czmq](https://github.com/microsoft/vcpkg/blob/master/ports/czmq/portfile.cmake) -## * [xsimd](https://github.com/microsoft/vcpkg/blob/master/ports/xsimd/portfile.cmake) -## * [xtensor](https://github.com/microsoft/vcpkg/blob/master/ports/xtensor/portfile.cmake) +## $ ./vcpkg install rocksdb[tbb] +## +## # ports/rocksdb/portfile.cmake +## vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS +## FEATURES # <- Keyword FEATURES is required because INVERTED_FEATURES are being used +## tbb WITH_TBB +## INVERTED_FEATURES +## tbb ROCKSDB_IGNORE_PACKAGE_TBB +## ) +## +## vcpkg_configure_cmake( +## SOURCE_PATH ${SOURCE_PATH} +## PREFER_NINJA +## OPTIONS +## # Expands to "-DWITH_TBB=ON; -DROCKSDB_IGNORE_PACKAGE_TBB=OFF" +## ${FEATURE_OPTIONS} +## ) +## ``` +## +## ## Examples in portfiles +## +## * [cpprestsdk](https://github.com/microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake) +## * [pcl](https://github.com/microsoft/vcpkg/blob/master/ports/pcl/portfile.cmake) +## * [rocksdb](https://github.com/microsoft/vcpkg/blob/master/ports/rocksdb/portfile.cmake) +## function(vcpkg_check_features) - cmake_parse_arguments(_vcf "" "" "" ${ARGN}) - - list(LENGTH ARGN _vcf_ARGC) - math(EXPR _vcf_INCORRECT_ARGN "${_vcf_ARGC} % 2") + cmake_parse_arguments(_vcf "" "OUT_FEATURE_OPTIONS" "FEATURES;INVERTED_FEATURES" ${ARGN}) - if(_vcf_INCORRECT_ARGN) - message(FATAL_ERROR "Called with incorrect number of arguments.") + if (NOT DEFINED _vcf_OUT_FEATURE_OPTIONS) + message(FATAL_ERROR "OUT_FEATURE_OPTIONS must be specified.") endif() - set(_vcf_IS_FEATURE_ARG ON) - set(_vcf_FEATURE_OPTIONS) - - # Process (feature, output_var) pairs - foreach(_vcf_ARG ${ARGN}) - if(_vcf_IS_FEATURE_ARG) - set(_vcf_FEATURE ${_vcf_ARG}) - - if(NOT ${_vcf_FEATURE} IN_LIST ALL_FEATURES) - message(FATAL_ERROR "Unknown feature: ${_vcf_FEATURE}") - endif() - - set(_vcf_IS_FEATURE_ARG OFF) - else() - set(_vcf_FEATURE_VAR ${_vcf_ARG}) + macro(_check_features _vcf_ARGUMENT _set_if _set_else) + list(LENGTH ${_vcf_ARGUMENT} FEATURES_SET_LEN) + math(EXPR _vcf_INCORRECT_ARGN "${FEATURES_SET_LEN} % 2") + if(_vcf_INCORRECT_ARGN) + message(FATAL_ERROR "Called with incorrect number of arguments.") + endif() - if(${_vcf_FEATURE} IN_LIST FEATURES) - set(${_vcf_FEATURE_VAR} ON PARENT_SCOPE) - list(APPEND _vcf_FEATURE_OPTIONS "-D${_vcf_FEATURE_VAR}=ON") + set(_vcf_IS_FEATURE_NAME_ARG ON) + foreach(_vcf_ARG ${${_vcf_ARGUMENT}}) + if(_vcf_IS_FEATURE_NAME_ARG) + set(_vcf_FEATURE_NAME ${_vcf_ARG}) + if(NOT ${_vcf_FEATURE_NAME} IN_LIST ALL_FEATURES) + message(FATAL_ERROR "Unknown feature: ${_vcf_FEATURE_NAME}") + endif() + set(_vcf_IS_FEATURE_NAME_ARG OFF) else() - set(${_vcf_FEATURE_VAR} OFF PARENT_SCOPE) - list(APPEND _vcf_FEATURE_OPTIONS "-D${_vcf_FEATURE_VAR}=OFF") + set(_vcf_FEATURE_VARIABLE ${_vcf_ARG}) + if(${_vcf_FEATURE_NAME} IN_LIST FEATURES) + list(APPEND _vcf_FEATURE_OPTIONS "-D${_vcf_FEATURE_VARIABLE}=${_set_if}") + else() + list(APPEND _vcf_FEATURE_OPTIONS "-D${_vcf_FEATURE_VARIABLE}=${_set_else}") + endif() + set(_vcf_IS_FEATURE_NAME_ARG ON) endif() + endforeach() + endmacro() - set(_vcf_IS_FEATURE_ARG ON) - endif() - endforeach() + set(_vcf_FEATURE_OPTIONS) - if(DEFINED FEATURE_OPTIONS) - message(WARNING "FEATURE_OPTIONS is already defined and will be overwritten.") + if (DEFINED _vcf_FEATURES OR DEFINED _vcf_INVERTED_FEATURES) + _check_features(_vcf_FEATURES ON OFF) + _check_features(_vcf_INVERTED_FEATURES OFF ON) + else() + # Skip arguments that correspond to OUT_FEATURE_OPTIONS and its value. + list(SUBLIST ARGN 2 -1 _vcf_ARGN) + _check_features(_vcf_ARGN ON OFF) endif() - - set(FEATURE_OPTIONS ${_vcf_FEATURE_OPTIONS} PARENT_SCOPE) + set(${_vcf_OUT_FEATURE_OPTIONS} "${_vcf_FEATURE_OPTIONS}" PARENT_SCOPE) endfunction() diff --git a/scripts/cmake/vcpkg_configure_cmake.cmake b/scripts/cmake/vcpkg_configure_cmake.cmake index 37362a5a2..6c392d385 100644 --- a/scripts/cmake/vcpkg_configure_cmake.cmake +++ b/scripts/cmake/vcpkg_configure_cmake.cmake @@ -8,6 +8,7 @@ ## SOURCE_PATH <${SOURCE_PATH}> ## [PREFER_NINJA] ## [DISABLE_PARALLEL_CONFIGURE] +## [NO_CHARSET_FLAG] ## [GENERATOR <"NMake Makefiles">] ## [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] ## [OPTIONS_RELEASE <-DOPTIMIZE=1>...] @@ -28,6 +29,11 @@ ## Disables running the CMake configure step in parallel. ## This is needed for libraries which write back into their source directory during configure. ## +## ### NO_CHARSET_FLAG +## Disables passing `utf-8` as the default character set to `CMAKE_C_FLAGS` and `CMAKE_CXX_FLAGS`. +## +## This is needed for libraries that set their own source code's character set. +## ## ### GENERATOR ## Specifies the precise generator to use. ## -- cgit v1.2.3 From 300e21d59ebfe42e118cf4e97887f0680fbcfa2f Mon Sep 17 00:00:00 2001 From: Nicole Mazzuca Date: Fri, 9 Aug 2019 11:16:35 -0700 Subject: [vcpkg] Major tool CMakeLists.txt updates - Add the "VCPKG_DEVELOPMENT_WARNINGS" flag - setting "WERROR" will also set this flag - This flag is set by default - on GCC/clang, this will pass '-Wall -Wextra -Wpedantic -Werror' - on GCC, this will additionally pass '-Wmissing-declarations' - on clang, this will additionally pass '-Wmissing-prototypes' - on MSVC, this will pass '-W4 -WX' - On Visual Studio 2017 and later, pass '-permissive-' - Change the source for fallout of these changes - add `format` subcommand - formats all C++ source and header files using clang-format - move `include/vcpkg-test/catch.h` to `include/catch2/catch.hpp` - pass CONFIGURE_DEPENDS to file(GLOB) --- scripts/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index 09d77b07d..afdd9c1b3 100644 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -249,7 +249,7 @@ buildDir="$vcpkgRootDir/toolsrc/build.rel" rm -rf "$buildDir" mkdir -p "$buildDir" -(cd "$buildDir" && CXX=$CXX "$cmakeExe" .. -DCMAKE_BUILD_TYPE=Release -G "Ninja" "-DCMAKE_MAKE_PROGRAM=$ninjaExe" "-DBUILD_TESTING=OFF" "-DDEFINE_DISABLE_METRICS=$vcpkgDisableMetrics" "-DVCPKG_ALLOW_APPLE_CLANG=$vcpkgAllowAppleClang") || exit 1 +(cd "$buildDir" && CXX=$CXX "$cmakeExe" .. -DCMAKE_BUILD_TYPE=Release -G "Ninja" "-DCMAKE_MAKE_PROGRAM=$ninjaExe" "-DBUILD_TESTING=OFF" "-DVCPKG_DEVELOPMENT_WARNINGS=Off" "-DDEFINE_DISABLE_METRICS=$vcpkgDisableMetrics" "-DVCPKG_ALLOW_APPLE_CLANG=$vcpkgAllowAppleClang") || exit 1 (cd "$buildDir" && "$cmakeExe" --build .) || exit 1 rm -rf "$vcpkgRootDir/vcpkg" -- cgit v1.2.3 From 9c879883f6730c70cb654899e1966896740f33b5 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 19 Aug 2019 20:13:30 +0200 Subject: add variables for target specific library suffix and prefix. (#7600) also set the according cmakevariables in script mode enabling find_library calls in portfiles --- scripts/cmake/vcpkg_common_definitions.cmake | 39 ++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_common_definitions.cmake b/scripts/cmake/vcpkg_common_definitions.cmake index 8dc05de3c..9724a33dc 100644 --- a/scripts/cmake/vcpkg_common_definitions.cmake +++ b/scripts/cmake/vcpkg_common_definitions.cmake @@ -1,3 +1,21 @@ +## # vcpkg_common_definitions +## +## File contains helpful variabls for portfiles which are commonly needed or used. +## +## ## The following variables are available: +## ```cmake +## VCPKG_TARGET_IS_ with being one of the following: WINDOWS, UWP, LINUX, OSX, ANDROID, FREEBSD. only defined if +## VCPKG_TARGET_STATIC_LIBRARY_PREFIX static library prefix for target (same as CMAKE_STATIC_LIBRARY_PREFIX) +## VCPKG_TARGET_STATIC_LIBRARY_SUFFIX static library suffix for target (same as CMAKE_STATIC_LIBRARY_SUFFIX) +## VCPKG_TARGET_SHARED_LIBRARY_PREFIX shared library prefix for target (same as CMAKE_SHARED_LIBRARY_PREFIX) +## VCPKG_TARGET_SHARED_LIBRARY_SUFFIX shared library suffix for target (same as CMAKE_SHARED_LIBRARY_SUFFIX) +## ``` +## +## CMAKE_STATIC_LIBRARY_PREFIX, CMAKE_STATIC_LIBRARY_SUFFIX, CMAKE_SHARED_LIBRARY_PREFIX, CMAKE_SHARED_LIBRARY_SUFFIX are defined for the target so that +## portfiles are able to use find_library calls to discover dependent libraries within the current triplet for ports. +## + +#Helper variable to identify the Target system. VCPKG_TARGET_IS_ if (NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") set(VCPKG_TARGET_IS_WINDOWS 1) if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") @@ -12,3 +30,24 @@ elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android") elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") set(VCPKG_TARGET_IS_FREEBSD 1) endif() + +#Helper variables for libraries +if(VCPKG_TARGET_IS_WINDOWS) + set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".lib") + set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".dll") + set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "") + set(VCPKG_TARGET_SHARED_LIBRARY_PREFIX "") +else() + set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".a") + set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".so") + set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "lib") + set(VCPKG_TARGET_SHARED_LIBRARY_PREFIX "lib") +endif() +#Setting these variables allows find_library to work in script mode and thus in portfiles! +#This allows us scale down on hardcoded target dependent paths in portfiles +set(CMAKE_STATIC_LIBRARY_SUFFIX ${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}) +set(CMAKE_SHARED_LIBRARY_SUFFIX ${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}) +set(CMAKE_STATIC_LIBRARY_PREFIX ${VCPKG_TARGET_STATIC_LIBRARY_PREFIX}) +set(CMAKE_SHARED_LIBRARY_PREFIX ${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}) + + -- cgit v1.2.3 From 743bec775a0026b8d63e36dca20a54f10038ec5a Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Tue, 20 Aug 2019 17:34:18 +0200 Subject: make find_library useable without errors to console. (#7773) --- scripts/cmake/vcpkg_common_definitions.cmake | 2 ++ 1 file changed, 2 insertions(+) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_common_definitions.cmake b/scripts/cmake/vcpkg_common_definitions.cmake index 9724a33dc..2e4f5f130 100644 --- a/scripts/cmake/vcpkg_common_definitions.cmake +++ b/scripts/cmake/vcpkg_common_definitions.cmake @@ -49,5 +49,7 @@ set(CMAKE_STATIC_LIBRARY_SUFFIX ${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}) set(CMAKE_SHARED_LIBRARY_SUFFIX ${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}) set(CMAKE_STATIC_LIBRARY_PREFIX ${VCPKG_TARGET_STATIC_LIBRARY_PREFIX}) set(CMAKE_SHARED_LIBRARY_PREFIX ${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}) +set(CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_STATIC_LIBRARY_SUFFIX};${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") # Required by find_library +set(CMAKE_FIND_LIBRARY_PREFIXES "${CMAKE_STATIC_LIBRARY_PREFIX};${CMAKE_SHARED_LIBRARY_PREFIX}" CACHE INTERNAL "") # Required by find_library -- cgit v1.2.3 From 4da95d667c8600c80b4b5731631ebb7bcbc91f1b Mon Sep 17 00:00:00 2001 From: Curtis J Bezault Date: Tue, 20 Aug 2019 08:47:26 -0700 Subject: [vcpkg]Port toolchains (#7687) * checkpoint commit * Only set VCPKG_ENV_OVERRIDES_FILE if it exists * First pass at working port-toolchain * Update VERSION.txt * Return rvalue * Fix compilation error * Some fixes are requested by @ubsan * Fix another compilation error --- scripts/get_triplet_environment.cmake | 4 ++-- scripts/ports.cmake | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'scripts') diff --git a/scripts/get_triplet_environment.cmake b/scripts/get_triplet_environment.cmake index 0457cee9b..3b0b9fbef 100644 --- a/scripts/get_triplet_environment.cmake +++ b/scripts/get_triplet_environment.cmake @@ -1,6 +1,6 @@ include(${CMAKE_TRIPLET_FILE}) -if (DEFINED CMAKE_ENV_OVERRIDES_FILE) - include(${CMAKE_ENV_OVERRIDES_FILE} OPTIONAL) +if (DEFINED VCPKG_ENV_OVERRIDES_FILE) + include(${VCPKG_ENV_OVERRIDES_FILE}) endif() # GUID used as a flag - "cut here line" diff --git a/scripts/ports.cmake b/scripts/ports.cmake index 86b2719d5..7130825e2 100644 --- a/scripts/ports.cmake +++ b/scripts/ports.cmake @@ -67,7 +67,16 @@ if(CMD MATCHES "^BUILD$") file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR} ${CURRENT_PACKAGES_DIR}) include(${CMAKE_TRIPLET_FILE}) - include(${ENV_OVERRIDES_FILE} OPTIONAL) + + if (DEFINED VCPKG_ENV_OVERRIDES_FILE) + include(${VCPKG_ENV_OVERRIDES_FILE}) + endif() + + if (DEFINED VCPKG_PORT_TOOLCHAINS) + foreach(VCPKG_PORT_TOOLCHAIN ${VCPKG_PORT_TOOLCHAINS}) + include(${VCPKG_PORT_TOOLCHAIN}) + endforeach() + endif() set(TRIPLET_SYSTEM_ARCH ${VCPKG_TARGET_ARCHITECTURE}) include(${CMAKE_CURRENT_LIST_DIR}/cmake/vcpkg_common_definitions.cmake) -- cgit v1.2.3 From 0433989bad71f765a17c60d81d4093148ed547c6 Mon Sep 17 00:00:00 2001 From: dan-shaw <51385773+dan-shaw@users.noreply.github.com> Date: Tue, 20 Aug 2019 12:13:26 -0700 Subject: [tensorflow] add new port for linux (#7568) * [+] Add tensorflow-cc port (Linux only) * [~] Refactor installation of tensorflow/external 1. Install tensorflow/external to tensorflow-etc/external; 2. Fix TensorflowCCConfig.cmake accordingly. * [tensorflow] Work in progress * fix tensorflow linux config * [tensorflow] partial support for windows * fix config paths * use environmental variables instead * remove files * add python_path * add verbose error messages * review fixes * [tensorflow] refactor config file * minor changes * set arch for CI --- scripts/cmake/vcpkg_find_acquire_program.cmake | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 84ebdbfa8..fed016c7b 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -45,6 +45,7 @@ function(vcpkg_find_acquire_program VAR) unset(_vfa_RENAME) unset(SUBDIR) unset(REQUIRED_INTERPRETER) + unset(_vfa_SUPPORTED) unset(POST_INSTALL_COMMAND) vcpkg_get_program_files_platform_bitness(PROGRAM_FILES_PLATFORM_BITNESS) @@ -231,6 +232,23 @@ function(vcpkg_find_acquire_program VAR) set(URL "http://doxygen.nl/files/doxygen-1.8.15.windows.bin.zip") set(ARCHIVE "doxygen-1.8.15.windows.bin.zip") set(HASH 89482dcb1863d381d47812c985593e736d703931d49994e09c7c03ef67e064115d0222b8de1563a7930404c9bc2d3be323f3d13a01ef18861be584db3d5a953c) + elseif(VAR MATCHES "BAZEL") + set(PROGNAME bazel) + set(BAZEL_VERSION 0.25.2) + set(SUBDIR ${BAZEL_VERSION}) + set(PATHS ${DOWNLOADS}/tools/bazel/${SUBDIR}) + set(_vfa_RENAME "bazel") + if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") + set(_vfa_SUPPORTED ON) + set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${BAZEL_VERSION}-linux-x86_64") + set(ARCHIVE "bazel-${BAZEL_VERSION}-linux-x86_64") + set(NOEXTRACT ON) + set(HASH db4a583cf2996aeb29fd008261b12fe39a4a5faf0fbf96f7124e6d3ffeccf6d9655d391378e68dd0915bc91c9e146a51fd9661963743857ca25179547feceab1) + else() + set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${BAZEL_VERSION}-windows-x86_64.zip") + set(ARCHIVE "bazel-${BAZEL_VERSION}-windows-x86_64.zip") + set(HASH 6482f99a0896f55ef65739e7b53452fd9c0adf597b599d0022a5e0c5fa4374f4a958d46f98e8ba25af4b065adacc578bfedced483d8c169ea5cb1777a99eea53) + endif() # Download Tools elseif(VAR MATCHES "ARIA2") set(PROGNAME aria2c) @@ -254,7 +272,7 @@ function(vcpkg_find_acquire_program VAR) do_find() if("${${VAR}}" MATCHES "-NOTFOUND") - if(NOT CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") + if(NOT CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows" AND NOT _vfa_SUPPORTED) set(EXAMPLE ".") if(DEFINED BREW_PACKAGE_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") set(EXAMPLE ":\n brew install ${BREW_PACKAGE_NAME}") @@ -274,9 +292,9 @@ function(vcpkg_find_acquire_program VAR) file(MAKE_DIRECTORY ${PROG_PATH_SUBDIR}) if(DEFINED NOEXTRACT) if(DEFINED _vfa_RENAME) - file(INSTALL ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR} RENAME ${_vfa_RENAME}) + file(INSTALL ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR} RENAME ${_vfa_RENAME} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) else() - file(COPY ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR}) + file(COPY ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) endif() else() get_filename_component(ARCHIVE_EXTENSION ${ARCHIVE} EXT) -- cgit v1.2.3 From 95f9df71343c9c688336a0ac8489ae20ffc035e2 Mon Sep 17 00:00:00 2001 From: martin-s Date: Thu, 22 Aug 2019 21:55:50 +0000 Subject: - Fixed ports script. (#7793) --- scripts/ports.cmake | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'scripts') diff --git a/scripts/ports.cmake b/scripts/ports.cmake index 7130825e2..056485568 100644 --- a/scripts/ports.cmake +++ b/scripts/ports.cmake @@ -6,8 +6,9 @@ macro(debug_message) endif() endmacro() -#Detect .vcpkg-root to figure VCPKG_ROOT_DIR -SET(VCPKG_ROOT_DIR_CANDIDATE ${CMAKE_CURRENT_LIST_DIR}) +#Detect .vcpkg-root to figure VCPKG_ROOT_DIR, starting from triplet folder. +get_filename_component(TARGET_TRIPLET_DIR ${TARGET_TRIPLET_FILE} DIRECTORY) +SET(VCPKG_ROOT_DIR_CANDIDATE ${TARGET_TRIPLET_DIR}) while(IS_DIRECTORY ${VCPKG_ROOT_DIR_CANDIDATE} AND NOT EXISTS "${VCPKG_ROOT_DIR_CANDIDATE}/.vcpkg-root") get_filename_component(VCPKG_ROOT_DIR_TEMP ${VCPKG_ROOT_DIR_CANDIDATE} DIRECTORY) if (VCPKG_ROOT_DIR_TEMP STREQUAL VCPKG_ROOT_DIR_CANDIDATE) # If unchanged, we have reached the root of the drive @@ -19,7 +20,7 @@ endwhile() set(VCPKG_ROOT_DIR ${VCPKG_ROOT_DIR_CANDIDATE}) -list(APPEND CMAKE_MODULE_PATH ${VCPKG_ROOT_DIR}/scripts/cmake) +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake) set(CURRENT_INSTALLED_DIR ${VCPKG_ROOT_DIR}/installed/${TARGET_TRIPLET} CACHE PATH "Location to install final packages") set(DOWNLOADS ${VCPKG_ROOT_DIR}/downloads CACHE PATH "Location to download sources and tools") set(PACKAGES_DIR ${VCPKG_ROOT_DIR}/packages CACHE PATH "Location to store package images") -- cgit v1.2.3 From 78abf650e7797d28bcb4c4c94db47638a80c2005 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Fri, 23 Aug 2019 00:57:24 +0200 Subject: [vcpkg] QoL: add host/target dependent variables for executable suffixes (#7599) * improve documentation * add executable suffixes for host/target into common definitions --- scripts/cmake/vcpkg_common_definitions.cmake | 125 +++++++++++++++------------ 1 file changed, 70 insertions(+), 55 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_common_definitions.cmake b/scripts/cmake/vcpkg_common_definitions.cmake index 2e4f5f130..662ea2a6e 100644 --- a/scripts/cmake/vcpkg_common_definitions.cmake +++ b/scripts/cmake/vcpkg_common_definitions.cmake @@ -1,55 +1,70 @@ -## # vcpkg_common_definitions -## -## File contains helpful variabls for portfiles which are commonly needed or used. -## -## ## The following variables are available: -## ```cmake -## VCPKG_TARGET_IS_ with being one of the following: WINDOWS, UWP, LINUX, OSX, ANDROID, FREEBSD. only defined if -## VCPKG_TARGET_STATIC_LIBRARY_PREFIX static library prefix for target (same as CMAKE_STATIC_LIBRARY_PREFIX) -## VCPKG_TARGET_STATIC_LIBRARY_SUFFIX static library suffix for target (same as CMAKE_STATIC_LIBRARY_SUFFIX) -## VCPKG_TARGET_SHARED_LIBRARY_PREFIX shared library prefix for target (same as CMAKE_SHARED_LIBRARY_PREFIX) -## VCPKG_TARGET_SHARED_LIBRARY_SUFFIX shared library suffix for target (same as CMAKE_SHARED_LIBRARY_SUFFIX) -## ``` -## -## CMAKE_STATIC_LIBRARY_PREFIX, CMAKE_STATIC_LIBRARY_SUFFIX, CMAKE_SHARED_LIBRARY_PREFIX, CMAKE_SHARED_LIBRARY_SUFFIX are defined for the target so that -## portfiles are able to use find_library calls to discover dependent libraries within the current triplet for ports. -## - -#Helper variable to identify the Target system. VCPKG_TARGET_IS_ -if (NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") - set(VCPKG_TARGET_IS_WINDOWS 1) - if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") - set(VCPKG_TARGET_IS_UWP 1) - endif() -elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Darwin") - set(VCPKG_TARGET_IS_OSX 1) -elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") - set(VCPKG_TARGET_IS_LINUX 1) -elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android") - set(VCPKG_TARGET_IS_ANDROID 1) -elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") - set(VCPKG_TARGET_IS_FREEBSD 1) -endif() - -#Helper variables for libraries -if(VCPKG_TARGET_IS_WINDOWS) - set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".lib") - set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".dll") - set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "") - set(VCPKG_TARGET_SHARED_LIBRARY_PREFIX "") -else() - set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".a") - set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".so") - set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "lib") - set(VCPKG_TARGET_SHARED_LIBRARY_PREFIX "lib") -endif() -#Setting these variables allows find_library to work in script mode and thus in portfiles! -#This allows us scale down on hardcoded target dependent paths in portfiles -set(CMAKE_STATIC_LIBRARY_SUFFIX ${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}) -set(CMAKE_SHARED_LIBRARY_SUFFIX ${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}) -set(CMAKE_STATIC_LIBRARY_PREFIX ${VCPKG_TARGET_STATIC_LIBRARY_PREFIX}) -set(CMAKE_SHARED_LIBRARY_PREFIX ${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}) -set(CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_STATIC_LIBRARY_SUFFIX};${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") # Required by find_library -set(CMAKE_FIND_LIBRARY_PREFIXES "${CMAKE_STATIC_LIBRARY_PREFIX};${CMAKE_SHARED_LIBRARY_PREFIX}" CACHE INTERNAL "") # Required by find_library - - +## # vcpkg_common_definitions +## +## File contains helpful variabls for portfiles which are commonly needed or used. +## +## ## The following variables are available: +## ```cmake +## VCPKG_TARGET_IS_ with being one of the following: WINDOWS, UWP, LINUX, OSX, ANDROID, FREEBSD. only defined if +## VCPKG_HOST_EXECUTABLE_SUFFIX executable suffix of the host +## VCPKG_TARGET_EXECUTABLE_SUFFIX executable suffix of the target +## VCPKG_TARGET_STATIC_LIBRARY_PREFIX static library prefix for target (same as CMAKE_STATIC_LIBRARY_PREFIX) +## VCPKG_TARGET_STATIC_LIBRARY_SUFFIX static library suffix for target (same as CMAKE_STATIC_LIBRARY_SUFFIX) +## VCPKG_TARGET_SHARED_LIBRARY_PREFIX shared library prefix for target (same as CMAKE_SHARED_LIBRARY_PREFIX) +## VCPKG_TARGET_SHARED_LIBRARY_SUFFIX shared library suffix for target (same as CMAKE_SHARED_LIBRARY_SUFFIX) +## ``` +## +## CMAKE_STATIC_LIBRARY_PREFIX, CMAKE_STATIC_LIBRARY_SUFFIX, CMAKE_SHARED_LIBRARY_PREFIX, CMAKE_SHARED_LIBRARY_SUFFIX are defined for the target so that +## portfiles are able to use find_library calls to discover dependent libraries within the current triplet for ports. +## + +#Helper variable to identify the Target system. VCPKG_TARGET_IS_ +if (NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + set(VCPKG_TARGET_IS_WINDOWS 1) + if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + set(VCPKG_TARGET_IS_UWP 1) + endif() +elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Darwin") + set(VCPKG_TARGET_IS_OSX 1) +elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") + set(VCPKG_TARGET_IS_LINUX 1) +elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android") + set(VCPKG_TARGET_IS_ANDROID 1) +elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + set(VCPKG_TARGET_IS_FREEBSD 1) +endif() + +#Helper variables to identify executables on host/target +if(CMAKE_HOST_WIN32) + set(VCPKG_HOST_EXECUTABLE_SUFFIX ".exe") +else() + set(VCPKG_HOST_EXECUTABLE_SUFFIX "") +endif() +#set(CMAKE_EXECUTABLE_SUFFIX ${VCPKG_HOST_EXECUTABLE_SUFFIX}) not required by find_program + +if(VCPKG_TARGET_IS_WINDOWS) + set(VCPKG_TARGET_EXECUTABLE_SUFFIX ".exe") +else() + set(VCPKG_TARGET_EXECUTABLE_SUFFIX "") +endif() + +#Helper variables for libraries +if(VCPKG_TARGET_IS_WINDOWS) + set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".lib") + set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".dll") + set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "") + set(VCPKG_TARGET_SHARED_LIBRARY_PREFIX "") +else() + set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".a") + set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".so") + set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "lib") + set(VCPKG_TARGET_SHARED_LIBRARY_PREFIX "lib") +endif() +#Setting these variables allows find_library to work in script mode and thus in portfiles! +#This allows us scale down on hardcoded target dependent paths in portfiles +set(CMAKE_STATIC_LIBRARY_SUFFIX ${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}) +set(CMAKE_SHARED_LIBRARY_SUFFIX ${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}) +set(CMAKE_STATIC_LIBRARY_PREFIX ${VCPKG_TARGET_STATIC_LIBRARY_PREFIX}) +set(CMAKE_SHARED_LIBRARY_PREFIX ${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}) +set(CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_STATIC_LIBRARY_SUFFIX};${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") # Required by find_library +set(CMAKE_FIND_LIBRARY_PREFIXES "${CMAKE_STATIC_LIBRARY_PREFIX};${CMAKE_SHARED_LIBRARY_PREFIX}" CACHE INTERNAL "") # Required by find_library + -- cgit v1.2.3 From 65d4bc146bf7c1c21989b680497b1f6f9a09c967 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Wed, 28 Aug 2019 11:47:17 -0700 Subject: [vcpkg install] Enable Download Mode (#7797) * [portfile functions] Override execute_process() to accept ALLOW_IN_DOWNLOAD_MODE option * [vcpkg install] Set VCPKG_DOWNLOAD_MODE when using --only-downloads option * [vcpkg_find_acquire_program] Allow in Download Mode * Don't stop when build fails for a package * Download sources for all packages in dependency graph * Improve output messages * Enable acquiring MSYS packages in download mode * Documentation * Update documentation * execute_process() always fails on Download Mode * Regenerate docs and fix formatting * Run clang-format * Use _execute_process on vcpkg_from_ helpers --- scripts/cmake/execute_process.cmake | 19 ++++++++ scripts/cmake/vcpkg_acquire_msys.cmake | 8 ++-- scripts/cmake/vcpkg_apply_patches.cmake | 2 +- scripts/cmake/vcpkg_common_functions.cmake | 1 + scripts/cmake/vcpkg_download_distfile.cmake | 2 +- scripts/cmake/vcpkg_execute_required_process.cmake | 18 ++++++- scripts/cmake/vcpkg_extract_source_archive.cmake | 1 + scripts/cmake/vcpkg_find_acquire_program.cmake | 5 +- scripts/cmake/vcpkg_from_git.cmake | 5 +- scripts/cmake/vcpkg_from_gitlab.cmake | 2 +- scripts/cmake/vcpkg_test_cmake.cmake | 55 ---------------------- 11 files changed, 52 insertions(+), 66 deletions(-) create mode 100644 scripts/cmake/execute_process.cmake (limited to 'scripts') diff --git a/scripts/cmake/execute_process.cmake b/scripts/cmake/execute_process.cmake new file mode 100644 index 000000000..90198e337 --- /dev/null +++ b/scripts/cmake/execute_process.cmake @@ -0,0 +1,19 @@ +## # execute_process +## +## Intercepts all calls to execute_process() inside portfiles and fails when Download Mode +## is enabled. +## +## In order to execute a process in Download Mode call `_execute_process()` instead. +## +if (NOT DEFINED OVERRIDEN_EXECUTE_PROCESS) +set(OVERRIDEN_EXECUTE_PROCESS ON) + +function(execute_process) + message(FATAL_ERROR +[[ + This command cannot be executed in Download Mode. + Halting portfile execution. +]]) +endfunction() + +endif() \ No newline at end of file diff --git a/scripts/cmake/vcpkg_acquire_msys.cmake b/scripts/cmake/vcpkg_acquire_msys.cmake index 09090db68..f1f09dc7e 100644 --- a/scripts/cmake/vcpkg_acquire_msys.cmake +++ b/scripts/cmake/vcpkg_acquire_msys.cmake @@ -81,15 +81,15 @@ function(vcpkg_acquire_msys PATH_TO_ROOT_OUT) file(REMOVE_RECURSE ${TOOLPATH}/${TOOLSUBPATH}) file(MAKE_DIRECTORY ${TOOLPATH}) - execute_process( + _execute_process( COMMAND ${CMAKE_COMMAND} -E tar xzf ${ARCHIVE_PATH} WORKING_DIRECTORY ${TOOLPATH} ) - execute_process( + _execute_process( COMMAND ${PATH_TO_ROOT}/usr/bin/bash.exe --noprofile --norc -c "PATH=/usr/bin;pacman-key --init;pacman-key --populate" WORKING_DIRECTORY ${TOOLPATH} ) - execute_process( + _execute_process( COMMAND ${PATH_TO_ROOT}/usr/bin/bash.exe --noprofile --norc -c "PATH=/usr/bin;pacman -Syu --noconfirm" WORKING_DIRECTORY ${TOOLPATH} ) @@ -104,6 +104,7 @@ function(vcpkg_acquire_msys PATH_TO_ROOT_OUT) set(_ENV_ORIGINAL $ENV{PATH}) set(ENV{PATH} ${PATH_TO_ROOT}/usr/bin) vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE COMMAND ${PATH_TO_ROOT}/usr/bin/bash.exe --noprofile --norc -c "pacman -Sy --noconfirm --needed ${_am_PACKAGES}" WORKING_DIRECTORY ${TOOLPATH} LOGNAME msys-pacman-${TARGET_TRIPLET} @@ -116,6 +117,7 @@ function(vcpkg_acquire_msys PATH_TO_ROOT_OUT) # Deal with a stale process created by MSYS if (NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE COMMAND TASKKILL /F /IM gpg-agent.exe /fi "memusage gt 2" WORKING_DIRECTORY ${SOURCE_PATH} ) diff --git a/scripts/cmake/vcpkg_apply_patches.cmake b/scripts/cmake/vcpkg_apply_patches.cmake index ac0b78e20..9698917de 100644 --- a/scripts/cmake/vcpkg_apply_patches.cmake +++ b/scripts/cmake/vcpkg_apply_patches.cmake @@ -40,7 +40,7 @@ function(vcpkg_apply_patches) get_filename_component(ABSOLUTE_PATCH "${PATCH}" ABSOLUTE BASE_DIR "${CURRENT_PORT_DIR}") message(STATUS "Applying patch ${PATCH}") set(LOGNAME patch-${TARGET_TRIPLET}-${PATCHNUM}) - execute_process( + _execute_process( COMMAND ${GIT} --work-tree=. --git-dir=.git apply "${ABSOLUTE_PATCH}" --ignore-whitespace --whitespace=nowarn --verbose OUTPUT_FILE ${CURRENT_BUILDTREES_DIR}/${LOGNAME}-out.log ERROR_FILE ${CURRENT_BUILDTREES_DIR}/${LOGNAME}-err.log diff --git a/scripts/cmake/vcpkg_common_functions.cmake b/scripts/cmake/vcpkg_common_functions.cmake index e9e52bad8..5f4155e9d 100644 --- a/scripts/cmake/vcpkg_common_functions.cmake +++ b/scripts/cmake/vcpkg_common_functions.cmake @@ -1,3 +1,4 @@ +include(execute_process) include(vcpkg_acquire_msys) include(vcpkg_add_to_path) include(vcpkg_check_features) diff --git a/scripts/cmake/vcpkg_download_distfile.cmake b/scripts/cmake/vcpkg_download_distfile.cmake index 72016b8c9..1fbff40e5 100644 --- a/scripts/cmake/vcpkg_download_distfile.cmake +++ b/scripts/cmake/vcpkg_download_distfile.cmake @@ -120,7 +120,7 @@ function(vcpkg_download_distfile VAR) list(APPEND request_headers "--header=${header}") endforeach() endif() - execute_process( + _execute_process( COMMAND ${ARIA2} ${vcpkg_download_distfile_URLS} -o temp/${vcpkg_download_distfile_FILENAME} -l download-${vcpkg_download_distfile_FILENAME}-detailed.log diff --git a/scripts/cmake/vcpkg_execute_required_process.cmake b/scripts/cmake/vcpkg_execute_required_process.cmake index e65d1970a..f25a5b55e 100644 --- a/scripts/cmake/vcpkg_execute_required_process.cmake +++ b/scripts/cmake/vcpkg_execute_required_process.cmake @@ -11,6 +11,10 @@ ## ) ## ``` ## ## Parameters +## ### ALLOW_IN_DOWNLOAD_MODE +## Allows the command to execute in Download Mode. +## [See execute_process() override](../../scripts/cmake/execute_process.cmake). +## ## ### COMMAND ## The command to be executed, along with its arguments. ## @@ -30,10 +34,20 @@ ## * [qt5](https://github.com/Microsoft/vcpkg/blob/master/ports/qt5/portfile.cmake) include(vcpkg_prettify_command) function(vcpkg_execute_required_process) - cmake_parse_arguments(vcpkg_execute_required_process "" "WORKING_DIRECTORY;LOGNAME" "COMMAND" ${ARGN}) + cmake_parse_arguments(vcpkg_execute_required_process "ALLOW_IN_DOWNLOAD_MODE" "WORKING_DIRECTORY;LOGNAME" "COMMAND" ${ARGN}) set(LOG_OUT "${CURRENT_BUILDTREES_DIR}/${vcpkg_execute_required_process_LOGNAME}-out.log") set(LOG_ERR "${CURRENT_BUILDTREES_DIR}/${vcpkg_execute_required_process_LOGNAME}-err.log") - execute_process( + + set(execute_process_function execute_process) + if (DEFINED VCPKG_DOWNLOAD_MODE AND NOT vcpkg_execute_required_process_ALLOW_IN_DOWNLOAD_MODE) + message(FATAL_ERROR +[[ +This command cannot be executed in Download Mode. +Halting portfile execution. +]]) + endif() + + _execute_process( COMMAND ${vcpkg_execute_required_process_COMMAND} OUTPUT_FILE ${LOG_OUT} ERROR_FILE ${LOG_ERR} diff --git a/scripts/cmake/vcpkg_extract_source_archive.cmake b/scripts/cmake/vcpkg_extract_source_archive.cmake index a55419b19..fbae94b55 100644 --- a/scripts/cmake/vcpkg_extract_source_archive.cmake +++ b/scripts/cmake/vcpkg_extract_source_archive.cmake @@ -41,6 +41,7 @@ function(vcpkg_extract_source_archive ARCHIVE) message(STATUS "Extracting source ${ARCHIVE}") file(MAKE_DIRECTORY ${WORKING_DIRECTORY}) vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE COMMAND ${CMAKE_COMMAND} -E tar xjf ${ARCHIVE} WORKING_DIRECTORY ${WORKING_DIRECTORY} LOGNAME extract diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index fed016c7b..aa8a70026 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -302,12 +302,12 @@ function(vcpkg_find_acquire_program VAR) if(ARCHIVE_EXTENSION STREQUAL ".msi") file(TO_NATIVE_PATH "${ARCHIVE_PATH}" ARCHIVE_NATIVE_PATH) file(TO_NATIVE_PATH "${PROG_PATH_SUBDIR}" DESTINATION_NATIVE_PATH) - execute_process( + _execute_process( COMMAND msiexec /a ${ARCHIVE_NATIVE_PATH} /qn TARGETDIR=${DESTINATION_NATIVE_PATH} WORKING_DIRECTORY ${DOWNLOADS} ) else() - execute_process( + _execute_process( COMMAND ${CMAKE_COMMAND} -E tar xzf ${ARCHIVE_PATH} WORKING_DIRECTORY ${PROG_PATH_SUBDIR} ) @@ -316,6 +316,7 @@ function(vcpkg_find_acquire_program VAR) if(DEFINED POST_INSTALL_COMMAND) vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE COMMAND ${POST_INSTALL_COMMAND} WORKING_DIRECTORY ${PROG_PATH_SUBDIR} LOGNAME ${VAR}-tool-post-install diff --git a/scripts/cmake/vcpkg_from_git.cmake b/scripts/cmake/vcpkg_from_git.cmake index 0db818f80..bad5384ca 100644 --- a/scripts/cmake/vcpkg_from_git.cmake +++ b/scripts/cmake/vcpkg_from_git.cmake @@ -74,16 +74,18 @@ function(vcpkg_from_git) find_program(GIT NAMES git git.cmd) # Note: git init is safe to run multiple times vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE COMMAND ${GIT} init git-tmp WORKING_DIRECTORY ${DOWNLOADS} LOGNAME git-init-${TARGET_TRIPLET} ) vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE COMMAND ${GIT} fetch ${_vdud_URL} ${_vdud_REF} --depth 1 -n WORKING_DIRECTORY ${DOWNLOADS}/git-tmp LOGNAME git-fetch-${TARGET_TRIPLET} ) - execute_process( + _execute_process( COMMAND ${GIT} rev-parse FETCH_HEAD OUTPUT_VARIABLE REV_PARSE_HEAD ERROR_VARIABLE REV_PARSE_HEAD @@ -100,6 +102,7 @@ function(vcpkg_from_git) file(MAKE_DIRECTORY "${DOWNLOADS}/temp") vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE COMMAND ${GIT} archive FETCH_HEAD -o "${TEMP_ARCHIVE}" WORKING_DIRECTORY ${DOWNLOADS}/git-tmp LOGNAME git-archive diff --git a/scripts/cmake/vcpkg_from_gitlab.cmake b/scripts/cmake/vcpkg_from_gitlab.cmake index 6bbe81ed6..05253289e 100644 --- a/scripts/cmake/vcpkg_from_gitlab.cmake +++ b/scripts/cmake/vcpkg_from_gitlab.cmake @@ -150,7 +150,7 @@ function(vcpkg_from_gitlab) endif() # There are issues with the Gitlab API project paths being URL-escaped, so we use git here to get the head revision - execute_process(COMMAND ${GIT} ls-remote + _execute_process(COMMAND ${GIT} ls-remote "${_vdud_GITLAB_URL}/${ORG_NAME}/${REPO_NAME}.git" "${_vdud_HEAD_REF}" RESULT_VARIABLE _git_result OUTPUT_VARIABLE _git_output diff --git a/scripts/cmake/vcpkg_test_cmake.cmake b/scripts/cmake/vcpkg_test_cmake.cmake index 20343bf64..eeb27867c 100644 --- a/scripts/cmake/vcpkg_test_cmake.cmake +++ b/scripts/cmake/vcpkg_test_cmake.cmake @@ -21,59 +21,4 @@ function(vcpkg_test_cmake) # 2. Select a generator in the same method as vcpkg_configure_cmake() as though the PREFER_NINJA flag was always passed. # 3. Fully emulate the toolchain file for the just-built package (just adding it to CMAKE_PREFIX_PATH is not enough). return() - - cmake_parse_arguments(_tc "MODULE" "PACKAGE_NAME" "" ${ARGN}) - - if(NOT DEFINED _tc_PACKAGE_NAME) - message(FATAL_ERROR "PACKAGE_NAME must be specified") - endif() - if(_tc_MODULE) - set(PACKAGE_TYPE MODULE) - else() - set(PACKAGE_TYPE CONFIG) - endif() - - if(VCPKG_PLATFORM_TOOLSET STREQUAL "v142") - message(STATUS "Skipping CMake integration test due to v142 / CMake interaction issues") - return() - endif() - - message(STATUS "Performing CMake integration test") - file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test) - file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test) - - #Generate Dummy source -# set(VCPKG_TEST_SOURCE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test/CMakeIntegration.cpp) -# file(WRITE ${VCPKG_TEST_SOURCE} "int main() \{\n") -# file(APPEND ${VCPKG_TEST_SOURCE} "return 0;}") - # Generate test source CMakeLists.txt - set(VCPKG_TEST_CMAKELIST ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test/CMakeLists.txt) - file(WRITE ${VCPKG_TEST_CMAKELIST} "cmake_minimum_required(VERSION 3.10)\n") - file(APPEND ${VCPKG_TEST_CMAKELIST} "set(CMAKE_PREFIX_PATH \"${CURRENT_PACKAGES_DIR};${CURRENT_INSTALLED_DIR}\")\n") - file(APPEND ${VCPKG_TEST_CMAKELIST} "\n") - file(APPEND ${VCPKG_TEST_CMAKELIST} "find_package(${_tc_PACKAGE_NAME} ${PACKAGE_TYPE} REQUIRED)\n") - #To properly test if the package is actually working haveway correctly we have to link all targets of a package to - #a test executable and than actually build it. This will not discover if every symbol exported by the library is available/linked - #but it will doscover if all files which are linked by a target actual exist. Problem is: How to discover all targets? -# file(APPEND ${VCPKG_TEST_CMAKELIST} "add_executable(${_tc_PACKAGE_NAME}_exe ${VCPKG_TEST_SOURCE})\n") -# file(APPEND ${VCPKG_TEST_CMAKELIST} "target_link_libraries(${_tc_PACKAGE_NAME}_exe PRIVATE ${_tc_PACKAGE_NAME})\n") - - if(DEFINED _VCPKG_CMAKE_GENERATOR) - set(VCPKG_CMAKE_TEST_GENERATOR "${_VCPKG_CMAKE_GENERATOR}") - else() - set(VCPKG_CMAKE_TEST_GENERATOR Ninja) - endif() - - # Run cmake config with a generated CMakeLists.txt - set(LOGPREFIX "${CURRENT_BUILDTREES_DIR}/test-cmake-${TARGET_TRIPLET}") - execute_process( - COMMAND ${CMAKE_COMMAND} -G ${VCPKG_CMAKE_TEST_GENERATOR} . - OUTPUT_FILE "${LOGPREFIX}-out.log" - ERROR_FILE "${LOGPREFIX}-err.log" - RESULT_VARIABLE error_code - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test - ) - if(error_code) - message(FATAL_ERROR "CMake integration test failed; unable to find_package(${_tc_PACKAGE_NAME} ${PACKAGE_TYPE} REQUIRED)") - endif() endfunction() -- cgit v1.2.3 From 4b404e8cfbdde4277733adaacc399fa4e1b57320 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Wed, 28 Aug 2019 11:59:30 -0700 Subject: Revert "[vcpkg install] Enable Download Mode (#7797)" (#7949) This reverts commit 65d4bc146bf7c1c21989b680497b1f6f9a09c967. --- scripts/cmake/execute_process.cmake | 19 -------- scripts/cmake/vcpkg_acquire_msys.cmake | 8 ++-- scripts/cmake/vcpkg_apply_patches.cmake | 2 +- scripts/cmake/vcpkg_common_functions.cmake | 1 - scripts/cmake/vcpkg_download_distfile.cmake | 2 +- scripts/cmake/vcpkg_execute_required_process.cmake | 18 +------ scripts/cmake/vcpkg_extract_source_archive.cmake | 1 - scripts/cmake/vcpkg_find_acquire_program.cmake | 5 +- scripts/cmake/vcpkg_from_git.cmake | 5 +- scripts/cmake/vcpkg_from_gitlab.cmake | 2 +- scripts/cmake/vcpkg_test_cmake.cmake | 55 ++++++++++++++++++++++ 11 files changed, 66 insertions(+), 52 deletions(-) delete mode 100644 scripts/cmake/execute_process.cmake (limited to 'scripts') diff --git a/scripts/cmake/execute_process.cmake b/scripts/cmake/execute_process.cmake deleted file mode 100644 index 90198e337..000000000 --- a/scripts/cmake/execute_process.cmake +++ /dev/null @@ -1,19 +0,0 @@ -## # execute_process -## -## Intercepts all calls to execute_process() inside portfiles and fails when Download Mode -## is enabled. -## -## In order to execute a process in Download Mode call `_execute_process()` instead. -## -if (NOT DEFINED OVERRIDEN_EXECUTE_PROCESS) -set(OVERRIDEN_EXECUTE_PROCESS ON) - -function(execute_process) - message(FATAL_ERROR -[[ - This command cannot be executed in Download Mode. - Halting portfile execution. -]]) -endfunction() - -endif() \ No newline at end of file diff --git a/scripts/cmake/vcpkg_acquire_msys.cmake b/scripts/cmake/vcpkg_acquire_msys.cmake index f1f09dc7e..09090db68 100644 --- a/scripts/cmake/vcpkg_acquire_msys.cmake +++ b/scripts/cmake/vcpkg_acquire_msys.cmake @@ -81,15 +81,15 @@ function(vcpkg_acquire_msys PATH_TO_ROOT_OUT) file(REMOVE_RECURSE ${TOOLPATH}/${TOOLSUBPATH}) file(MAKE_DIRECTORY ${TOOLPATH}) - _execute_process( + execute_process( COMMAND ${CMAKE_COMMAND} -E tar xzf ${ARCHIVE_PATH} WORKING_DIRECTORY ${TOOLPATH} ) - _execute_process( + execute_process( COMMAND ${PATH_TO_ROOT}/usr/bin/bash.exe --noprofile --norc -c "PATH=/usr/bin;pacman-key --init;pacman-key --populate" WORKING_DIRECTORY ${TOOLPATH} ) - _execute_process( + execute_process( COMMAND ${PATH_TO_ROOT}/usr/bin/bash.exe --noprofile --norc -c "PATH=/usr/bin;pacman -Syu --noconfirm" WORKING_DIRECTORY ${TOOLPATH} ) @@ -104,7 +104,6 @@ function(vcpkg_acquire_msys PATH_TO_ROOT_OUT) set(_ENV_ORIGINAL $ENV{PATH}) set(ENV{PATH} ${PATH_TO_ROOT}/usr/bin) vcpkg_execute_required_process( - ALLOW_IN_DOWNLOAD_MODE COMMAND ${PATH_TO_ROOT}/usr/bin/bash.exe --noprofile --norc -c "pacman -Sy --noconfirm --needed ${_am_PACKAGES}" WORKING_DIRECTORY ${TOOLPATH} LOGNAME msys-pacman-${TARGET_TRIPLET} @@ -117,7 +116,6 @@ function(vcpkg_acquire_msys PATH_TO_ROOT_OUT) # Deal with a stale process created by MSYS if (NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") vcpkg_execute_required_process( - ALLOW_IN_DOWNLOAD_MODE COMMAND TASKKILL /F /IM gpg-agent.exe /fi "memusage gt 2" WORKING_DIRECTORY ${SOURCE_PATH} ) diff --git a/scripts/cmake/vcpkg_apply_patches.cmake b/scripts/cmake/vcpkg_apply_patches.cmake index 9698917de..ac0b78e20 100644 --- a/scripts/cmake/vcpkg_apply_patches.cmake +++ b/scripts/cmake/vcpkg_apply_patches.cmake @@ -40,7 +40,7 @@ function(vcpkg_apply_patches) get_filename_component(ABSOLUTE_PATCH "${PATCH}" ABSOLUTE BASE_DIR "${CURRENT_PORT_DIR}") message(STATUS "Applying patch ${PATCH}") set(LOGNAME patch-${TARGET_TRIPLET}-${PATCHNUM}) - _execute_process( + execute_process( COMMAND ${GIT} --work-tree=. --git-dir=.git apply "${ABSOLUTE_PATCH}" --ignore-whitespace --whitespace=nowarn --verbose OUTPUT_FILE ${CURRENT_BUILDTREES_DIR}/${LOGNAME}-out.log ERROR_FILE ${CURRENT_BUILDTREES_DIR}/${LOGNAME}-err.log diff --git a/scripts/cmake/vcpkg_common_functions.cmake b/scripts/cmake/vcpkg_common_functions.cmake index 5f4155e9d..e9e52bad8 100644 --- a/scripts/cmake/vcpkg_common_functions.cmake +++ b/scripts/cmake/vcpkg_common_functions.cmake @@ -1,4 +1,3 @@ -include(execute_process) include(vcpkg_acquire_msys) include(vcpkg_add_to_path) include(vcpkg_check_features) diff --git a/scripts/cmake/vcpkg_download_distfile.cmake b/scripts/cmake/vcpkg_download_distfile.cmake index 1fbff40e5..72016b8c9 100644 --- a/scripts/cmake/vcpkg_download_distfile.cmake +++ b/scripts/cmake/vcpkg_download_distfile.cmake @@ -120,7 +120,7 @@ function(vcpkg_download_distfile VAR) list(APPEND request_headers "--header=${header}") endforeach() endif() - _execute_process( + execute_process( COMMAND ${ARIA2} ${vcpkg_download_distfile_URLS} -o temp/${vcpkg_download_distfile_FILENAME} -l download-${vcpkg_download_distfile_FILENAME}-detailed.log diff --git a/scripts/cmake/vcpkg_execute_required_process.cmake b/scripts/cmake/vcpkg_execute_required_process.cmake index f25a5b55e..e65d1970a 100644 --- a/scripts/cmake/vcpkg_execute_required_process.cmake +++ b/scripts/cmake/vcpkg_execute_required_process.cmake @@ -11,10 +11,6 @@ ## ) ## ``` ## ## Parameters -## ### ALLOW_IN_DOWNLOAD_MODE -## Allows the command to execute in Download Mode. -## [See execute_process() override](../../scripts/cmake/execute_process.cmake). -## ## ### COMMAND ## The command to be executed, along with its arguments. ## @@ -34,20 +30,10 @@ ## * [qt5](https://github.com/Microsoft/vcpkg/blob/master/ports/qt5/portfile.cmake) include(vcpkg_prettify_command) function(vcpkg_execute_required_process) - cmake_parse_arguments(vcpkg_execute_required_process "ALLOW_IN_DOWNLOAD_MODE" "WORKING_DIRECTORY;LOGNAME" "COMMAND" ${ARGN}) + cmake_parse_arguments(vcpkg_execute_required_process "" "WORKING_DIRECTORY;LOGNAME" "COMMAND" ${ARGN}) set(LOG_OUT "${CURRENT_BUILDTREES_DIR}/${vcpkg_execute_required_process_LOGNAME}-out.log") set(LOG_ERR "${CURRENT_BUILDTREES_DIR}/${vcpkg_execute_required_process_LOGNAME}-err.log") - - set(execute_process_function execute_process) - if (DEFINED VCPKG_DOWNLOAD_MODE AND NOT vcpkg_execute_required_process_ALLOW_IN_DOWNLOAD_MODE) - message(FATAL_ERROR -[[ -This command cannot be executed in Download Mode. -Halting portfile execution. -]]) - endif() - - _execute_process( + execute_process( COMMAND ${vcpkg_execute_required_process_COMMAND} OUTPUT_FILE ${LOG_OUT} ERROR_FILE ${LOG_ERR} diff --git a/scripts/cmake/vcpkg_extract_source_archive.cmake b/scripts/cmake/vcpkg_extract_source_archive.cmake index fbae94b55..a55419b19 100644 --- a/scripts/cmake/vcpkg_extract_source_archive.cmake +++ b/scripts/cmake/vcpkg_extract_source_archive.cmake @@ -41,7 +41,6 @@ function(vcpkg_extract_source_archive ARCHIVE) message(STATUS "Extracting source ${ARCHIVE}") file(MAKE_DIRECTORY ${WORKING_DIRECTORY}) vcpkg_execute_required_process( - ALLOW_IN_DOWNLOAD_MODE COMMAND ${CMAKE_COMMAND} -E tar xjf ${ARCHIVE} WORKING_DIRECTORY ${WORKING_DIRECTORY} LOGNAME extract diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index aa8a70026..fed016c7b 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -302,12 +302,12 @@ function(vcpkg_find_acquire_program VAR) if(ARCHIVE_EXTENSION STREQUAL ".msi") file(TO_NATIVE_PATH "${ARCHIVE_PATH}" ARCHIVE_NATIVE_PATH) file(TO_NATIVE_PATH "${PROG_PATH_SUBDIR}" DESTINATION_NATIVE_PATH) - _execute_process( + execute_process( COMMAND msiexec /a ${ARCHIVE_NATIVE_PATH} /qn TARGETDIR=${DESTINATION_NATIVE_PATH} WORKING_DIRECTORY ${DOWNLOADS} ) else() - _execute_process( + execute_process( COMMAND ${CMAKE_COMMAND} -E tar xzf ${ARCHIVE_PATH} WORKING_DIRECTORY ${PROG_PATH_SUBDIR} ) @@ -316,7 +316,6 @@ function(vcpkg_find_acquire_program VAR) if(DEFINED POST_INSTALL_COMMAND) vcpkg_execute_required_process( - ALLOW_IN_DOWNLOAD_MODE COMMAND ${POST_INSTALL_COMMAND} WORKING_DIRECTORY ${PROG_PATH_SUBDIR} LOGNAME ${VAR}-tool-post-install diff --git a/scripts/cmake/vcpkg_from_git.cmake b/scripts/cmake/vcpkg_from_git.cmake index bad5384ca..0db818f80 100644 --- a/scripts/cmake/vcpkg_from_git.cmake +++ b/scripts/cmake/vcpkg_from_git.cmake @@ -74,18 +74,16 @@ function(vcpkg_from_git) find_program(GIT NAMES git git.cmd) # Note: git init is safe to run multiple times vcpkg_execute_required_process( - ALLOW_IN_DOWNLOAD_MODE COMMAND ${GIT} init git-tmp WORKING_DIRECTORY ${DOWNLOADS} LOGNAME git-init-${TARGET_TRIPLET} ) vcpkg_execute_required_process( - ALLOW_IN_DOWNLOAD_MODE COMMAND ${GIT} fetch ${_vdud_URL} ${_vdud_REF} --depth 1 -n WORKING_DIRECTORY ${DOWNLOADS}/git-tmp LOGNAME git-fetch-${TARGET_TRIPLET} ) - _execute_process( + execute_process( COMMAND ${GIT} rev-parse FETCH_HEAD OUTPUT_VARIABLE REV_PARSE_HEAD ERROR_VARIABLE REV_PARSE_HEAD @@ -102,7 +100,6 @@ function(vcpkg_from_git) file(MAKE_DIRECTORY "${DOWNLOADS}/temp") vcpkg_execute_required_process( - ALLOW_IN_DOWNLOAD_MODE COMMAND ${GIT} archive FETCH_HEAD -o "${TEMP_ARCHIVE}" WORKING_DIRECTORY ${DOWNLOADS}/git-tmp LOGNAME git-archive diff --git a/scripts/cmake/vcpkg_from_gitlab.cmake b/scripts/cmake/vcpkg_from_gitlab.cmake index 05253289e..6bbe81ed6 100644 --- a/scripts/cmake/vcpkg_from_gitlab.cmake +++ b/scripts/cmake/vcpkg_from_gitlab.cmake @@ -150,7 +150,7 @@ function(vcpkg_from_gitlab) endif() # There are issues with the Gitlab API project paths being URL-escaped, so we use git here to get the head revision - _execute_process(COMMAND ${GIT} ls-remote + execute_process(COMMAND ${GIT} ls-remote "${_vdud_GITLAB_URL}/${ORG_NAME}/${REPO_NAME}.git" "${_vdud_HEAD_REF}" RESULT_VARIABLE _git_result OUTPUT_VARIABLE _git_output diff --git a/scripts/cmake/vcpkg_test_cmake.cmake b/scripts/cmake/vcpkg_test_cmake.cmake index eeb27867c..20343bf64 100644 --- a/scripts/cmake/vcpkg_test_cmake.cmake +++ b/scripts/cmake/vcpkg_test_cmake.cmake @@ -21,4 +21,59 @@ function(vcpkg_test_cmake) # 2. Select a generator in the same method as vcpkg_configure_cmake() as though the PREFER_NINJA flag was always passed. # 3. Fully emulate the toolchain file for the just-built package (just adding it to CMAKE_PREFIX_PATH is not enough). return() + + cmake_parse_arguments(_tc "MODULE" "PACKAGE_NAME" "" ${ARGN}) + + if(NOT DEFINED _tc_PACKAGE_NAME) + message(FATAL_ERROR "PACKAGE_NAME must be specified") + endif() + if(_tc_MODULE) + set(PACKAGE_TYPE MODULE) + else() + set(PACKAGE_TYPE CONFIG) + endif() + + if(VCPKG_PLATFORM_TOOLSET STREQUAL "v142") + message(STATUS "Skipping CMake integration test due to v142 / CMake interaction issues") + return() + endif() + + message(STATUS "Performing CMake integration test") + file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test) + file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test) + + #Generate Dummy source +# set(VCPKG_TEST_SOURCE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test/CMakeIntegration.cpp) +# file(WRITE ${VCPKG_TEST_SOURCE} "int main() \{\n") +# file(APPEND ${VCPKG_TEST_SOURCE} "return 0;}") + # Generate test source CMakeLists.txt + set(VCPKG_TEST_CMAKELIST ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test/CMakeLists.txt) + file(WRITE ${VCPKG_TEST_CMAKELIST} "cmake_minimum_required(VERSION 3.10)\n") + file(APPEND ${VCPKG_TEST_CMAKELIST} "set(CMAKE_PREFIX_PATH \"${CURRENT_PACKAGES_DIR};${CURRENT_INSTALLED_DIR}\")\n") + file(APPEND ${VCPKG_TEST_CMAKELIST} "\n") + file(APPEND ${VCPKG_TEST_CMAKELIST} "find_package(${_tc_PACKAGE_NAME} ${PACKAGE_TYPE} REQUIRED)\n") + #To properly test if the package is actually working haveway correctly we have to link all targets of a package to + #a test executable and than actually build it. This will not discover if every symbol exported by the library is available/linked + #but it will doscover if all files which are linked by a target actual exist. Problem is: How to discover all targets? +# file(APPEND ${VCPKG_TEST_CMAKELIST} "add_executable(${_tc_PACKAGE_NAME}_exe ${VCPKG_TEST_SOURCE})\n") +# file(APPEND ${VCPKG_TEST_CMAKELIST} "target_link_libraries(${_tc_PACKAGE_NAME}_exe PRIVATE ${_tc_PACKAGE_NAME})\n") + + if(DEFINED _VCPKG_CMAKE_GENERATOR) + set(VCPKG_CMAKE_TEST_GENERATOR "${_VCPKG_CMAKE_GENERATOR}") + else() + set(VCPKG_CMAKE_TEST_GENERATOR Ninja) + endif() + + # Run cmake config with a generated CMakeLists.txt + set(LOGPREFIX "${CURRENT_BUILDTREES_DIR}/test-cmake-${TARGET_TRIPLET}") + execute_process( + COMMAND ${CMAKE_COMMAND} -G ${VCPKG_CMAKE_TEST_GENERATOR} . + OUTPUT_FILE "${LOGPREFIX}-out.log" + ERROR_FILE "${LOGPREFIX}-err.log" + RESULT_VARIABLE error_code + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test + ) + if(error_code) + message(FATAL_ERROR "CMake integration test failed; unable to find_package(${_tc_PACKAGE_NAME} ${PACKAGE_TYPE} REQUIRED)") + endif() endfunction() -- cgit v1.2.3 From f5c732b40d43f062278f247036b773477823813b Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Wed, 28 Aug 2019 13:49:29 -0700 Subject: Download Mode (#7950) * [portfile functions] Override execute_process() to accept ALLOW_IN_DOWNLOAD_MODE option * [vcpkg install] Set VCPKG_DOWNLOAD_MODE when using --only-downloads option * [vcpkg_find_acquire_program] Allow in Download Mode * Don't stop when build fails for a package * Download sources for all packages in dependency graph * Improve output messages * Enable acquiring MSYS packages in download mode * Documentation * Update documentation * execute_process() always fails on Download Mode * Regenerate docs and fix formatting * Run clang-format * Use _execute_process on vcpkg_from_ helpers * Fix calls to _execute_process() when not in Download Mode --- scripts/cmake/execute_process.cmake | 20 ++++++++ scripts/cmake/vcpkg_acquire_msys.cmake | 8 ++-- scripts/cmake/vcpkg_apply_patches.cmake | 2 +- scripts/cmake/vcpkg_common_functions.cmake | 1 + scripts/cmake/vcpkg_download_distfile.cmake | 2 +- scripts/cmake/vcpkg_execute_required_process.cmake | 18 ++++++- scripts/cmake/vcpkg_extract_source_archive.cmake | 1 + scripts/cmake/vcpkg_find_acquire_program.cmake | 5 +- scripts/cmake/vcpkg_from_git.cmake | 5 +- scripts/cmake/vcpkg_from_gitlab.cmake | 2 +- scripts/cmake/vcpkg_test_cmake.cmake | 55 ---------------------- 11 files changed, 53 insertions(+), 66 deletions(-) create mode 100644 scripts/cmake/execute_process.cmake (limited to 'scripts') diff --git a/scripts/cmake/execute_process.cmake b/scripts/cmake/execute_process.cmake new file mode 100644 index 000000000..6d9bd6cfc --- /dev/null +++ b/scripts/cmake/execute_process.cmake @@ -0,0 +1,20 @@ +## # execute_process +## +## Intercepts all calls to execute_process() inside portfiles and fails when Download Mode +## is enabled. +## +## In order to execute a process in Download Mode call `_execute_process()` instead. +## +if (NOT DEFINED OVERRIDEN_EXECUTE_PROCESS) + set(OVERRIDEN_EXECUTE_PROCESS ON) + + if (DEFINED VCPKG_DOWNLOAD_MODE) + function(execute_process) + message(FATAL_ERROR "This command cannot be executed in Download Mode.\nHalting portfile execution.\n") + endfunction() + else() + function(execute_process) + _execute_process(${ARGV}) + endfunction() + endif() +endif() \ No newline at end of file diff --git a/scripts/cmake/vcpkg_acquire_msys.cmake b/scripts/cmake/vcpkg_acquire_msys.cmake index 09090db68..f1f09dc7e 100644 --- a/scripts/cmake/vcpkg_acquire_msys.cmake +++ b/scripts/cmake/vcpkg_acquire_msys.cmake @@ -81,15 +81,15 @@ function(vcpkg_acquire_msys PATH_TO_ROOT_OUT) file(REMOVE_RECURSE ${TOOLPATH}/${TOOLSUBPATH}) file(MAKE_DIRECTORY ${TOOLPATH}) - execute_process( + _execute_process( COMMAND ${CMAKE_COMMAND} -E tar xzf ${ARCHIVE_PATH} WORKING_DIRECTORY ${TOOLPATH} ) - execute_process( + _execute_process( COMMAND ${PATH_TO_ROOT}/usr/bin/bash.exe --noprofile --norc -c "PATH=/usr/bin;pacman-key --init;pacman-key --populate" WORKING_DIRECTORY ${TOOLPATH} ) - execute_process( + _execute_process( COMMAND ${PATH_TO_ROOT}/usr/bin/bash.exe --noprofile --norc -c "PATH=/usr/bin;pacman -Syu --noconfirm" WORKING_DIRECTORY ${TOOLPATH} ) @@ -104,6 +104,7 @@ function(vcpkg_acquire_msys PATH_TO_ROOT_OUT) set(_ENV_ORIGINAL $ENV{PATH}) set(ENV{PATH} ${PATH_TO_ROOT}/usr/bin) vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE COMMAND ${PATH_TO_ROOT}/usr/bin/bash.exe --noprofile --norc -c "pacman -Sy --noconfirm --needed ${_am_PACKAGES}" WORKING_DIRECTORY ${TOOLPATH} LOGNAME msys-pacman-${TARGET_TRIPLET} @@ -116,6 +117,7 @@ function(vcpkg_acquire_msys PATH_TO_ROOT_OUT) # Deal with a stale process created by MSYS if (NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE COMMAND TASKKILL /F /IM gpg-agent.exe /fi "memusage gt 2" WORKING_DIRECTORY ${SOURCE_PATH} ) diff --git a/scripts/cmake/vcpkg_apply_patches.cmake b/scripts/cmake/vcpkg_apply_patches.cmake index ac0b78e20..9698917de 100644 --- a/scripts/cmake/vcpkg_apply_patches.cmake +++ b/scripts/cmake/vcpkg_apply_patches.cmake @@ -40,7 +40,7 @@ function(vcpkg_apply_patches) get_filename_component(ABSOLUTE_PATCH "${PATCH}" ABSOLUTE BASE_DIR "${CURRENT_PORT_DIR}") message(STATUS "Applying patch ${PATCH}") set(LOGNAME patch-${TARGET_TRIPLET}-${PATCHNUM}) - execute_process( + _execute_process( COMMAND ${GIT} --work-tree=. --git-dir=.git apply "${ABSOLUTE_PATCH}" --ignore-whitespace --whitespace=nowarn --verbose OUTPUT_FILE ${CURRENT_BUILDTREES_DIR}/${LOGNAME}-out.log ERROR_FILE ${CURRENT_BUILDTREES_DIR}/${LOGNAME}-err.log diff --git a/scripts/cmake/vcpkg_common_functions.cmake b/scripts/cmake/vcpkg_common_functions.cmake index e9e52bad8..5f4155e9d 100644 --- a/scripts/cmake/vcpkg_common_functions.cmake +++ b/scripts/cmake/vcpkg_common_functions.cmake @@ -1,3 +1,4 @@ +include(execute_process) include(vcpkg_acquire_msys) include(vcpkg_add_to_path) include(vcpkg_check_features) diff --git a/scripts/cmake/vcpkg_download_distfile.cmake b/scripts/cmake/vcpkg_download_distfile.cmake index 72016b8c9..1fbff40e5 100644 --- a/scripts/cmake/vcpkg_download_distfile.cmake +++ b/scripts/cmake/vcpkg_download_distfile.cmake @@ -120,7 +120,7 @@ function(vcpkg_download_distfile VAR) list(APPEND request_headers "--header=${header}") endforeach() endif() - execute_process( + _execute_process( COMMAND ${ARIA2} ${vcpkg_download_distfile_URLS} -o temp/${vcpkg_download_distfile_FILENAME} -l download-${vcpkg_download_distfile_FILENAME}-detailed.log diff --git a/scripts/cmake/vcpkg_execute_required_process.cmake b/scripts/cmake/vcpkg_execute_required_process.cmake index e65d1970a..f25a5b55e 100644 --- a/scripts/cmake/vcpkg_execute_required_process.cmake +++ b/scripts/cmake/vcpkg_execute_required_process.cmake @@ -11,6 +11,10 @@ ## ) ## ``` ## ## Parameters +## ### ALLOW_IN_DOWNLOAD_MODE +## Allows the command to execute in Download Mode. +## [See execute_process() override](../../scripts/cmake/execute_process.cmake). +## ## ### COMMAND ## The command to be executed, along with its arguments. ## @@ -30,10 +34,20 @@ ## * [qt5](https://github.com/Microsoft/vcpkg/blob/master/ports/qt5/portfile.cmake) include(vcpkg_prettify_command) function(vcpkg_execute_required_process) - cmake_parse_arguments(vcpkg_execute_required_process "" "WORKING_DIRECTORY;LOGNAME" "COMMAND" ${ARGN}) + cmake_parse_arguments(vcpkg_execute_required_process "ALLOW_IN_DOWNLOAD_MODE" "WORKING_DIRECTORY;LOGNAME" "COMMAND" ${ARGN}) set(LOG_OUT "${CURRENT_BUILDTREES_DIR}/${vcpkg_execute_required_process_LOGNAME}-out.log") set(LOG_ERR "${CURRENT_BUILDTREES_DIR}/${vcpkg_execute_required_process_LOGNAME}-err.log") - execute_process( + + set(execute_process_function execute_process) + if (DEFINED VCPKG_DOWNLOAD_MODE AND NOT vcpkg_execute_required_process_ALLOW_IN_DOWNLOAD_MODE) + message(FATAL_ERROR +[[ +This command cannot be executed in Download Mode. +Halting portfile execution. +]]) + endif() + + _execute_process( COMMAND ${vcpkg_execute_required_process_COMMAND} OUTPUT_FILE ${LOG_OUT} ERROR_FILE ${LOG_ERR} diff --git a/scripts/cmake/vcpkg_extract_source_archive.cmake b/scripts/cmake/vcpkg_extract_source_archive.cmake index a55419b19..fbae94b55 100644 --- a/scripts/cmake/vcpkg_extract_source_archive.cmake +++ b/scripts/cmake/vcpkg_extract_source_archive.cmake @@ -41,6 +41,7 @@ function(vcpkg_extract_source_archive ARCHIVE) message(STATUS "Extracting source ${ARCHIVE}") file(MAKE_DIRECTORY ${WORKING_DIRECTORY}) vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE COMMAND ${CMAKE_COMMAND} -E tar xjf ${ARCHIVE} WORKING_DIRECTORY ${WORKING_DIRECTORY} LOGNAME extract diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index fed016c7b..aa8a70026 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -302,12 +302,12 @@ function(vcpkg_find_acquire_program VAR) if(ARCHIVE_EXTENSION STREQUAL ".msi") file(TO_NATIVE_PATH "${ARCHIVE_PATH}" ARCHIVE_NATIVE_PATH) file(TO_NATIVE_PATH "${PROG_PATH_SUBDIR}" DESTINATION_NATIVE_PATH) - execute_process( + _execute_process( COMMAND msiexec /a ${ARCHIVE_NATIVE_PATH} /qn TARGETDIR=${DESTINATION_NATIVE_PATH} WORKING_DIRECTORY ${DOWNLOADS} ) else() - execute_process( + _execute_process( COMMAND ${CMAKE_COMMAND} -E tar xzf ${ARCHIVE_PATH} WORKING_DIRECTORY ${PROG_PATH_SUBDIR} ) @@ -316,6 +316,7 @@ function(vcpkg_find_acquire_program VAR) if(DEFINED POST_INSTALL_COMMAND) vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE COMMAND ${POST_INSTALL_COMMAND} WORKING_DIRECTORY ${PROG_PATH_SUBDIR} LOGNAME ${VAR}-tool-post-install diff --git a/scripts/cmake/vcpkg_from_git.cmake b/scripts/cmake/vcpkg_from_git.cmake index 0db818f80..bad5384ca 100644 --- a/scripts/cmake/vcpkg_from_git.cmake +++ b/scripts/cmake/vcpkg_from_git.cmake @@ -74,16 +74,18 @@ function(vcpkg_from_git) find_program(GIT NAMES git git.cmd) # Note: git init is safe to run multiple times vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE COMMAND ${GIT} init git-tmp WORKING_DIRECTORY ${DOWNLOADS} LOGNAME git-init-${TARGET_TRIPLET} ) vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE COMMAND ${GIT} fetch ${_vdud_URL} ${_vdud_REF} --depth 1 -n WORKING_DIRECTORY ${DOWNLOADS}/git-tmp LOGNAME git-fetch-${TARGET_TRIPLET} ) - execute_process( + _execute_process( COMMAND ${GIT} rev-parse FETCH_HEAD OUTPUT_VARIABLE REV_PARSE_HEAD ERROR_VARIABLE REV_PARSE_HEAD @@ -100,6 +102,7 @@ function(vcpkg_from_git) file(MAKE_DIRECTORY "${DOWNLOADS}/temp") vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE COMMAND ${GIT} archive FETCH_HEAD -o "${TEMP_ARCHIVE}" WORKING_DIRECTORY ${DOWNLOADS}/git-tmp LOGNAME git-archive diff --git a/scripts/cmake/vcpkg_from_gitlab.cmake b/scripts/cmake/vcpkg_from_gitlab.cmake index 6bbe81ed6..05253289e 100644 --- a/scripts/cmake/vcpkg_from_gitlab.cmake +++ b/scripts/cmake/vcpkg_from_gitlab.cmake @@ -150,7 +150,7 @@ function(vcpkg_from_gitlab) endif() # There are issues with the Gitlab API project paths being URL-escaped, so we use git here to get the head revision - execute_process(COMMAND ${GIT} ls-remote + _execute_process(COMMAND ${GIT} ls-remote "${_vdud_GITLAB_URL}/${ORG_NAME}/${REPO_NAME}.git" "${_vdud_HEAD_REF}" RESULT_VARIABLE _git_result OUTPUT_VARIABLE _git_output diff --git a/scripts/cmake/vcpkg_test_cmake.cmake b/scripts/cmake/vcpkg_test_cmake.cmake index 20343bf64..eeb27867c 100644 --- a/scripts/cmake/vcpkg_test_cmake.cmake +++ b/scripts/cmake/vcpkg_test_cmake.cmake @@ -21,59 +21,4 @@ function(vcpkg_test_cmake) # 2. Select a generator in the same method as vcpkg_configure_cmake() as though the PREFER_NINJA flag was always passed. # 3. Fully emulate the toolchain file for the just-built package (just adding it to CMAKE_PREFIX_PATH is not enough). return() - - cmake_parse_arguments(_tc "MODULE" "PACKAGE_NAME" "" ${ARGN}) - - if(NOT DEFINED _tc_PACKAGE_NAME) - message(FATAL_ERROR "PACKAGE_NAME must be specified") - endif() - if(_tc_MODULE) - set(PACKAGE_TYPE MODULE) - else() - set(PACKAGE_TYPE CONFIG) - endif() - - if(VCPKG_PLATFORM_TOOLSET STREQUAL "v142") - message(STATUS "Skipping CMake integration test due to v142 / CMake interaction issues") - return() - endif() - - message(STATUS "Performing CMake integration test") - file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test) - file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test) - - #Generate Dummy source -# set(VCPKG_TEST_SOURCE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test/CMakeIntegration.cpp) -# file(WRITE ${VCPKG_TEST_SOURCE} "int main() \{\n") -# file(APPEND ${VCPKG_TEST_SOURCE} "return 0;}") - # Generate test source CMakeLists.txt - set(VCPKG_TEST_CMAKELIST ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test/CMakeLists.txt) - file(WRITE ${VCPKG_TEST_CMAKELIST} "cmake_minimum_required(VERSION 3.10)\n") - file(APPEND ${VCPKG_TEST_CMAKELIST} "set(CMAKE_PREFIX_PATH \"${CURRENT_PACKAGES_DIR};${CURRENT_INSTALLED_DIR}\")\n") - file(APPEND ${VCPKG_TEST_CMAKELIST} "\n") - file(APPEND ${VCPKG_TEST_CMAKELIST} "find_package(${_tc_PACKAGE_NAME} ${PACKAGE_TYPE} REQUIRED)\n") - #To properly test if the package is actually working haveway correctly we have to link all targets of a package to - #a test executable and than actually build it. This will not discover if every symbol exported by the library is available/linked - #but it will doscover if all files which are linked by a target actual exist. Problem is: How to discover all targets? -# file(APPEND ${VCPKG_TEST_CMAKELIST} "add_executable(${_tc_PACKAGE_NAME}_exe ${VCPKG_TEST_SOURCE})\n") -# file(APPEND ${VCPKG_TEST_CMAKELIST} "target_link_libraries(${_tc_PACKAGE_NAME}_exe PRIVATE ${_tc_PACKAGE_NAME})\n") - - if(DEFINED _VCPKG_CMAKE_GENERATOR) - set(VCPKG_CMAKE_TEST_GENERATOR "${_VCPKG_CMAKE_GENERATOR}") - else() - set(VCPKG_CMAKE_TEST_GENERATOR Ninja) - endif() - - # Run cmake config with a generated CMakeLists.txt - set(LOGPREFIX "${CURRENT_BUILDTREES_DIR}/test-cmake-${TARGET_TRIPLET}") - execute_process( - COMMAND ${CMAKE_COMMAND} -G ${VCPKG_CMAKE_TEST_GENERATOR} . - OUTPUT_FILE "${LOGPREFIX}-out.log" - ERROR_FILE "${LOGPREFIX}-err.log" - RESULT_VARIABLE error_code - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test - ) - if(error_code) - message(FATAL_ERROR "CMake integration test failed; unable to find_package(${_tc_PACKAGE_NAME} ${PACKAGE_TYPE} REQUIRED)") - endif() endfunction() -- cgit v1.2.3 From 9e68729bb6b62537314c7ab315c2dcf6dc2476b0 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Thu, 29 Aug 2019 19:40:43 -0700 Subject: Use macro instead of function to override execute_process() (#7980) --- scripts/cmake/execute_process.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/execute_process.cmake b/scripts/cmake/execute_process.cmake index 6d9bd6cfc..51f6ad160 100644 --- a/scripts/cmake/execute_process.cmake +++ b/scripts/cmake/execute_process.cmake @@ -9,12 +9,12 @@ if (NOT DEFINED OVERRIDEN_EXECUTE_PROCESS) set(OVERRIDEN_EXECUTE_PROCESS ON) if (DEFINED VCPKG_DOWNLOAD_MODE) - function(execute_process) + macro(execute_process) message(FATAL_ERROR "This command cannot be executed in Download Mode.\nHalting portfile execution.\n") - endfunction() + endmacro() else() - function(execute_process) + macro(execute_process) _execute_process(${ARGV}) - endfunction() + endmacro() endif() endif() \ No newline at end of file -- cgit v1.2.3 From 0872eebe34db686c8d87936e3c39984ab609bd5b Mon Sep 17 00:00:00 2001 From: TheGoddessInari Date: Sun, 1 Sep 2019 05:09:34 -0700 Subject: (#8013) [vcpkg] Compatibility with pwsh >= 6.2 In Powershell 6.2/7.0, `Get-ChildItem`'s paths are now printed as absolute paths instead of relative paths; this breaks the code we have that assumes that they're printed as relative paths. Thus, change the code to request the `Name` property specifically, which is what we actually wanted. --- scripts/bootstrap.ps1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/bootstrap.ps1 b/scripts/bootstrap.ps1 index 6234efaa3..d2632e57b 100644 --- a/scripts/bootstrap.ps1 +++ b/scripts/bootstrap.ps1 @@ -226,8 +226,9 @@ function getWindowsSDK( [Parameter(Mandatory=$False)][switch]$DisableWin10SDK = $win10sdkVersions = @(Get-ChildItem $folder | Where-Object {$_.Name -match "^10"} | Sort-Object) [array]::Reverse($win10sdkVersions) # Newest SDK first - foreach ($win10sdkV in $win10sdkVersions) + foreach ($win10sdk in $win10sdkVersions) { + $win10sdkV = $win10sdk.Name $windowsheader = "$folder\$win10sdkV\um\windows.h" if (!(Test-Path $windowsheader)) { -- cgit v1.2.3 From 96f4487c77fbf08518a9ee665612927c97ce8ebd Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 12 Sep 2019 19:07:22 +0200 Subject: [Qt] Update to 5.12.4 (#7667) * update to 5.12.4 * removed port qt5-modularscripts and split it functionality into more functions into qt5-base * added qt_port_hashes.cmake for simpler upgrade. * added optional VCPKG_QT_HOST_MKSPEC and VCPKG_QT_TARGET_MKSPEC to select QTs build mkspecs from a triplet * qt_.conf are now copied from the build dir instead from the port dir * fixed freetype dependencies. * cleanup of vcpkg_qmake scripts. No strange/unclear replacements anymore. * introduced vcpkg_buildpath_length_warning * changed directory layout of the qt5 installation executables and mkspecs a bit. --- scripts/cmake/vcpkg_build_qmake.cmake | 82 ++++++---------------- scripts/cmake/vcpkg_buildpath_length_warning.cmake | 8 +++ scripts/cmake/vcpkg_common_functions.cmake | 1 + scripts/cmake/vcpkg_configure_qmake.cmake | 34 ++++++--- 4 files changed, 56 insertions(+), 69 deletions(-) create mode 100644 scripts/cmake/vcpkg_buildpath_length_warning.cmake (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_build_qmake.cmake b/scripts/cmake/vcpkg_build_qmake.cmake index cf79fe8fc..03c468463 100644 --- a/scripts/cmake/vcpkg_build_qmake.cmake +++ b/scripts/cmake/vcpkg_build_qmake.cmake @@ -11,11 +11,9 @@ function(vcpkg_build_qmake) cmake_parse_arguments(_csc "SKIP_MAKEFILES" "BUILD_LOGNAME" "TARGETS;RELEASE_TARGETS;DEBUG_TARGETS" ${ARGN}) if(CMAKE_HOST_WIN32) - set(_PATHSEP ";") vcpkg_find_acquire_program(JOM) set(INVOKE "${JOM}") else() - set(_PATHSEP ":") find_program(MAKE make) set(INVOKE "${MAKE}") endif() @@ -23,22 +21,8 @@ function(vcpkg_build_qmake) # Make sure that the linker finds the libraries used set(ENV_PATH_BACKUP "$ENV{PATH}") - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - set(DEBUG_DIR ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg) - endif() - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") - set(RELEASE_DIR ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel) - endif() - file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}" NATIVE_INSTALLED_DIR) - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") - list(APPEND _csc_RELEASE_TARGETS ${_csc_TARGETS}) - endif() - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - list(APPEND _csc_DEBUG_TARGETS ${_csc_TARGETS}) - endif() - if(NOT _csc_BUILD_LOGNAME) set(_csc_BUILD_LOGNAME build) endif() @@ -56,55 +40,33 @@ function(vcpkg_build_qmake) set(ENV_CL_BACKUP "$ENV{_CL_}") set(ENV{_CL_} "/utf-8") - #First generate the makefiles so we can modify them + #Replace with VCPKG variables if PR #7733 is merged + unset(BUILDTYPES) if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/debug/lib${_PATHSEP}${CURRENT_INSTALLED_DIR}/debug/bin${_PATHSEP}${CURRENT_INSTALLED_DIR}/tools/qt5${_PATHSEP}${ENV_PATH_BACKUP}") - if(NOT _csc_SKIP_MAKEFILES) - run_jom(qmake_all makefiles dbg) - - #Store debug makefiles path - file(GLOB_RECURSE DEBUG_MAKEFILES ${DEBUG_DIR}/*Makefile*) - - foreach(DEBUG_MAKEFILE ${DEBUG_MAKEFILES}) - file(READ "${DEBUG_MAKEFILE}" _contents) - string(REPLACE "zlib.lib" "zlibd.lib" _contents "${_contents}") - string(REPLACE "installed\\${TARGET_TRIPLET}\\lib" "installed\\${TARGET_TRIPLET}\\debug\\lib" _contents "${_contents}") - string(REPLACE "/LIBPATH:${NATIVE_INSTALLED_DIR}\\debug\\lib" "/LIBPATH:${NATIVE_INSTALLED_DIR}\\debug\\lib\\manual-link /LIBPATH:${NATIVE_INSTALLED_DIR}\\debug\\lib shell32.lib" _contents "${_contents}") - string(REPLACE "tools\\qt5\\qmlcachegen.exe" "tools\\qt5-declarative\\qmlcachegen.exe" _contents "${_contents}") - string(REPLACE "tools/qt5/qmlcachegen" "tools/qt5-declarative/qmlcachegen" _contents "${_contents}") - string(REPLACE "debug\\lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}") - string(REPLACE "lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}") - string(REPLACE " Qt5Bootstrap.lib " " ${NATIVE_INSTALLED_DIR}\\tools\\qt5\\Qt5Bootstrap.lib Ole32.lib Netapi32.lib Advapi32.lib ${NATIVE_INSTALLED_DIR}\\lib\\zlib.lib Shell32.lib " _contents "${_contents}") - file(WRITE "${DEBUG_MAKEFILE}" "${_contents}") - endforeach() - endif() - - run_jom("${_csc_DEBUG_TARGETS}" ${_csc_BUILD_LOGNAME} dbg) + set(_buildname "DEBUG") + list(APPEND BUILDTYPES ${_buildname}) + set(_short_name_${_buildname} "dbg") + set(_path_suffix_${_buildname} "/debug") endif() - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") - set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/lib${_PATHSEP}${CURRENT_INSTALLED_DIR}/bin${_PATHSEP}${CURRENT_INSTALLED_DIR}/tools/qt5${_PATHSEP}${ENV_PATH_BACKUP}") - if(NOT _csc_SKIP_MAKEFILES) - run_jom(qmake_all makefiles rel) - - #Store release makefile path - file(GLOB_RECURSE RELEASE_MAKEFILES ${RELEASE_DIR}/*Makefile*) - - foreach(RELEASE_MAKEFILE ${RELEASE_MAKEFILES}) - file(READ "${RELEASE_MAKEFILE}" _contents) - string(REPLACE "/LIBPATH:${NATIVE_INSTALLED_DIR}\\lib" "/LIBPATH:${NATIVE_INSTALLED_DIR}\\lib\\manual-link /LIBPATH:${NATIVE_INSTALLED_DIR}\\lib shell32.lib" _contents "${_contents}") - string(REPLACE "tools\\qt5\\qmlcachegen.exe" "tools\\qt5-declarative\\qmlcachegen.exe" _contents "${_contents}") - string(REPLACE "tools/qt5/qmlcachegen" "tools/qt5-declarative/qmlcachegen" _contents "${_contents}") - string(REPLACE "debug\\lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}") - string(REPLACE "lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}") - string(REPLACE " Qt5Bootstrap.lib " " ${NATIVE_INSTALLED_DIR}\\tools\\qt5\\Qt5Bootstrap.lib Ole32.lib Netapi32.lib Advapi32.lib ${NATIVE_INSTALLED_DIR}\\lib\\zlib.lib Shell32.lib " _contents "${_contents}") - file(WRITE "${RELEASE_MAKEFILE}" "${_contents}") - endforeach() - endif() - - run_jom("${_csc_RELEASE_TARGETS}" ${_csc_BUILD_LOGNAME} rel) + set(_buildname "RELEASE") + list(APPEND BUILDTYPES ${_buildname}) + set(_short_name_${_buildname} "rel") + set(_path_suffix_${_buildname} "") endif() + unset(_buildname) + foreach(_buildname ${BUILDTYPES}) + set(_BUILD_PREFIX "${_path_suffix_${_buildname}}") + vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}${_BUILD_PREFIX}/bin") + vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}${_BUILD_PREFIX}/lib") + list(APPEND _csc_${_buildname}_TARGETS ${_csc_TARGETS}) + if(NOT _csc_SKIP_MAKEFILES) + run_jom(qmake_all makefiles ${_short_name_${_buildname}}) + endif() + run_jom("${_csc_${_buildname}_TARGETS}" ${_csc_BUILD_LOGNAME} ${_short_name_${_buildname}}) + endforeach() + # Restore the original value of ENV{PATH} set(ENV{PATH} "${ENV_PATH_BACKUP}") set(ENV{_CL_} "${ENV_CL_BACKUP}") diff --git a/scripts/cmake/vcpkg_buildpath_length_warning.cmake b/scripts/cmake/vcpkg_buildpath_length_warning.cmake new file mode 100644 index 000000000..b7ef10bb8 --- /dev/null +++ b/scripts/cmake/vcpkg_buildpath_length_warning.cmake @@ -0,0 +1,8 @@ +function(vcpkg_buildpath_length_warning WARNING_LENGTH) + string(LENGTH "${CURRENT_BUILDTREES_DIR}" BUILDTREES_PATH_LENGTH) + if(BUILDTREES_PATH_LENGTH GREATER ${WARNING_LENGTH} AND CMAKE_HOST_WIN32) + message(WARNING "${PORT}'s buildsystem uses very long paths and may fail on your system.\n" + "We recommend moving vcpkg to a short path such as 'C:\\src\\vcpkg' or using the subst command." + ) + endif() +endfunction() \ No newline at end of file diff --git a/scripts/cmake/vcpkg_common_functions.cmake b/scripts/cmake/vcpkg_common_functions.cmake index 5f4155e9d..d2ea35608 100644 --- a/scripts/cmake/vcpkg_common_functions.cmake +++ b/scripts/cmake/vcpkg_common_functions.cmake @@ -35,3 +35,4 @@ include(vcpkg_replace_string) include(vcpkg_from_git) include(vcpkg_test_cmake) include(vcpkg_prettify_command) +include(vcpkg_buildpath_length_warning) diff --git a/scripts/cmake/vcpkg_configure_qmake.cmake b/scripts/cmake/vcpkg_configure_qmake.cmake index d660fedd7..73f554a33 100644 --- a/scripts/cmake/vcpkg_configure_qmake.cmake +++ b/scripts/cmake/vcpkg_configure_qmake.cmake @@ -6,37 +6,53 @@ # :: # vcpkg_configure_qmake(SOURCE_PATH # [OPTIONS arg1 [arg2 ...]] +# [OPTIONS_RELEASE arg1 [arg2 ...]] +# [OPTIONS_DEBUG arg1 [arg2 ...]] # ) # # ``SOURCE_PATH`` # The path to the *.pro qmake project file. -# ``OPTIONS`` +# ``OPTIONS[_RELEASE|_DEBUG]`` # The options passed to qmake. function(vcpkg_configure_qmake) - cmake_parse_arguments(_csc "" "SOURCE_PATH" "OPTIONS" ${ARGN}) - + cmake_parse_arguments(_csc "" "SOURCE_PATH" "OPTIONS;OPTIONS_RELEASE;OPTIONS_DEBUG" ${ARGN}) + # Find qmake executable - find_program(QMAKE_COMMAND NAMES qmake PATHS ${CURRENT_INSTALLED_DIR}/tools/qt5) + set(_triplet_hostbindir ${CURRENT_INSTALLED_DIR}/tools/qt5/bin) + find_program(QMAKE_COMMAND NAMES qmake PATHS ${VCPKG_QT_HOST_TOOLS_ROOT_DIR}/bin ${_triplet_hostbindir}) if(NOT QMAKE_COMMAND) message(FATAL_ERROR "vcpkg_configure_qmake: unable to find qmake.") endif() - if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - list(APPEND _csc_OPTIONS CONFIG+=staticlib) + if(${VCPKG_LIBRARY_LINKAGE} STREQUAL "static") + list(APPEND _csc_OPTIONS "CONFIG-=shared") + list(APPEND _csc_OPTIONS "CONFIG*=static") + else() + list(APPEND _csc_OPTIONS "CONFIG-=static") + 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() + # Cleanup build directories file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg) + if(DEFINED VCPKG_OSX_DEPLOYMENT_TARGET) + set(ENV{QMAKE_MACOSX_DEPLOYMENT_TARGET} ${VCPKG_OSX_DEPLOYMENT_TARGET}) + endif() + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") 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) vcpkg_execute_required_process( - COMMAND ${QMAKE_COMMAND} CONFIG-=debug CONFIG+=release ${_csc_OPTIONS} ${_csc_SOURCE_PATH} -qtconf "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/qt.conf" + COMMAND ${QMAKE_COMMAND} CONFIG-=debug CONFIG+=release ${_csc_OPTIONS} ${_csc_OPTIONS_RELEASE} ${_csc_SOURCE_PATH} -qtconf "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/qt.conf" WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel LOGNAME config-${TARGET_TRIPLET}-rel ) @@ -49,7 +65,7 @@ function(vcpkg_configure_qmake) message(STATUS "Configuring ${TARGET_TRIPLET}-dbg") file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg) vcpkg_execute_required_process( - COMMAND ${QMAKE_COMMAND} CONFIG-=release CONFIG+=debug ${_csc_OPTIONS} ${_csc_SOURCE_PATH} -qtconf "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/qt.conf" + COMMAND ${QMAKE_COMMAND} CONFIG-=release CONFIG+=debug ${_csc_OPTIONS} ${_csc_OPTIONS_DEBUG} ${_csc_SOURCE_PATH} -qtconf "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/qt.conf" WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg LOGNAME config-${TARGET_TRIPLET}-dbg ) -- cgit v1.2.3 From 191c864927ea9e9e8788408adda4eff35d3edaf1 Mon Sep 17 00:00:00 2001 From: martin-s Date: Fri, 13 Sep 2019 06:52:52 +0000 Subject: Fix bug in `.vcpkg-root` detection that breaks `--overlay-triplets` (#7954) * - Added scripts variable to ports file. - Added check if triplet file is not available (NPE). * - Fixed line endings. * Provide location of .vcpkg-root to ports.cmake * vcpkg sets VCPKG_ROOT_PATH in ports.cmake * [vcpkg] Fail if VCPKG_ROOT_PATH is not passed from vcpkg.exe * [vcpkg] Fix vcpkg rooth path * [vcpkg] Make --x-scripts-root an experimental command --- scripts/cmake/vcpkg_build_msbuild.cmake | 2 +- scripts/cmake/vcpkg_configure_cmake.cmake | 12 ++++----- scripts/cmake/vcpkg_copy_tool_dependencies.cmake | 2 +- scripts/cmake/vcpkg_install_msbuild.cmake | 2 +- scripts/ports.cmake | 34 ++++++++++++++---------- 5 files changed, 29 insertions(+), 23 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_build_msbuild.cmake b/scripts/cmake/vcpkg_build_msbuild.cmake index 50432f8fa..cfd429da2 100644 --- a/scripts/cmake/vcpkg_build_msbuild.cmake +++ b/scripts/cmake/vcpkg_build_msbuild.cmake @@ -108,7 +108,7 @@ function(vcpkg_build_msbuild) if(_csc_USE_VCPKG_INTEGRATION) list( APPEND _csc_OPTIONS - /p:ForceImportBeforeCppTargets=${VCPKG_ROOT_DIR}/scripts/buildsystems/msbuild/vcpkg.targets + /p:ForceImportBeforeCppTargets=${SCRIPTS}/buildsystems/msbuild/vcpkg.targets "/p:VcpkgTriplet=${TARGET_TRIPLET}" ) endif() diff --git a/scripts/cmake/vcpkg_configure_cmake.cmake b/scripts/cmake/vcpkg_configure_cmake.cmake index 6c392d385..1c3a26a74 100644 --- a/scripts/cmake/vcpkg_configure_cmake.cmake +++ b/scripts/cmake/vcpkg_configure_cmake.cmake @@ -198,15 +198,15 @@ function(vcpkg_configure_cmake) if(NOT VCPKG_CHAINLOAD_TOOLCHAIN_FILE) if(NOT DEFINED VCPKG_CMAKE_SYSTEM_NAME OR _TARGETTING_UWP) - set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${VCPKG_ROOT_DIR}/scripts/toolchains/windows.cmake") + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/windows.cmake") elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") - set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${VCPKG_ROOT_DIR}/scripts/toolchains/linux.cmake") + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/linux.cmake") elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android") - set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${VCPKG_ROOT_DIR}/scripts/toolchains/android.cmake") + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/android.cmake") elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Darwin") - set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${VCPKG_ROOT_DIR}/scripts/toolchains/osx.cmake") + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/osx.cmake") elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") - set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${VCPKG_ROOT_DIR}/scripts/toolchains/freebsd.cmake") + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/freebsd.cmake") endif() endif() @@ -222,7 +222,7 @@ function(vcpkg_configure_cmake) "-DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=TRUE" "-DCMAKE_VERBOSE_MAKEFILE=ON" "-DVCPKG_APPLOCAL_DEPS=OFF" - "-DCMAKE_TOOLCHAIN_FILE=${VCPKG_ROOT_DIR}/scripts/buildsystems/vcpkg.cmake" + "-DCMAKE_TOOLCHAIN_FILE=${SCRIPTS}/buildsystems/vcpkg.cmake" "-DCMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION=ON" "-DVCPKG_CXX_FLAGS=${VCPKG_CXX_FLAGS}" "-DVCPKG_CXX_FLAGS_RELEASE=${VCPKG_CXX_FLAGS_RELEASE}" diff --git a/scripts/cmake/vcpkg_copy_tool_dependencies.cmake b/scripts/cmake/vcpkg_copy_tool_dependencies.cmake index 165f19ed1..396d20b41 100644 --- a/scripts/cmake/vcpkg_copy_tool_dependencies.cmake +++ b/scripts/cmake/vcpkg_copy_tool_dependencies.cmake @@ -21,7 +21,7 @@ function(vcpkg_copy_tool_dependencies TOOL_DIR) file(GLOB TOOLS ${TOOL_DIR}/*.exe ${TOOL_DIR}/*.dll) foreach(TOOL ${TOOLS}) execute_process(COMMAND powershell -noprofile -executionpolicy Bypass -nologo - -file ${VCPKG_ROOT_DIR}/scripts/buildsystems/msbuild/applocal.ps1 + -file ${SCRIPTS}/buildsystems/msbuild/applocal.ps1 -targetBinary ${TOOL} -installedDir ${PATH_TO_SEARCH} OUTPUT_VARIABLE OUT) diff --git a/scripts/cmake/vcpkg_install_msbuild.cmake b/scripts/cmake/vcpkg_install_msbuild.cmake index 92c84bf0b..7c2fdd836 100644 --- a/scripts/cmake/vcpkg_install_msbuild.cmake +++ b/scripts/cmake/vcpkg_install_msbuild.cmake @@ -144,7 +144,7 @@ function(vcpkg_install_msbuild) endif() if(_csc_USE_VCPKG_INTEGRATION) - list(APPEND _csc_OPTIONS /p:ForceImportBeforeCppTargets=${VCPKG_ROOT_DIR}/scripts/buildsystems/msbuild/vcpkg.targets /p:VcpkgApplocalDeps=false) + list(APPEND _csc_OPTIONS /p:ForceImportBeforeCppTargets=${SCRIPTS}/buildsystems/msbuild/vcpkg.targets /p:VcpkgApplocalDeps=false) endif() get_filename_component(SOURCE_PATH_SUFFIX "${_csc_SOURCE_PATH}" NAME) diff --git a/scripts/ports.cmake b/scripts/ports.cmake index 056485568..456434f12 100644 --- a/scripts/ports.cmake +++ b/scripts/ports.cmake @@ -7,22 +7,28 @@ macro(debug_message) endmacro() #Detect .vcpkg-root to figure VCPKG_ROOT_DIR, starting from triplet folder. -get_filename_component(TARGET_TRIPLET_DIR ${TARGET_TRIPLET_FILE} DIRECTORY) -SET(VCPKG_ROOT_DIR_CANDIDATE ${TARGET_TRIPLET_DIR}) -while(IS_DIRECTORY ${VCPKG_ROOT_DIR_CANDIDATE} AND NOT EXISTS "${VCPKG_ROOT_DIR_CANDIDATE}/.vcpkg-root") - get_filename_component(VCPKG_ROOT_DIR_TEMP ${VCPKG_ROOT_DIR_CANDIDATE} DIRECTORY) - if (VCPKG_ROOT_DIR_TEMP STREQUAL VCPKG_ROOT_DIR_CANDIDATE) # If unchanged, we have reached the root of the drive - message(FATAL_ERROR "Could not find .vcpkg-root") - else() - SET(VCPKG_ROOT_DIR_CANDIDATE ${VCPKG_ROOT_DIR_TEMP}) - endif() -endwhile() +set(VCPKG_ROOT_DIR_CANDIDATE ${CMAKE_CURRENT_LIST_DIR}) + +if(DEFINED VCPKG_ROOT_PATH) + set(VCPKG_ROOT_DIR_CANDIDATE ${VCPKG_ROOT_PATH}) +else() + message(FATAL_ERROR [[ + Your vcpkg executable is outdated and is not compatible with the current CMake scripts. + Please re-build vcpkg by running bootstrap-vcpkg. + ]]) +endif() + +# Validate VCPKG_ROOT_DIR_CANDIDATE +if (NOT EXISTS "${VCPKG_ROOT_DIR_CANDIDATE}/.vcpkg-root") + message(FATAL_ERROR "Could not find .vcpkg-root") +endif() set(VCPKG_ROOT_DIR ${VCPKG_ROOT_DIR_CANDIDATE}) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake) set(CURRENT_INSTALLED_DIR ${VCPKG_ROOT_DIR}/installed/${TARGET_TRIPLET} CACHE PATH "Location to install final packages") set(DOWNLOADS ${VCPKG_ROOT_DIR}/downloads CACHE PATH "Location to download sources and tools") +set(SCRIPTS ${CMAKE_CURRENT_LIST_DIR} CACHE PATH "Location to stored scripts") set(PACKAGES_DIR ${VCPKG_ROOT_DIR}/packages CACHE PATH "Location to store package images") set(BUILDTREES_DIR ${VCPKG_ROOT_DIR}/buildtrees CACHE PATH "Location to perform actual extract+config+build") @@ -80,8 +86,8 @@ if(CMD MATCHES "^BUILD$") endif() set(TRIPLET_SYSTEM_ARCH ${VCPKG_TARGET_ARCHITECTURE}) - include(${CMAKE_CURRENT_LIST_DIR}/cmake/vcpkg_common_definitions.cmake) - include(${CMAKE_CURRENT_LIST_DIR}/cmake/vcpkg_common_functions.cmake) + include(${SCRIPTS}/cmake/vcpkg_common_definitions.cmake) + include(${SCRIPTS}/cmake/vcpkg_common_functions.cmake) include(${CURRENT_PORT_DIR}/portfile.cmake) set(BUILD_INFO_FILE_PATH ${CURRENT_PACKAGES_DIR}/BUILD_INFO) @@ -131,8 +137,8 @@ elseif(CMD MATCHES "^CREATE$") file(SHA512 ${DOWNLOADS}/${FILENAME} SHA512) file(MAKE_DIRECTORY ports/${PORT}) - configure_file(scripts/templates/portfile.in.cmake ports/${PORT}/portfile.cmake @ONLY) - configure_file(scripts/templates/CONTROL.in ports/${PORT}/CONTROL @ONLY) + configure_file(${SCRIPTS}/templates/portfile.in.cmake ports/${PORT}/portfile.cmake @ONLY) + configure_file(${SCRIPTS}/templates/CONTROL.in ports/${PORT}/CONTROL @ONLY) message(STATUS "Generated portfile: ${NATIVE_VCPKG_ROOT_DIR}\\ports\\${PORT}\\portfile.cmake") message(STATUS "Generated CONTROL: ${NATIVE_VCPKG_ROOT_DIR}\\ports\\${PORT}\\CONTROL") -- cgit v1.2.3 From 8a44d47f76e01b787ebb1fc71dfe36909fdd1793 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 16 Sep 2019 18:06:06 +0200 Subject: [vcpkg] add missing implib definitions, fix shared lib extension on mac (#8131) * [vcpkg] add missing implib definitions, fix shared lib extension on mac (cherry picked from commit 2cddef9541202ecc01ad43036575bc606dc01117) * Better find_library suffixes and prefixes. * moved additional suffix into a comment and reverted back to what is expected on windows * updated documentation for add variables. --- scripts/cmake/vcpkg_common_definitions.cmake | 45 +++++++++++++++++++++------- 1 file changed, 35 insertions(+), 10 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_common_definitions.cmake b/scripts/cmake/vcpkg_common_definitions.cmake index 662ea2a6e..28177fbbf 100644 --- a/scripts/cmake/vcpkg_common_definitions.cmake +++ b/scripts/cmake/vcpkg_common_definitions.cmake @@ -11,10 +11,15 @@ ## VCPKG_TARGET_STATIC_LIBRARY_SUFFIX static library suffix for target (same as CMAKE_STATIC_LIBRARY_SUFFIX) ## VCPKG_TARGET_SHARED_LIBRARY_PREFIX shared library prefix for target (same as CMAKE_SHARED_LIBRARY_PREFIX) ## VCPKG_TARGET_SHARED_LIBRARY_SUFFIX shared library suffix for target (same as CMAKE_SHARED_LIBRARY_SUFFIX) +## VCPKG_TARGET_IMPORT_LIBRARY_PREFIX import library prefix for target (same as CMAKE_IMPORT_LIBRARY_PREFIX) +## 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 ## ``` -## -## CMAKE_STATIC_LIBRARY_PREFIX, CMAKE_STATIC_LIBRARY_SUFFIX, CMAKE_SHARED_LIBRARY_PREFIX, CMAKE_SHARED_LIBRARY_SUFFIX are defined for the target so that -## portfiles are able to use find_library calls to discover dependent libraries within the current triplet for ports. +## +## CMAKE_STATIC_LIBRARY_(PREFIX|SUFFIX), CMAKE_SHARED_LIBRARY_(PREFIX|SUFFIX) and CMAKE_IMPORT_LIBRARY_(PREFIX|SUFFIX) are defined for the target +## Furthermore the variables CMAKE_FIND_LIBRARY_(PREFIXES|SUFFIXES) are also defined for the target so that +## portfiles are able to use find_library calls to discover dependent libraries within the current triplet for ports. ## #Helper variable to identify the Target system. VCPKG_TARGET_IS_ @@ -47,24 +52,44 @@ else() set(VCPKG_TARGET_EXECUTABLE_SUFFIX "") endif() -#Helper variables for libraries +#Helper variables for libraries if(VCPKG_TARGET_IS_WINDOWS) set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".lib") set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".dll") + set(VCPKG_TARGET_IMPORT_LIBRARY_SUFFIX ".lib") set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "") set(VCPKG_TARGET_SHARED_LIBRARY_PREFIX "") + set(VCPKG_TARGET_IMPORT_LIBRARY_PREFIX "") + set(VCPKG_FIND_LIBRARY_SUFFIXES ".lib" ".dll") #This is a slight modification to CMakes value which does not include ".dll". + set(VCPKG_FIND_LIBRARY_PREFIXES "" "lib") #This is a slight modification to CMakes value which does not include "lib". + ## For CYGWIN and Windows GNU, maybe VCPKG will support that in the future? + #set(VCPKG_TARGET_IMPORT_LIBRARY_SUFFIX ".dll.a") + #set(VCPKG_TARGET_IMPORT_LIBRARY_PREFIX "lib") + #set(VCPKG_FIND_LIBRARY_SUFFIXES ".dll" ".dll.a" ".a" ".lib") + #set(VCPKG_FIND_LIBRARY_PREFIXES "lib" "") +elseif(VCPKG_TARGET_IS_OSX) + set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".a") + set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".dylib") + set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "lib") + set(VCPKG_TARGET_SHARED_LIBRARY_PREFIX "lib") + set(VCPKG_FIND_LIBRARY_SUFFIXES ".tbd" ".dylib" ".so" ".a") + set(VCPKG_FIND_LIBRARY_PREFIXES "lib" "") else() set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".a") set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".so") set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "lib") set(VCPKG_TARGET_SHARED_LIBRARY_PREFIX "lib") + set(VCPKG_FIND_LIBRARY_SUFFIXES ".so" ".a") + set(VCPKG_FIND_LIBRARY_PREFIXES "lib" "") endif() #Setting these variables allows find_library to work in script mode and thus in portfiles! #This allows us scale down on hardcoded target dependent paths in portfiles -set(CMAKE_STATIC_LIBRARY_SUFFIX ${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}) -set(CMAKE_SHARED_LIBRARY_SUFFIX ${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}) -set(CMAKE_STATIC_LIBRARY_PREFIX ${VCPKG_TARGET_STATIC_LIBRARY_PREFIX}) -set(CMAKE_SHARED_LIBRARY_PREFIX ${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}) -set(CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_STATIC_LIBRARY_SUFFIX};${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") # Required by find_library -set(CMAKE_FIND_LIBRARY_PREFIXES "${CMAKE_STATIC_LIBRARY_PREFIX};${CMAKE_SHARED_LIBRARY_PREFIX}" CACHE INTERNAL "") # Required by find_library +set(CMAKE_STATIC_LIBRARY_SUFFIX "${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}") +set(CMAKE_SHARED_LIBRARY_SUFFIX "${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}") +set(CMAKE_IMPORT_LIBRARY_SUFFIX "${VCPKG_TARGET_IMPORT_LIBRARY_PREFIX}") +set(CMAKE_STATIC_LIBRARY_PREFIX "${VCPKG_TARGET_STATIC_LIBRARY_PREFIX}") +set(CMAKE_SHARED_LIBRARY_PREFIX "${VCPKG_TARGET_SHARED_LIBRARY_PREFIX}") +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 -- cgit v1.2.3 From 279e25aecfe30f55296881ea9b0236c1d6ee030a Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 20 Sep 2019 12:20:21 +0200 Subject: revert changes to vcpkg_build_qmake file --- scripts/cmake/vcpkg_build_qmake.cmake | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_build_qmake.cmake b/scripts/cmake/vcpkg_build_qmake.cmake index 5b4f017e0..cf79fe8fc 100644 --- a/scripts/cmake/vcpkg_build_qmake.cmake +++ b/scripts/cmake/vcpkg_build_qmake.cmake @@ -11,9 +11,11 @@ function(vcpkg_build_qmake) cmake_parse_arguments(_csc "SKIP_MAKEFILES" "BUILD_LOGNAME" "TARGETS;RELEASE_TARGETS;DEBUG_TARGETS" ${ARGN}) if(CMAKE_HOST_WIN32) + set(_PATHSEP ";") vcpkg_find_acquire_program(JOM) set(INVOKE "${JOM}") else() + set(_PATHSEP ":") find_program(MAKE make) set(INVOKE "${MAKE}") endif() @@ -56,15 +58,9 @@ function(vcpkg_build_qmake) #First generate the makefiles so we can modify them if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - set(_BUILD_PREFIX "/debug") - set(_int_build_type dbg) - - vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/tools/qt5") - vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}${_BUILD_PREFIX}/bin") - vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}${_BUILD_PREFIX}/lib") - + set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/debug/lib${_PATHSEP}${CURRENT_INSTALLED_DIR}/debug/bin${_PATHSEP}${CURRENT_INSTALLED_DIR}/tools/qt5${_PATHSEP}${ENV_PATH_BACKUP}") if(NOT _csc_SKIP_MAKEFILES) - run_jom(qmake_all makefiles ${_int_build_type}) + run_jom(qmake_all makefiles dbg) #Store debug makefiles path file(GLOB_RECURSE DEBUG_MAKEFILES ${DEBUG_DIR}/*Makefile*) @@ -83,18 +79,13 @@ function(vcpkg_build_qmake) endforeach() endif() - run_jom("${_csc_DEBUG_TARGETS}" ${_csc_BUILD_LOGNAME} ${_int_build_type}) + run_jom("${_csc_DEBUG_TARGETS}" ${_csc_BUILD_LOGNAME} dbg) endif() if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") - set(_int_build_type rel) - - vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/tools/qt5") - vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}${_BUILD_PREFIX}/bin") - vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}${_BUILD_PREFIX}/lib") - + set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/lib${_PATHSEP}${CURRENT_INSTALLED_DIR}/bin${_PATHSEP}${CURRENT_INSTALLED_DIR}/tools/qt5${_PATHSEP}${ENV_PATH_BACKUP}") if(NOT _csc_SKIP_MAKEFILES) - run_jom(qmake_all makefiles ${_int_build_type}) + run_jom(qmake_all makefiles rel) #Store release makefile path file(GLOB_RECURSE RELEASE_MAKEFILES ${RELEASE_DIR}/*Makefile*) @@ -111,7 +102,7 @@ function(vcpkg_build_qmake) endforeach() endif() - run_jom("${_csc_RELEASE_TARGETS}" ${_csc_BUILD_LOGNAME} ${_int_build_type}) + run_jom("${_csc_RELEASE_TARGETS}" ${_csc_BUILD_LOGNAME} rel) endif() # Restore the original value of ENV{PATH} -- cgit v1.2.3 From 0c7bf66527124dd27773bf169d0c41f7936bdb96 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 20 Sep 2019 12:52:14 +0200 Subject: removed escaped version. added correct usage description --- scripts/cmake/vcpkg_common_definitions.cmake | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_common_definitions.cmake b/scripts/cmake/vcpkg_common_definitions.cmake index 75a1e8a9c..579925420 100644 --- a/scripts/cmake/vcpkg_common_definitions.cmake +++ b/scripts/cmake/vcpkg_common_definitions.cmake @@ -5,8 +5,7 @@ ## ## The following variables are available: ## ```cmake ## VCPKG_TARGET_IS_ with being one of the following: WINDOWS, UWP, LINUX, OSX, ANDROID, FREEBSD. only defined if -## VCPKG_HOST_PATH_SEPARATOR Host specific path separator -## VCPKG_HOST_PATH_SEPARATOR_ESCAPED Escaped version of VCPKG_HOST_PATH_SEPARATOR if necessary (set to VCPKG_HOST_PATH_SEPARATOR if not necessary) +## VCPKG_HOST_PATH_SEPARATOR Host specific path separator (USAGE: "${VCPKG_HOST_PATH_SEPARATOR}"; only use and pass variables with VCPKG_HOST_PATH_SEPARATOR within "") ## VCPKG_HOST_EXECUTABLE_SUFFIX executable suffix of the host ## VCPKG_TARGET_EXECUTABLE_SUFFIX executable suffix of the target ## VCPKG_TARGET_STATIC_LIBRARY_PREFIX static library prefix for target (same as CMAKE_STATIC_LIBRARY_PREFIX) @@ -42,11 +41,9 @@ endif() #Helper variable to identify the host path separator. if(CMAKE_HOST_WIN32) - set(VCPKG_HOST_PATH_SEPARATOR "\;") #Is escaped here because else VCPKG_HOST_PATH_SEPARATOR will be a list of two empty elements - set(VCPKG_HOST_PATH_SEPARATOR_ESCAPED "\\\;") #Needed if you want to pass around variables with VCPKG_HOST_PATH_SEPARATOR + set(VCPKG_HOST_PATH_SEPARATOR ";") elseif(CMAKE_HOST_UNIX) set(VCPKG_HOST_PATH_SEPARATOR ":") - set(VCPKG_HOST_PATH_SEPARATOR_ESCAPED ${VCPKG_HOST_PATH_SEPARATOR}) endif() #Helper variables to identify executables on host/target -- cgit v1.2.3 From 119e9b572983019566a27dfe34216f577e09e4d4 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 20 Sep 2019 12:52:33 +0200 Subject: update vcpkg_configure_cmake --- scripts/cmake/vcpkg_configure_cmake.cmake | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_configure_cmake.cmake b/scripts/cmake/vcpkg_configure_cmake.cmake index 1c3a26a74..c31955fb2 100644 --- a/scripts/cmake/vcpkg_configure_cmake.cmake +++ b/scripts/cmake/vcpkg_configure_cmake.cmake @@ -72,14 +72,11 @@ function(vcpkg_configure_cmake) endif() if(CMAKE_HOST_WIN32) - set(_PATHSEP ";") if(DEFINED ENV{PROCESSOR_ARCHITEW6432}) set(_csc_HOST_ARCHITECTURE $ENV{PROCESSOR_ARCHITEW6432}) else() set(_csc_HOST_ARCHITECTURE $ENV{PROCESSOR_ARCHITECTURE}) endif() - else() - set(_PATHSEP ":") endif() set(NINJA_CAN_BE_USED ON) # Ninja as generator @@ -154,7 +151,7 @@ function(vcpkg_configure_cmake) if(GENERATOR STREQUAL "Ninja") vcpkg_find_acquire_program(NINJA) get_filename_component(NINJA_PATH ${NINJA} DIRECTORY) - set(ENV{PATH} "$ENV{PATH}${_PATHSEP}${NINJA_PATH}") + vcpkg_add_to_path("${NINJA_PATH}") list(APPEND _csc_OPTIONS "-DCMAKE_MAKE_PROGRAM=${NINJA}") endif() @@ -265,7 +262,7 @@ function(vcpkg_configure_cmake) vcpkg_find_acquire_program(NINJA) get_filename_component(NINJA_PATH ${NINJA} DIRECTORY) - set(ENV{PATH} "$ENV{PATH}${_PATHSEP}${NINJA_PATH}") + vcpkg_add_to_path("${NINJA_PATH}") #parallelize the configure step set(_contents -- cgit v1.2.3 From e2be4512a00ba30ab5081bbbf1e535c014f0df37 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 20 Sep 2019 12:57:29 +0200 Subject: fixed leaking variable in vcpkg_build_qmake --- scripts/cmake/vcpkg_build_qmake.cmake | 1 + 1 file changed, 1 insertion(+) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_build_qmake.cmake b/scripts/cmake/vcpkg_build_qmake.cmake index 03c468463..ef6fb30f3 100644 --- a/scripts/cmake/vcpkg_build_qmake.cmake +++ b/scripts/cmake/vcpkg_build_qmake.cmake @@ -65,6 +65,7 @@ function(vcpkg_build_qmake) run_jom(qmake_all makefiles ${_short_name_${_buildname}}) endif() run_jom("${_csc_${_buildname}_TARGETS}" ${_csc_BUILD_LOGNAME} ${_short_name_${_buildname}}) + unset(_BUILD_PREFIX) endforeach() # Restore the original value of ENV{PATH} -- cgit v1.2.3 From 86a5b6fd7b58be61ebc375c5f61b3e99fd47b2ae Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Fri, 20 Sep 2019 23:06:43 +0200 Subject: [Qt] Fix static builds of qt5-imageformats (#8222) * forward extra arguments to vcpkg_configure_qmake from submodules * make image format dependent on tiff and libwebp * make tools dependent on imageformat * build options must be passed a bit different then normal qmake options * add the required dependencies * a new dependency discovered in qt5-declarative * need webpdemux also * qt5-declarative is dependent on imageformats so we can drop it here * remove empty qt.conf if it exists. closes #8180 * add all recommended dependencies as dependencies in control. --- scripts/cmake/vcpkg_configure_qmake.cmake | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_configure_qmake.cmake b/scripts/cmake/vcpkg_configure_qmake.cmake index 73f554a33..a04a4c8f6 100644 --- a/scripts/cmake/vcpkg_configure_qmake.cmake +++ b/scripts/cmake/vcpkg_configure_qmake.cmake @@ -16,7 +16,7 @@ # The options passed to qmake. function(vcpkg_configure_qmake) - cmake_parse_arguments(_csc "" "SOURCE_PATH" "OPTIONS;OPTIONS_RELEASE;OPTIONS_DEBUG" ${ARGN}) + cmake_parse_arguments(_csc "" "SOURCE_PATH" "OPTIONS;OPTIONS_RELEASE;OPTIONS_DEBUG;BUILD_OPTIONS;BUILD_OPTIONS_RELEASE;BUILD_OPTIONS_DEBUG" ${ARGN}) # Find qmake executable set(_triplet_hostbindir ${CURRENT_INSTALLED_DIR}/tools/qt5/bin) @@ -51,8 +51,14 @@ function(vcpkg_configure_qmake) 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}) + endif() 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} CONFIG-=debug CONFIG+=release + ${_csc_OPTIONS} ${_csc_OPTIONS_RELEASE} ${_csc_SOURCE_PATH} + -qtconf "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/qt.conf" + ${BUILD_OPT} WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel LOGNAME config-${TARGET_TRIPLET}-rel ) @@ -64,8 +70,14 @@ function(vcpkg_configure_qmake) 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" + 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 ) -- cgit v1.2.3 From c7542de3f31defef6344e9acb05adf7d39f6d4a8 Mon Sep 17 00:00:00 2001 From: Don Date: Mon, 23 Sep 2019 13:43:52 -0700 Subject: Use CMAKE_TRY_COMPILE_PLATFORM_VARIABLES to propogate values (#5180) CMAKE_TRY_COMPILE_PLATFORM_VARIABLES is used when CMake 3.6.0 or higher is encountered. For older versions the previous behavior emulating this functionality is used. --- scripts/buildsystems/vcpkg.cmake | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) (limited to 'scripts') diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake index 6eb0f62dd..ed9bcbc69 100644 --- a/scripts/buildsystems/vcpkg.cmake +++ b/scripts/buildsystems/vcpkg.cmake @@ -1,10 +1,17 @@ # Mark variables as used so cmake doesn't complain about them mark_as_advanced(CMAKE_TOOLCHAIN_FILE) -# This is a backport of CMAKE_TRY_COMPILE_PLATFORM_VARIABLES to cmake 3.0 -get_property( _CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE ) -if( _CMAKE_IN_TRY_COMPILE ) - include( "${CMAKE_CURRENT_SOURCE_DIR}/../vcpkg.config.cmake" OPTIONAL ) +# Determine whether the toolchain is loaded during a try-compile configuration +get_property(_CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE) + +if (${CMAKE_VERSION} VERSION_LESS "3.6.0") + set(_CMAKE_EMULATE_TRY_COMPILE_PLATFORM_VARIABLES ON) +else() + set(_CMAKE_EMULATE_TRY_COMPILE_PLATFORM_VARIABLES OFF) +endif() + +if(_CMAKE_IN_TRY_COMPILE AND _CMAKE_EMULATE_TRY_COMPILE_PLATFORM_VARIABLES) + include("${CMAKE_CURRENT_SOURCE_DIR}/../vcpkg.config.cmake" OPTIONAL) endif() if(VCPKG_CHAINLOAD_TOOLCHAIN_FILE) @@ -264,13 +271,23 @@ set(_UNUSED ${CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY}) set(_UNUSED ${CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY}) set(_UNUSED ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP}) +# Propogate these values to try-compile configurations so the triplet and toolchain load if(NOT _CMAKE_IN_TRY_COMPILE) - file(TO_CMAKE_PATH "${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}" _chainload_file) - file(TO_CMAKE_PATH "${_VCPKG_ROOT_DIR}" _root_dir) - file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/vcpkg.config.cmake" - "set(VCPKG_TARGET_TRIPLET \"${VCPKG_TARGET_TRIPLET}\" CACHE STRING \"\")\n" - "set(VCPKG_APPLOCAL_DEPS \"${VCPKG_APPLOCAL_DEPS}\" CACHE STRING \"\")\n" - "set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE \"${_chainload_file}\" CACHE STRING \"\")\n" - "set(_VCPKG_ROOT_DIR \"${_root_dir}\" CACHE STRING \"\")\n" + if(_CMAKE_EMULATE_TRY_COMPILE_PLATFORM_VARIABLES) + file(TO_CMAKE_PATH "${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}" _chainload_file) + file(TO_CMAKE_PATH "${_VCPKG_ROOT_DIR}" _root_dir) + file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/vcpkg.config.cmake" + "set(VCPKG_TARGET_TRIPLET \"${VCPKG_TARGET_TRIPLET}\" CACHE STRING \"\")\n" + "set(VCPKG_APPLOCAL_DEPS \"${VCPKG_APPLOCAL_DEPS}\" CACHE STRING \"\")\n" + "set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE \"${_chainload_file}\" CACHE STRING \"\")\n" + "set(_VCPKG_ROOT_DIR \"${_root_dir}\" CACHE STRING \"\")\n" ) + else() + set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES + VCPKG_TARGET_TRIPLET + VCPKG_APPLOCAL_DEPS + VCPKG_CHAINLOAD_TOOLCHAIN_FILE + _VCPKG_ROOT_DIR + ) + endif() endif() -- cgit v1.2.3 From 6c7f1c76738be50529fa8f1857db426fd3ef1d56 Mon Sep 17 00:00:00 2001 From: Leonid Pospelov Date: Mon, 23 Sep 2019 23:03:59 +0200 Subject: [vcpkg] Avoid RENAME usage to prevent cross-device link problems (#4245) (#8032) --- scripts/cmake/vcpkg_download_distfile.cmake | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_download_distfile.cmake b/scripts/cmake/vcpkg_download_distfile.cmake index 1fbff40e5..887eb285f 100644 --- a/scripts/cmake/vcpkg_download_distfile.cmake +++ b/scripts/cmake/vcpkg_download_distfile.cmake @@ -75,11 +75,14 @@ function(vcpkg_download_distfile VAR) # Works around issue #3399 if(IS_DIRECTORY "${DOWNLOADS}/temp") + # Delete "temp0" directory created by the old version of vcpkg file(REMOVE_RECURSE "${DOWNLOADS}/temp0") - file(RENAME "${DOWNLOADS}/temp" "${DOWNLOADS}/temp0") - file(REMOVE_RECURSE "${DOWNLOADS}/temp0") + + file(GLOB temp_files "${DOWNLOADS}/temp") + file(REMOVE_RECURSE ${temp_files}) + else() + file(MAKE_DIRECTORY "${DOWNLOADS}/temp") endif() - file(MAKE_DIRECTORY "${DOWNLOADS}/temp") function(test_hash FILE_PATH FILE_KIND CUSTOM_ERROR_ADVICE) if(_VCPKG_INTERNAL_NO_HASH_CHECK) -- cgit v1.2.3 From 726b7a6618f24fb833b597f2f5e86e1d3d0e47ea Mon Sep 17 00:00:00 2001 From: Tetsuya Hayashi Date: Wed, 25 Sep 2019 07:58:10 +0900 Subject: [ports.cmake] Fixup capitalization inconsistencies of Windows drive letter. (#8304) CMAKE_CURRENT_LIST_DIR reflect current directory. Thus It can be lowercase drive letter. The lowercase drive letter cause #8237 issue. Fixup drive letter to uppercase by using get_filename_component(). --- scripts/ports.cmake | 3 +++ 1 file changed, 3 insertions(+) (limited to 'scripts') diff --git a/scripts/ports.cmake b/scripts/ports.cmake index 456434f12..cdc0bdd99 100644 --- a/scripts/ports.cmake +++ b/scripts/ports.cmake @@ -18,6 +18,9 @@ else() ]]) endif() +# fixup Windows drive letter to uppercase. +get_filename_component(VCPKG_ROOT_DIR_CANDIDATE ${VCPKG_ROOT_DIR_CANDIDATE} ABSOLUTE) + # Validate VCPKG_ROOT_DIR_CANDIDATE if (NOT EXISTS "${VCPKG_ROOT_DIR_CANDIDATE}/.vcpkg-root") message(FATAL_ERROR "Could not find .vcpkg-root") -- cgit v1.2.3 From 9433136b22b5e443d550ca7665a562637c8a86b9 Mon Sep 17 00:00:00 2001 From: Robert Schumacher Date: Fri, 27 Sep 2019 10:41:02 -0700 Subject: [boost] Update to 1.71.0 (#7959) * [boost] Update to 1.71.0 * [openmvs] Fixes for boost 1.71 * [telnetpp] DISABLE_PARALLEL_CONFIGURE * [execute_process] Fix output variables (like error_code) not getting populated * [telnetpp] Add missing boost-exception dependency * [boost] Refactor generate-ports.ps1 into scripts dir. Enable boost-thread on uwp. * [boost-iostreams] Revert removal of zstd dependency * [openmvs] Fix tools deployment --- scripts/boost/.gitignore | 3 + scripts/boost/generate-ports.ps1 | 421 ++++++++++++++++++++++++ scripts/boost/post-build-stubs/config.cmake | 7 + scripts/boost/post-build-stubs/context.cmake | 6 + scripts/boost/post-build-stubs/exception.cmake | 3 + scripts/boost/post-build-stubs/predef.cmake | 2 + scripts/boost/post-build-stubs/test.cmake | 14 + scripts/boost/post-source-stubs/context.cmake | 5 + scripts/boost/post-source-stubs/fiber.cmake | 5 + scripts/boost/post-source-stubs/iostreams.cmake | 18 + scripts/boost/post-source-stubs/log.cmake | 13 + scripts/boost/post-source-stubs/python.cmake | 5 + scripts/boost/post-source-stubs/test.cmake | 5 + 13 files changed, 507 insertions(+) create mode 100644 scripts/boost/.gitignore create mode 100644 scripts/boost/generate-ports.ps1 create mode 100644 scripts/boost/post-build-stubs/config.cmake create mode 100644 scripts/boost/post-build-stubs/context.cmake create mode 100644 scripts/boost/post-build-stubs/exception.cmake create mode 100644 scripts/boost/post-build-stubs/predef.cmake create mode 100644 scripts/boost/post-build-stubs/test.cmake create mode 100644 scripts/boost/post-source-stubs/context.cmake create mode 100644 scripts/boost/post-source-stubs/fiber.cmake create mode 100644 scripts/boost/post-source-stubs/iostreams.cmake create mode 100644 scripts/boost/post-source-stubs/log.cmake create mode 100644 scripts/boost/post-source-stubs/python.cmake create mode 100644 scripts/boost/post-source-stubs/test.cmake (limited to 'scripts') diff --git a/scripts/boost/.gitignore b/scripts/boost/.gitignore new file mode 100644 index 000000000..f8e31288e --- /dev/null +++ b/scripts/boost/.gitignore @@ -0,0 +1,3 @@ +/boost +/downloads +/libs \ No newline at end of file diff --git a/scripts/boost/generate-ports.ps1 b/scripts/boost/generate-ports.ps1 new file mode 100644 index 000000000..d51b37f7e --- /dev/null +++ b/scripts/boost/generate-ports.ps1 @@ -0,0 +1,421 @@ +[CmdletBinding()] +param ( + $libraries = @(), + $version = "1.71.0" +) + +$scriptsDir = split-path -parent $MyInvocation.MyCommand.Definition +$portsDir = "$scriptsDir/../../ports" + +function TransformReference() +{ + param ( + [string]$library + ) + + if ($library -match "python|fiber") + { + # These two only work on windows desktop + "$library (windows)" + } + elseif ($library -match "type[_-]erasure|contract") + { + # These only work on x86-derived processors + "$library (!arm)" + } + elseif ($library -match "iostreams|filesystem|context|stacktrace|coroutine`$|locale|test|wave|log`$") + { + "$library (!uwp)" + } + else + { + "$library" + } +} + +function Generate() +{ + param ( + [string]$Name, + [string]$Hash, + [bool]$NeedsBuild, + $Depends = @() + ) + + $controlDeps = ($Depends | sort) -join ", " + + $sanitizedName = $name -replace "_","-" + + $versionsuffix = "" + if ($Name -eq "python" -or $Name -eq "asio" -or $Name -eq "mpi") + { + $versionsuffix = "-1" + } + + if ($Name -eq "test") + { + $versionsuffix = "-2" + } + + mkdir "$portsDir/boost-$sanitizedName" -erroraction SilentlyContinue | out-null + $controlLines = @( + "# Automatically generated by boost-vcpkg-helpers/generate-ports.ps1" + "Source: boost-$sanitizedName" + "Version: $version$versionsuffix" + "Build-Depends: $controlDeps" + "Homepage: https://github.com/boostorg/$name" + "Description: Boost $Name module" + ) + if ($Name -eq "locale") + { + $controlLines += @( + "" + "Feature: icu" + "Description: ICU backend for Boost.Locale" + "Build-Depends: icu" + ) + } + if ($Name -eq "regex") + { + $controlLines += @( + "" + "Feature: icu" + "Description: ICU backend for Boost.Regex" + "Build-Depends: icu" + ) + } + $controlLines | out-file -enc ascii "$portsDir/boost-$sanitizedName/CONTROL" + + $portfileLines = @( + "# Automatically generated by boost-vcpkg-helpers/generate-ports.ps1" + "" + "include(vcpkg_common_functions)" + "" + "vcpkg_from_github(" + " OUT_SOURCE_PATH SOURCE_PATH" + " REPO boostorg/$Name" + " REF boost-$version" + " SHA512 $Hash" + " HEAD_REF master" + ) + if ($Name -eq "asio") + { + $portfileLines += @(" PATCHES windows_alloca_header.patch") + } + if ($Name -eq "iostreams") + { + $portfileLines += @(" PATCHES Removeseekpos.patch") + } + $portfileLines += @( + ")" + "" + ) + + if (Test-Path "$scriptsDir/post-source-stubs/$Name.cmake") + { + $portfileLines += @(get-content "$scriptsDir/post-source-stubs/$Name.cmake") + } + + if ($NeedsBuild) + { + if ($Name -eq "locale") + { + $portfileLines += @( + "if(`"icu`" IN_LIST FEATURES)" + " set(BOOST_LOCALE_ICU on)" + "else()" + " set(BOOST_LOCALE_ICU off)" + "endif()" + "" + "include(`${CURRENT_INSTALLED_DIR}/share/boost-build/boost-modular-build.cmake)" + "boost_modular_build(" + " SOURCE_PATH `${SOURCE_PATH}" + " BOOST_CMAKE_FRAGMENT `"`${CMAKE_CURRENT_LIST_DIR}/cmake-fragment.cmake`"" + " OPTIONS" + " boost.locale.iconv=off" + " boost.locale.posix=off" + " /boost/locale//boost_locale" + " boost.locale.icu=`${BOOST_LOCALE_ICU}" + ")" + ) + } + elseif ($Name -eq "regex") + { + $portfileLines += @( + "if(`"icu`" IN_LIST FEATURES)" + " set(REQUIREMENTS `"/user-config//icuuc /user-config//icudt /user-config//icuin BOOST_HAS_ICU=1`")" + "else()" + " set(REQUIREMENTS)" + "endif()" + "" + "include(`${CURRENT_INSTALLED_DIR}/share/boost-build/boost-modular-build.cmake)" + "boost_modular_build(SOURCE_PATH `${SOURCE_PATH} REQUIREMENTS `"`${REQUIREMENTS}`")" + ) + } + elseif ($Name -eq "thread") + { + $portfileLines += @( + "include(`${CURRENT_INSTALLED_DIR}/share/boost-build/boost-modular-build.cmake)" + "boost_modular_build(" + " SOURCE_PATH `${SOURCE_PATH}" + " REQUIREMENTS `"/boost/date_time//boost_date_time`"" + " OPTIONS /boost/thread//boost_thread" + " BOOST_CMAKE_FRAGMENT `${CMAKE_CURRENT_LIST_DIR}/b2-options.cmake" + ")" + ) + } + elseif ($Name -eq "iostreams") + { + } + else + { + $portfileLines += @( + "include(`${CURRENT_INSTALLED_DIR}/share/boost-build/boost-modular-build.cmake)" + "boost_modular_build(SOURCE_PATH `${SOURCE_PATH})" + ) + } + } + if ($Name -ne "iostreams") + { + $portfileLines += @( + "include(`${CURRENT_INSTALLED_DIR}/share/boost-vcpkg-helpers/boost-modular-headers.cmake)" + "boost_modular_headers(SOURCE_PATH `${SOURCE_PATH})" + ) + } + + if (Test-Path "$scriptsDir/post-build-stubs/$Name.cmake") + { + $portfileLines += @(get-content "$scriptsDir/post-build-stubs/$Name.cmake") + } + + $portfileLines | out-file -enc ascii "$portsDir/boost-$sanitizedName/portfile.cmake" +} + +if (!(Test-Path "$scriptsDir/boost")) +{ + "Cloning boost..." + pushd $scriptsDir + try + { + git clone https://github.com/boostorg/boost --branch boost-$version + } + finally + { + popd + } +} +else +{ + pushd $scriptsDir/boost + try + { + git fetch + git checkout -f boost-$version + } + finally + { + popd + } +} + +$libraries_found = ls $scriptsDir/boost/libs -directory | % name | % { + if ($_ -match "numeric") + { + "numeric_conversion" + "interval" + "odeint" + "ublas" + "safe_numerics" + } + elseif ($_ -eq "headers") + { + } + else + { + $_ + } +} + +mkdir $scriptsDir/downloads -erroraction SilentlyContinue | out-null + +if ($libraries.Length -eq 0) +{ + $libraries = $libraries_found +} + +$libraries_in_boost_port = @() + +foreach ($library in $libraries) +{ + "Handling boost/$library..." + $archive = "$scriptsDir/downloads/$library-boost-$version.tar.gz" + if (!(Test-Path $archive)) + { + "Downloading boost/$library..." + & @(vcpkg fetch aria2)[-1] "https://github.com/boostorg/$library/archive/boost-$version.tar.gz" -d "$scriptsDir/downloads" -o "$library-boost-$version.tar.gz" + } + $hash = vcpkg hash $archive + $unpacked = "$scriptsDir/libs/$library-boost-$version" + if (!(Test-Path $unpacked)) + { + "Unpacking boost/$library..." + mkdir $scriptsDir/libs -erroraction SilentlyContinue | out-null + pushd $scriptsDir/libs + try + { + cmake -E tar xf $archive + } + finally + { + popd + } + } + pushd $unpacked + try + { + $groups = $( + findstr /si /C:"include ).*", "`$1" ` + -replace "/|\.hp?p?| ","" } | group | % name | % { + # mappings + Write-Verbose "${library}: $_" + if ($_ -match "aligned_storage") { "type_traits" } + elseif ($_ -match "noncopyable|ref|swap|get_pointer|checked_delete|visit_each") { "core" } + elseif ($_ -eq "type") { "core" } + elseif ($_ -match "unordered_") { "unordered" } + elseif ($_ -match "cstdint") { "integer" } + elseif ($_ -match "call_traits|operators|current_function|cstdlib|next_prior|compressed_pair") { "utility" } + elseif ($_ -match "^version|^workaround") { "config" } + elseif ($_ -match "enable_shared_from_this|shared_ptr|make_shared|make_unique|intrusive_ptr|scoped_ptr|pointer_to_other|weak_ptr|shared_array|scoped_array") { "smart_ptr" } + elseif ($_ -match "iterator_adaptors|generator_iterator|pointee") { "iterator" } + elseif ($_ -eq "regex_fwd") { "regex" } + elseif ($_ -eq "make_default") { "convert" } + elseif ($_ -eq "foreach_fwd") { "foreach" } + elseif ($_ -eq "cerrno") { "system" } + elseif ($_ -eq "archive") { "serialization" } + elseif ($_ -eq "none") { "optional" } + elseif ($_ -eq "integer_traits") { "integer" } + elseif ($_ -eq "limits") { "compatibility" } + elseif ($_ -eq "math_fwd") { "math" } + elseif ($_ -match "polymorphic_cast|implicit_cast") { "conversion" } + elseif ($_ -eq "nondet_random") { "random" } + elseif ($_ -eq "memory_order") { "atomic" } + elseif ($_ -eq "blank") { "detail" } + elseif ($_ -match "is_placeholder|mem_fn") { "bind" } + elseif ($_ -eq "exception_ptr") { "exception" } + elseif ($_ -eq "multi_index_container") { "multi_index" } + elseif ($_ -eq "lexical_cast") { "lexical_cast"; "math" } + elseif ($_ -match "token_iterator|token_functions") { "tokenizer" } + elseif ($_ -eq "numeric" -and $library -notmatch "numeric_conversion|interval|odeint|ublas") { "numeric_conversion"; "interval"; "odeint"; "ublas" } + else { $_ } + } | group | % name | ? { $_ -ne $library } + + #"`nFor ${library}:" + " [known] " + $($groups | ? { $libraries_found -contains $_ }) + " [unknown] " + $($groups | ? { $libraries_found -notcontains $_ }) + + $deps = @($groups | ? { $libraries_found -contains $_ }) + + $deps = @($deps | ? { + # Boost contains cycles, so remove a few dependencies to break the loop. + (($library -notmatch "core|assert|mpl|detail|throw_exception|type_traits|^exception") -or ($_ -notmatch "utility")) ` + -and ` + (($library -notmatch "range") -or ($_ -notmatch "algorithm"))` + -and ` + (($library -ne "config") -or ($_ -notmatch "integer"))` + -and ` + (($library -notmatch "multiprecision") -or ($_ -notmatch "random|math"))` + -and ` + (($library -notmatch "lexical_cast") -or ($_ -notmatch "math"))` + -and ` + (($library -notmatch "functional") -or ($_ -notmatch "function"))` + -and ` + (($library -notmatch "detail") -or ($_ -notmatch "static_assert|integer|mpl|type_traits"))` + -and ` + ($_ -notmatch "mpi")` + -and ` + (($library -notmatch "spirit") -or ($_ -notmatch "serialization"))` + -and ` + (($library -notmatch "throw_exception") -or ($_ -notmatch "^exception"))` + -and ` + (($library -notmatch "iostreams") -or ($_ -notmatch "random"))` + -and ` + (($library -notmatch "utility|concept_check") -or ($_ -notmatch "iterator")) + } | % { "boost-$_" -replace "_","-" } | % { + TransformReference $_ + }) + + $deps += @("boost-vcpkg-helpers") + + $needsBuild = $false + if ((Test-Path $unpacked/build/Jamfile.v2) -and $library -ne "metaparse" -and $library -ne "graph_parallel") + { + $deps += @("boost-build", "boost-modular-build-helper") + $needsBuild = $true + } + + if ($library -eq "python") + { + $deps += @("python3") + $needsBuild = $true + } + elseif ($library -eq "iostreams") + { + $deps += @("zlib", "bzip2", "liblzma", "zstd") + } + elseif ($library -eq "locale") + { + $deps += @("libiconv (!uwp&!windows)", "boost-system") + } + elseif ($library -eq "asio") + { + $deps += @("openssl") + } + elseif ($library -eq "mpi") + { + $deps += @("mpi") + } + + Generate ` + -Name $library ` + -Hash $hash ` + -Depends $deps ` + -NeedsBuild $needsBuild + + $libraries_in_boost_port += @(TransformReference $library) + } + finally + { + popd + } +} + +if ($libraries_in_boost_port.length -gt 1) { + # Generate master boost control file which depends on each individual library + # mpi is excluded due to it having a dependency on msmpi + $boostDependsList = @($libraries_in_boost_port | % { "boost-$_" -replace "_","-" } | ? { $_ -notmatch "boost-mpi" }) -join ", " + + @( + "# Automatically generated by boost-vcpkg-helpers/generate-ports.ps1" + "Source: boost" + "Version: $version" + "Homepage: https://boost.org" + "Description: Peer-reviewed portable C++ source libraries" + "Build-Depends: $boostDependsList" + "" + "Feature: mpi" + "Description: Build with MPI support" + "Build-Depends: boost-mpi" + ) | out-file -enc ascii $portsDir/boost/CONTROL + + "set(VCPKG_POLICY_EMPTY_PACKAGE enabled)`n" | out-file -enc ascii $portsDir/boost/portfile.cmake +} + +return diff --git a/scripts/boost/post-build-stubs/config.cmake b/scripts/boost/post-build-stubs/config.cmake new file mode 100644 index 000000000..b09ea209b --- /dev/null +++ b/scripts/boost/post-build-stubs/config.cmake @@ -0,0 +1,7 @@ +file(APPEND ${CURRENT_PACKAGES_DIR}/include/boost/config/user.hpp "\n#ifndef BOOST_ALL_NO_LIB\n#define BOOST_ALL_NO_LIB\n#endif\n") +file(APPEND ${CURRENT_PACKAGES_DIR}/include/boost/config/user.hpp "\n#undef BOOST_ALL_DYN_LINK\n") + +if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) + file(APPEND ${CURRENT_PACKAGES_DIR}/include/boost/config/user.hpp "\n#define BOOST_ALL_DYN_LINK\n") +endif() +file(COPY ${SOURCE_PATH}/checks DESTINATION ${CURRENT_PACKAGES_DIR}/share/boost-config) diff --git a/scripts/boost/post-build-stubs/context.cmake b/scripts/boost/post-build-stubs/context.cmake new file mode 100644 index 000000000..a88f8441d --- /dev/null +++ b/scripts/boost/post-build-stubs/context.cmake @@ -0,0 +1,6 @@ + +# boost-context removed all.hpp, which is used by FindBoost to determine that context is installed +if(NOT EXISTS ${CURRENT_PACKAGES_DIR}/include/boost/context/all.hpp) + file(WRITE ${CURRENT_PACKAGES_DIR}/include/boost/context/all.hpp + "#error \"#include is no longer supported by boost_context.\"") +endif() diff --git a/scripts/boost/post-build-stubs/exception.cmake b/scripts/boost/post-build-stubs/exception.cmake new file mode 100644 index 000000000..43594a044 --- /dev/null +++ b/scripts/boost/post-build-stubs/exception.cmake @@ -0,0 +1,3 @@ + +set(VCPKG_LIBRARY_LINKAGE static) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin) diff --git a/scripts/boost/post-build-stubs/predef.cmake b/scripts/boost/post-build-stubs/predef.cmake new file mode 100644 index 000000000..b960fcd6e --- /dev/null +++ b/scripts/boost/post-build-stubs/predef.cmake @@ -0,0 +1,2 @@ + +file(COPY ${SOURCE_PATH}/tools/check DESTINATION ${CURRENT_PACKAGES_DIR}/share/boost-predef) diff --git a/scripts/boost/post-build-stubs/test.cmake b/scripts/boost/post-build-stubs/test.cmake new file mode 100644 index 000000000..c6d07dbc4 --- /dev/null +++ b/scripts/boost/post-build-stubs/test.cmake @@ -0,0 +1,14 @@ +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/lib/manual-link) + file(GLOB MONITOR_LIBS ${CURRENT_PACKAGES_DIR}/lib/*_exec_monitor*) + file(COPY ${MONITOR_LIBS} DESTINATION ${CURRENT_PACKAGES_DIR}/lib/manual-link) + file(REMOVE ${MONITOR_LIBS}) +endif() + +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link) + file(GLOB DEBUG_MONITOR_LIBS ${CURRENT_PACKAGES_DIR}/debug/lib/*_exec_monitor*) + file(COPY ${DEBUG_MONITOR_LIBS} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link) + file(REMOVE ${DEBUG_MONITOR_LIBS}) +endif() + diff --git a/scripts/boost/post-source-stubs/context.cmake b/scripts/boost/post-source-stubs/context.cmake new file mode 100644 index 000000000..9ccf34233 --- /dev/null +++ b/scripts/boost/post-source-stubs/context.cmake @@ -0,0 +1,5 @@ +file(READ "${SOURCE_PATH}/build/Jamfile.v2" _contents) +string(REPLACE "import ../../config/checks/config" "import config/checks/config" _contents "${_contents}") +file(WRITE "${SOURCE_PATH}/build/Jamfile.v2" "${_contents}") +file(COPY "${CURRENT_INSTALLED_DIR}/share/boost-config/checks" DESTINATION "${SOURCE_PATH}/build/config") + diff --git a/scripts/boost/post-source-stubs/fiber.cmake b/scripts/boost/post-source-stubs/fiber.cmake new file mode 100644 index 000000000..9ccf34233 --- /dev/null +++ b/scripts/boost/post-source-stubs/fiber.cmake @@ -0,0 +1,5 @@ +file(READ "${SOURCE_PATH}/build/Jamfile.v2" _contents) +string(REPLACE "import ../../config/checks/config" "import config/checks/config" _contents "${_contents}") +file(WRITE "${SOURCE_PATH}/build/Jamfile.v2" "${_contents}") +file(COPY "${CURRENT_INSTALLED_DIR}/share/boost-config/checks" DESTINATION "${SOURCE_PATH}/build/config") + diff --git a/scripts/boost/post-source-stubs/iostreams.cmake b/scripts/boost/post-source-stubs/iostreams.cmake new file mode 100644 index 000000000..55841bb3f --- /dev/null +++ b/scripts/boost/post-source-stubs/iostreams.cmake @@ -0,0 +1,18 @@ +vcpkg_download_distfile(LICENSE + URLS "https://raw.githubusercontent.com/boostorg/boost/boost-1.70.0/LICENSE_1_0.txt" + FILENAME "boost_LICENSE_1_0.txt" + SHA512 d6078467835dba8932314c1c1e945569a64b065474d7aced27c9a7acc391d52e9f234138ed9f1aa9cd576f25f12f557e0b733c14891d42c16ecdc4a7bd4d60b8 +) + +file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA +) + +vcpkg_install_cmake() +vcpkg_copy_pdbs() + +file(COPY ${SOURCE_PATH}/include DESTINATION ${CURRENT_PACKAGES_DIR}) +file(INSTALL ${LICENSE} DESTINATION ${CURRENT_PACKAGES_DIR}/share/boost-iostreams RENAME copyright) diff --git a/scripts/boost/post-source-stubs/log.cmake b/scripts/boost/post-source-stubs/log.cmake new file mode 100644 index 000000000..78500ddc3 --- /dev/null +++ b/scripts/boost/post-source-stubs/log.cmake @@ -0,0 +1,13 @@ +file(READ "${SOURCE_PATH}/build/Jamfile.v2" _contents) +string(REPLACE "import ../../config/checks/config" "import config/checks/config" _contents "${_contents}") +string(REPLACE " @select-arch-specific-sources" "#@select-arch-specific-sources" _contents "${_contents}") +file(WRITE "${SOURCE_PATH}/build/Jamfile.v2" "${_contents}") +file(COPY "${CURRENT_INSTALLED_DIR}/share/boost-config/checks" DESTINATION "${SOURCE_PATH}/build/config") + +file(READ ${SOURCE_PATH}/build/log-architecture.jam _contents) +string(REPLACE + "\nproject.load [ path.join [ path.make $(here:D) ] ../../config/checks/architecture ] ;" + "\nproject.load [ path.join [ path.make $(here:D) ] config/checks/architecture ] ;" + _contents "${_contents}") +file(WRITE ${SOURCE_PATH}/build/log-architecture.jam "${_contents}") + diff --git a/scripts/boost/post-source-stubs/python.cmake b/scripts/boost/post-source-stubs/python.cmake new file mode 100644 index 000000000..40b8e0a0b --- /dev/null +++ b/scripts/boost/post-source-stubs/python.cmake @@ -0,0 +1,5 @@ +# Find Python. Can't use find_package here, but we already know where everything is +file(GLOB PYTHON_INCLUDE_PATH "${CURRENT_INSTALLED_DIR}/include/python[0-9.]*") +set(PYTHONLIBS_RELEASE "${CURRENT_INSTALLED_DIR}/lib") +set(PYTHONLIBS_DEBUG "${CURRENT_INSTALLED_DIR}/debug/lib") +string(REGEX REPLACE ".*python([0-9\.]+)$" "\\1" PYTHON_VERSION "${PYTHON_INCLUDE_PATH}") diff --git a/scripts/boost/post-source-stubs/test.cmake b/scripts/boost/post-source-stubs/test.cmake new file mode 100644 index 000000000..b2872338d --- /dev/null +++ b/scripts/boost/post-source-stubs/test.cmake @@ -0,0 +1,5 @@ +file(READ "${SOURCE_PATH}/build/Jamfile.v2" _contents) +string(REPLACE "import ../../predef/check/predef" "import predef/check/predef" _contents "${_contents}") +file(WRITE "${SOURCE_PATH}/build/Jamfile.v2" "${_contents}") +file(COPY "${CURRENT_INSTALLED_DIR}/share/boost-predef/check" DESTINATION "${SOURCE_PATH}/build/predef") + -- cgit v1.2.3 From 5ebf65665dfbf29abeb49410070c2102490fd476 Mon Sep 17 00:00:00 2001 From: Vinny Date: Tue, 1 Oct 2019 11:21:04 -0400 Subject: [Documentation] Added documentation page for vcpkg_fixup_cmake_targets.cmake (#8365) * Added documentation page for vcpkg_fixup_cmake_targets.cmake, added example usage comment to .cmake file * Update cmake_fixup_cmake_targets.md * Update cmake_fixup_cmake_targets.md --- scripts/cmake/vcpkg_fixup_cmake_targets.cmake | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake index 1e0f2493d..3b5370bcd 100644 --- a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake +++ b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake @@ -1,21 +1,23 @@ #.rst: # .. command:: vcpkg_fixup_cmake_targets # -# Transform all /debug/share//*targets-debug.cmake files and move them to /share/. +# Transforms all /debug/share//*targets-debug.cmake files and move them to /share/. # Removes all /debug/share//*targets.cmake and /debug/share//*config.cmake # -# Transform all references matching /bin/*.exe to /tools//*.exe on Windows -# Transform all references matching /bin/* to /tools//* on other platforms +# Transforms all references matching /bin/*.exe to /tools//*.exe on Windows +# Transforms all references matching /bin/* to /tools//* on other platforms # -# Fix ${_IMPORT_PREFIX} in auto generated targets to be one folder deeper. -# Replace ${CURRENT_INSTALLED_DIR} with ${_IMPORT_PREFIX} in configs/targets. +# Fixes ${_IMPORT_PREFIX} in auto generated targets to be one folder deeper. +# Replaces ${CURRENT_INSTALLED_DIR} with ${_IMPORT_PREFIX} in configs/targets. # # :: # vcpkg_fixup_cmake_targets([CONFIG_PATH ]) # # ``CONFIG_PATH`` # *.cmake files subdirectory (like "lib/cmake/${PORT}"). -# +# +# Example usage: +# vcpkg_fixup_cmake_targets(CONFIG_PATH "lib/cmake/myPort") function(vcpkg_fixup_cmake_targets) cmake_parse_arguments(_vfct "" "CONFIG_PATH;TARGET_PATH" "" ${ARGN}) -- cgit v1.2.3 From da233c38ec1ab90cbe9e440b82b055db02f83a62 Mon Sep 17 00:00:00 2001 From: Alexej Harm Date: Fri, 4 Oct 2019 20:14:35 +0200 Subject: Add go to vcpkg_find_acquire_program (#8440) --- scripts/cmake/vcpkg_find_acquire_program.cmake | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index aa8a70026..b5af58cc2 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -20,6 +20,7 @@ ## - PERL ## - PYTHON2 ## - PYTHON3 +## - GO ## - JOM ## - MESON ## - NASM @@ -79,6 +80,14 @@ function(vcpkg_find_acquire_program VAR) set(_vfa_RENAME "yasm.exe") set(NOEXTRACT ON) set(HASH c1945669d983b632a10c5ff31e86d6ecbff143c3d8b2c433c0d3d18f84356d2b351f71ac05fd44e5403651b00c31db0d14615d7f9a6ecce5750438d37105c55b) + elseif(VAR MATCHES "GO") + set(PROGNAME go) + set(PATHS ${DOWNLOADS}/tools/go/go/bin) + set(BREW_PACKAGE_NAME "go") + set(APT_PACKAGE_NAME "golang-go") + set(URL "https://dl.google.com/go/go1.13.1.windows-386.zip") + set(ARCHIVE "go1.13.1.windows-386.zip") + set(HASH 2ab0f07e876ad98d592351a8808c2de42351ab387217e088bc4c5fa51d6a835694c501e2350802323b55a27dc0157f8b70045597f789f9e50f5ceae50dea3027) elseif(VAR MATCHES "PYTHON3") if(CMAKE_HOST_WIN32) set(PROGNAME python) -- cgit v1.2.3 From ad493fd8600c13f75dabcad60e6bd8d644f83c6b Mon Sep 17 00:00:00 2001 From: JackBoosY <47264268+JackBoosY@users.noreply.github.com> Date: Sat, 5 Oct 2019 22:51:07 +0800 Subject: Add function vcpkg_configure_make/vcpkg_build_make/vcpkg_install_make/vcpkg_build_nmake/vcpkg_install_nmake (#8267) * Add function vcpkg_configure_make/vcpkg_build_make. * Fix autoreconf command and add log. * Add vcpkg_install_make. * Fix call function name. * support non-debug mode. * Add nmake support. * [tcl]Add new port for testing. * [vcpkg_configure_make]Fix prefix in linux. * restart CI systen. * Separate vcpkg_build_nmake/vcpkg_install_nmake. Add arg PROJECT_NAME. * fix copy source file. add samples. * Remove uncommon options. Add force install para to autoreconf. * fix build error. * fix options judgment. * enable nmake in windows. * fix some envs and macros. Disable NMAKE in vcpkg_configure_make currently. * update docs. * fix environments. * Modify libosip2 to use vcpkg_configure_make/vcpkg_install_make. * [tcl]Tcl separates PR. * trigger PR-EAGER. * [freexl]Fix options name and remove option NMAKE. * use tool-chain instead of set environments manually. * fix autoreconf para. * use vcpkg_execute_build_process instead. --- scripts/cmake/vcpkg_build_make.cmake | 171 ++++++++++++++ scripts/cmake/vcpkg_build_nmake.cmake | 185 +++++++++++++++ scripts/cmake/vcpkg_common_functions.cmake | 5 + scripts/cmake/vcpkg_configure_make.cmake | 347 +++++++++++++++++++++++++++++ scripts/cmake/vcpkg_install_make.cmake | 25 +++ scripts/cmake/vcpkg_install_nmake.cmake | 69 ++++++ 6 files changed, 802 insertions(+) create mode 100644 scripts/cmake/vcpkg_build_make.cmake create mode 100644 scripts/cmake/vcpkg_build_nmake.cmake create mode 100644 scripts/cmake/vcpkg_configure_make.cmake create mode 100644 scripts/cmake/vcpkg_install_make.cmake create mode 100644 scripts/cmake/vcpkg_install_nmake.cmake (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake new file mode 100644 index 000000000..f73fb98d5 --- /dev/null +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -0,0 +1,171 @@ +## # vcpkg_build_make +## +## Build a linux makefile project. +## +## ## Usage: +## ```cmake +## vcpkg_build_make([TARGET ]) +## ``` +## +## ### TARGET +## The target passed to the configure/make build command (`./configure/make/make install`). If not specified, no target will +## be passed. +## +## ### ADD_BIN_TO_PATH +## Adds the appropriate Release and Debug `bin\` directories to the path during the build such that executables can run against the in-tree DLLs. +## +## ## Notes: +## This command should be preceeded by a call to [`vcpkg_configure_make()`](vcpkg_configure_make.md). +## You can use the alias [`vcpkg_install_make()`](vcpkg_configure_make.md) function if your CMake script supports the +## "install" target +## +## ## Examples +## +## * [x264](https://github.com/Microsoft/vcpkg/blob/master/ports/x264/portfile.cmake) +## * [tcl](https://github.com/Microsoft/vcpkg/blob/master/ports/tcl/portfile.cmake) +## * [freexl](https://github.com/Microsoft/vcpkg/blob/master/ports/freexl/portfile.cmake) +## * [libosip2](https://github.com/Microsoft/vcpkg/blob/master/ports/libosip2/portfile.cmake) +function(vcpkg_build_make) + cmake_parse_arguments(_bc "ADD_BIN_TO_PATH;ENABLE_INSTALL" "LOGFILE_ROOT" "" ${ARGN}) + + if(NOT _bc_LOGFILE_ROOT) + set(_bc_LOGFILE_ROOT "build") + endif() + + if (_VCPKG_PROJECT_SUBPATH) + set(_VCPKG_PROJECT_SUBPATH /${_VCPKG_PROJECT_SUBPATH}/) + endif() + + set(MAKE ) + set(MAKE_OPTS ) + set(INSTALL_OPTS ) + if (_VCPKG_MAKE_GENERATOR STREQUAL "make") + if (CMAKE_HOST_WIN32) + # Compiler requriements + vcpkg_find_acquire_program(YASM) + vcpkg_find_acquire_program(PERL) + vcpkg_acquire_msys(MSYS_ROOT PACKAGES make) + get_filename_component(YASM_EXE_PATH ${YASM} DIRECTORY) + get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY) + + set(PATH_GLOBAL "$ENV{PATH}") + set(ENV{PATH} "$ENV{PATH};${YASM_EXE_PATH};${MSYS_ROOT}/usr/bin;${PERL_EXE_PATH}") + set(BASH ${MSYS_ROOT}/usr/bin/bash.exe) + # Set make command and install command + set(MAKE ${BASH} --noprofile --norc -c) + # Must use absolute path to call make in windows + set(MAKE_OPTS "${_VCPKG_PROJECT_SUBPATH}make") + set(INSTALL_OPTS "${_VCPKG_PROJECT_SUBPATH}make install") + else() + # Compiler requriements + find_program(MAKE make REQUIRED) + set(MAKE make) + # Set make command and install command + set(MAKE_OPTS) + set(INSTALL_OPTS install) + endif() + elseif (_VCPKG_MAKE_GENERATOR STREQUAL "nmake") + find_program(NMAKE nmake REQUIRED) + get_filename_component(NMAKE_EXE_PATH ${NMAKE} DIRECTORY) + set(PATH_GLOBAL "$ENV{PATH}") + set(ENV{PATH} "$ENV{PATH};${NMAKE_EXE_PATH}") + set(ENV{CL} "$ENV{CL} /MP") + # Set make command and install command + set(MAKE ${NMAKE} /NOLOGO /G /U) + set(MAKE_OPTS -f makefile all) + set(INSTALL_OPTS install) + else() + message(FATAL_ERROR "${_VCPKG_MAKE_GENERATOR} not supported.") + endif() + + set(ENV{INCLUDE} "${CURRENT_INSTALLED_DIR}/include;$ENV{INCLUDE}") + + foreach(BUILDTYPE "debug" "release") + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL BUILDTYPE) + if(BUILDTYPE STREQUAL "debug") + # Skip debug generate + if (_VCPKG_NO_DEBUG) + continue() + endif() + set(SHORT_BUILDTYPE "-dbg") + else() + # In NO_DEBUG mode, we only use ${TARGET_TRIPLET} directory. + if (_VCPKG_NO_DEBUG) + set(SHORT_BUILDTYPE "") + else() + set(SHORT_BUILDTYPE "-rel") + endif() + endif() + + if (CMAKE_HOST_WIN32) + # In windows we can remotely call make + set(WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}${SHORT_BUILDTYPE}) + else() + set(WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}${SHORT_BUILDTYPE}${_VCPKG_PROJECT_SUBPATH}) + endif() + + message(STATUS "Building ${TARGET_TRIPLET}${SHORT_BUILDTYPE}") + + if(_bc_ADD_BIN_TO_PATH) + set(_BACKUP_ENV_PATH "$ENV{PATH}") + if(CMAKE_HOST_WIN32) + set(_PATHSEP ";") + else() + set(_PATHSEP ":") + endif() + if(BUILDTYPE STREQUAL "debug") + set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/bin${_PATHSEP}$ENV{PATH}") + else() + set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin${_PATHSEP}$ENV{PATH}") + endif() + endif() + + vcpkg_execute_build_process( + COMMAND ${MAKE} -j ${VCPKG_CONCURRENCY} ${MAKE_OPTS} + WORKING_DIRECTORY ${WORKING_DIRECTORY} + LOGNAME "${_bc_LOGFILE_ROOT}-${TARGET_TRIPLET}${SHORT_BUILDTYPE}" + ) + + if(_bc_ADD_BIN_TO_PATH) + set(ENV{PATH} "${_BACKUP_ENV_PATH}") + endif() + endif() + endforeach() + + if (_bc_ENABLE_INSTALL) + foreach(BUILDTYPE "debug" "release") + if(BUILDTYPE STREQUAL "debug") + # Skip debug generate + if (_VCPKG_NO_DEBUG) + continue() + endif() + set(SHORT_BUILDTYPE "-dbg") + else() + # In NO_DEBUG mode, we only use ${TARGET_TRIPLET} directory. + if (_VCPKG_NO_DEBUG) + set(SHORT_BUILDTYPE "") + else() + set(SHORT_BUILDTYPE "-rel") + endif() + endif() + + if (CMAKE_HOST_WIN32) + # In windows we can remotely call make + set(WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}${SHORT_BUILDTYPE}) + else() + set(WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}${SHORT_BUILDTYPE}${_VCPKG_PROJECT_SUBPATH}) + endif() + + message(STATUS "Installing ${TARGET_TRIPLET}${SHORT_BUILDTYPE}") + vcpkg_execute_required_process( + COMMAND ${MAKE} ${INSTALL_OPTS} + WORKING_DIRECTORY ${WORKING_DIRECTORY} + LOGNAME "install-${TARGET_TRIPLET}${SHORT_BUILDTYPE}" + ) + endforeach() + endif() + + if (CMAKE_HOST_WIN32) + set(ENV{PATH} "${PATH_GLOBAL}") + endif() +endfunction() diff --git a/scripts/cmake/vcpkg_build_nmake.cmake b/scripts/cmake/vcpkg_build_nmake.cmake new file mode 100644 index 000000000..c98df946a --- /dev/null +++ b/scripts/cmake/vcpkg_build_nmake.cmake @@ -0,0 +1,185 @@ +## # vcpkg_build_nmake +## +## Build a msvc makefile project. +## +## ## Usage: +## ```cmake +## vcpkg_build_nmake( +## SOURCE_PATH <${SOURCE_PATH}> +## [NO_DEBUG] +## PROJECT_SUBPATH <${SUBPATH}> +## PROJECT_NAME <${MAKEFILE_NAME}> +## [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] +## [OPTIONS_RELEASE <-DOPTIMIZE=1>...] +## [OPTIONS_DEBUG <-DDEBUGGABLE=1>...] +## [TARGET ]) +## ``` +## +## ## Parameters +## ### SOURCE_PATH +## Specifies the directory containing the source files. +## By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. +## +## ### PROJECT_SUBPATH +## Specifies the sub directory containing the `makefile.vc`/`makefile.mak`/`makefile.msvc` or other msvc makefile. +## +## ### PROJECT_NAME +## Specifies the name of msvc makefile name. +## Default is `makefile.vc` +## +## ### NO_DEBUG +## This port doesn't support debug mode. +## +## ### ENABLE_INSTALL +## Install binaries after build. +## +## ### OPTIONS +## Additional options passed to generate during the generation. +## +## ### OPTIONS_RELEASE +## Additional options passed to generate during the Release generation. These are in addition to `OPTIONS`. +## +## ### OPTIONS_DEBUG +## Additional options passed to generate during the Debug generation. These are in addition to `OPTIONS`. +## +## ### TARGET +## The target passed to the nmake build command (`nmake/nmake install`). If not specified, no target will +## be passed. +## +## ### ADD_BIN_TO_PATH +## Adds the appropriate Release and Debug `bin\` directories to the path during the build such that executables can run against the in-tree DLLs. +## +## ## Notes: +## This command should be preceeded by a call to [`vcpkg_configure_nmake()`](vcpkg_configure_nmake.md). +## You can use the alias [`vcpkg_install_nmake()`](vcpkg_configure_nmake.md) function if your CMake script supports the +## "install" target +## +## ## Examples +## +## * [tcl](https://github.com/Microsoft/vcpkg/blob/master/ports/tcl/portfile.cmake) +## * [freexl](https://github.com/Microsoft/vcpkg/blob/master/ports/freexl/portfile.cmake) +function(vcpkg_build_nmake) + cmake_parse_arguments(_bn + "ADD_BIN_TO_PATH;ENABLE_INSTALL;NO_DEBUG" + "SOURCE_PATH;PROJECT_SUBPATH;PROJECT_NAME;LOGFILE_ROOT" + "OPTIONS;OPTIONS_RELEASE;OPTIONS_DEBUG" + ${ARGN} + ) + + if (NOT CMAKE_HOST_WIN32) + message(FATAL_ERROR "vcpkg_build_nmake only support windows.") + endif() + + if (_bn_OPTIONS_DEBUG STREQUAL _bn_OPTIONS_RELEASE) + message(FATAL_ERROR "Detected debug configuration is equal to release configuration, please use NO_DEBUG for vcpkg_build_nmake/vcpkg_install_nmake") + endif() + + if(NOT _bn_LOGFILE_ROOT) + set(_bn_LOGFILE_ROOT "build") + endif() + + if (NOT _bn_PROJECT_NAME) + set(MAKEFILE_NAME makefile.vc) + else() + set(MAKEFILE_NAME ${_bn_PROJECT_NAME}) + endif() + + set(MAKE ) + set(MAKE_OPTS_BASE ) + set(INSTALL_OPTS_BASE ) + + find_program(NMAKE nmake REQUIRED) + get_filename_component(NMAKE_EXE_PATH ${NMAKE} DIRECTORY) + # Load toolchains + if(NOT VCPKG_CHAINLOAD_TOOLCHAIN_FILE) + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/windows.cmake") + endif() + include("${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}") + # Set needed env + set(ENV{PATH} "$ENV{PATH};${NMAKE_EXE_PATH}") + set(ENV{INCLUDE} "${CURRENT_INSTALLED_DIR}/include;$ENV{INCLUDE}") + # Set make command and install command + set(MAKE ${NMAKE} /NOLOGO /G /U) + set(MAKE_OPTS_BASE -f ${MAKEFILE_NAME} all) + set(INSTALL_OPTS_BASE install) + # Add subpath to work directory + if (_bn_PROJECT_SUBPATH) + set(_bn_PROJECT_SUBPATH /${_bn_PROJECT_SUBPATH}) + else() + set(_bn_PROJECT_SUBPATH ) + endif() + + foreach(BUILDTYPE "debug" "release") + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL BUILDTYPE) + if(BUILDTYPE STREQUAL "debug") + # Skip debug generate + if (_bn_NO_DEBUG) + continue() + endif() + # Generate obj dir suffix + set(SHORT_BUILDTYPE "-dbg") + set(CONFIG "Debug") + # Add install command and arguments + set(MAKE_OPTS ${MAKE_OPTS_BASE}) + if (_bn_ENABLE_INSTALL) + set(INSTALL_OPTS ${INSTALL_OPTS_BASE} INSTALLDIR=${CURRENT_PACKAGES_DIR}/debug) + set(MAKE_OPTS ${MAKE_OPTS} ${INSTALL_OPTS}) + endif() + set(MAKE_OPTS ${MAKE_OPTS} ${_bn_OPTIONS} ${_bn_OPTIONS_DEBUG}) + + unset(ENV{CL}) + set(TMP_CL_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}") + string(REPLACE "/" "-" TMP_CL_FLAGS "${TMP_CL_FLAGS}") + set(ENV{CL} "$ENV{CL} ${TMP_CL_FLAGS}") + else() + # In NO_DEBUG mode, we only use ${TARGET_TRIPLET} directory. + if (_bn_NO_DEBUG) + set(SHORT_BUILDTYPE "") + else() + set(SHORT_BUILDTYPE "-rel") + endif() + set(CONFIG "Release") + # Add install command and arguments + set(MAKE_OPTS ${MAKE_OPTS_BASE}) + if (_bn_ENABLE_INSTALL) + set(INSTALL_OPTS ${INSTALL_OPTS_BASE} INSTALLDIR=${CURRENT_PACKAGES_DIR}) + set(MAKE_OPTS ${MAKE_OPTS} ${INSTALL_OPTS}) + endif() + set(MAKE_OPTS ${MAKE_OPTS} ${_bn_OPTIONS} ${_bn_OPTIONS_RELEASE}) + + unset(ENV{CL}) + set(TMP_CL_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}") + string(REPLACE "/" "-" TMP_CL_FLAGS "${TMP_CL_FLAGS}") + set(ENV{CL} "$ENV{CL} ${TMP_CL_FLAGS}") + endif() + + set(CURRENT_TRIPLET_NAME ${TARGET_TRIPLET}${SHORT_BUILDTYPE}) + set(OBJ_DIR ${CURRENT_BUILDTREES_DIR}/${CURRENT_TRIPLET_NAME}) + + file(REMOVE_RECURSE ${OBJ_DIR}) + file(MAKE_DIRECTORY ${OBJ_DIR}) + file(GLOB_RECURSE SOURCE_FILES ${_bn_SOURCE_PATH}/*) + foreach(ONE_SOUCRCE_FILE ${SOURCE_FILES}) + get_filename_component(DST_DIR ${ONE_SOUCRCE_FILE} PATH) + string(REPLACE "${_bn_SOURCE_PATH}" "${OBJ_DIR}" DST_DIR "${DST_DIR}") + file(COPY ${ONE_SOUCRCE_FILE} DESTINATION ${DST_DIR}) + endforeach() + + if (NOT _bn_ENABLE_INSTALL) + message(STATUS "Building ${CURRENT_TRIPLET_NAME}") + else() + message(STATUS "Building and installing ${CURRENT_TRIPLET_NAME}") + endif() + + vcpkg_execute_required_process( + COMMAND ${MAKE} -j ${VCPKG_CONCURRENCY} ${MAKE_OPTS} + WORKING_DIRECTORY ${OBJ_DIR}${_bn_PROJECT_SUBPATH} + LOGNAME "${_bn_LOGFILE_ROOT}-${CURRENT_TRIPLET_NAME}" + ) + + if(_bn_ADD_BIN_TO_PATH) + set(ENV{PATH} "${_BACKUP_ENV_PATH}") + endif() + endif() + endforeach() +endfunction() diff --git a/scripts/cmake/vcpkg_common_functions.cmake b/scripts/cmake/vcpkg_common_functions.cmake index d2ea35608..4aa115f47 100644 --- a/scripts/cmake/vcpkg_common_functions.cmake +++ b/scripts/cmake/vcpkg_common_functions.cmake @@ -19,12 +19,17 @@ include(vcpkg_from_bitbucket) include(vcpkg_build_cmake) include(vcpkg_build_msbuild) include(vcpkg_build_qmake) +include(vcpkg_build_make) +include(vcpkg_build_nmake) include(vcpkg_install_cmake) include(vcpkg_install_meson) include(vcpkg_install_msbuild) +include(vcpkg_install_make) +include(vcpkg_install_nmake) include(vcpkg_configure_cmake) include(vcpkg_configure_meson) include(vcpkg_configure_qmake) +include(vcpkg_configure_make) include(vcpkg_apply_patches) include(vcpkg_copy_pdbs) include(vcpkg_copy_tool_dependencies) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake new file mode 100644 index 000000000..a30b962e9 --- /dev/null +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -0,0 +1,347 @@ +## # vcpkg_configure_make +## +## Configure configure for Debug and Release builds of a project. +## +## ## Usage +## ```cmake +## vcpkg_configure_make( +## SOURCE_PATH <${SOURCE_PATH}> +## [AUTOCONFIG] +## [DISABLE_AUTO_HOST] +## [DISABLE_AUTO_DST] +## [GENERATOR] +## [NO_DEBUG] +## [PROJECT_SUBPATH <${PROJ_SUBPATH}>] +## [PRERUN_SHELL <${SHELL_PATH}>] +## [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] +## [OPTIONS_RELEASE <-DOPTIMIZE=1>...] +## [OPTIONS_DEBUG <-DDEBUGGABLE=1>...] +## ) +## ``` +## +## ## Parameters +## ### SOURCE_PATH +## Specifies the directory containing the `configure`/`configure.ac`. +## By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. +## +## ### PROJECT_SUBPATH +## Specifies the directory containing the ``configure`/`configure.ac`. +## By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. +## Should use `GENERATOR NMake` first. +## +## ### NO_DEBUG +## This port doesn't support debug mode. +## +## ### AUTOCONFIG +## Need to use autoconfig to generate configure file. +## +## ### DISABLE_AUTO_HOST +## Don't set host automatically, the default value is `i686`. +## If use this option, you will need to set host manually. +## +## ### DISABLE_AUTO_DST +## Don't set installation path automatically, the default value is `${CURRENT_PACKAGES_DIR}` and `${CURRENT_PACKAGES_DIR}/debug` +## If use this option, you will need to set dst path manually. +## +## ### GENERATOR +## Specifies the precise generator to use. +## NMake: nmake(windows) make(unix) +## MAKE: make(windows) make(unix) +## +## ### PRERUN_SHELL +## Script that needs to be called before configuration +## +## ### OPTIONS +## Additional options passed to configure during the configuration. +## +## ### OPTIONS_RELEASE +## Additional options passed to configure during the Release configuration. These are in addition to `OPTIONS`. +## +## ### OPTIONS_DEBUG +## Additional options passed to configure during the Debug configuration. These are in addition to `OPTIONS`. +## +## ## Notes +## This command supplies many common arguments to configure. To see the full list, examine the source. +## +## ## Examples +## +## * [x264](https://github.com/Microsoft/vcpkg/blob/master/ports/x264/portfile.cmake) +## * [tcl](https://github.com/Microsoft/vcpkg/blob/master/ports/tcl/portfile.cmake) +## * [freexl](https://github.com/Microsoft/vcpkg/blob/master/ports/freexl/portfile.cmake) +## * [libosip2](https://github.com/Microsoft/vcpkg/blob/master/ports/libosip2/portfile.cmake) +function(vcpkg_configure_make) + cmake_parse_arguments(_csc + "AUTOCONFIG;DISABLE_AUTO_HOST;DISABLE_AUTO_DST;NO_DEBUG" + "SOURCE_PATH;PROJECT_SUBPATH;GENERATOR;PRERUN_SHELL" + "OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE" + ${ARGN} + ) + + if(NOT VCPKG_PLATFORM_TOOLSET) + message(FATAL_ERROR "Vcpkg has been updated with VS2017 support; " + "however, vcpkg.exe must be rebuilt by re-running bootstrap-vcpkg.bat\n") + endif() + + if (_csc_OPTIONS_DEBUG STREQUAL _csc_OPTIONS_RELEASE OR NMAKE_OPTION_RELEASE STREQUAL NMAKE_OPTION_DEBUG) + message(FATAL_ERROR "Detected debug configuration is equal to release configuration, please use NO_DEBUG for vcpkg_configure_make") + endif() + # Select compiler + if(_csc_GENERATOR MATCHES "NMake") + message(FATAL_ERROR "Sorry, NMake does not supported currently.") + if (CMAKE_HOST_WIN32) + set(GENERATOR "nmake") + else() + set(GENERATOR "make") + endif() + elseif(NOT _csc_GENERATOR OR _csc_GENERATOR MATCHES "MAKE") + if (CMAKE_HOST_WIN32) + set(GENERATOR "make") + else() + set(GENERATOR "make") + endif() + else() + message(FATAL_ERROR "${_csc_GENERATOR} not supported.") + endif() + + if (_csc_AUTOCONFIG AND NOT CMAKE_HOST_WIN32) + find_program(autoreconf autoreconf REQUIRED) + endif() + + set(WIN_TARGET_ARCH ) + set(WIN_TARGET_COMPILER ) + # Detect compiler + if (GENERATOR STREQUAL "nmake") + message(STATUS "Using generator NMAKE") + find_program(NMAKE nmake REQUIRED) + elseif (GENERATOR STREQUAL "make") + message(STATUS "Using generator make") + find_program(MAKE make REQUIRED) + else() + message(FATAL_ERROR "${GENERATOR} not supported.") + endif() + # Pre-processing windows configure requirements + if (CMAKE_HOST_WIN32) + vcpkg_find_acquire_program(YASM) + vcpkg_find_acquire_program(PERL) + vcpkg_acquire_msys(MSYS_ROOT PACKAGES diffutils) + get_filename_component(YASM_EXE_PATH ${YASM} DIRECTORY) + get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY) + + if (NOT _csc_DISABLE_AUTO_HOST) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL x86) + set(WIN_TARGET_ARCH --host=i686-pc-mingw32) + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x64) + set(WIN_TARGET_ARCH --host=i686-pc-mingw64) + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL arm) + set(WIN_TARGET_ARCH --host=arm-pc-mingw32) + endif() + endif() + set(WIN_TARGET_COMPILER CC=cl) + set(ENV{PATH} "$ENV{PATH};${YASM_EXE_PATH};${MSYS_ROOT}/usr/bin;${PERL_EXE_PATH}") + set(BASH ${MSYS_ROOT}/usr/bin/bash.exe) + endif() + + if (NOT _csc_NO_DEBUG) + file(REMOVE_RECURSE "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg") + else() + file(REMOVE_RECURSE "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}") + endif() + + if (NOT _csc_DISABLE_AUTO_DST) + set(_csc_OPTIONS_RELEASE ${_csc_OPTIONS_RELEASE} + --prefix=${CURRENT_PACKAGES_DIR} + --bindir=${CURRENT_PACKAGES_DIR}/bin + --sbindir=${CURRENT_PACKAGES_DIR}/bin + --libdir=${CURRENT_PACKAGES_DIR}/lib + --includedir=${CURRENT_PACKAGES_DIR}/include) + + set(_csc_OPTIONS_DEBUG ${_csc_OPTIONS_DEBUG} + --prefix=${CURRENT_PACKAGES_DIR}/debug + --bindir=${CURRENT_PACKAGES_DIR}/debug/bin + --sbindir=${CURRENT_PACKAGES_DIR}/debug/bin + --libdir=${CURRENT_PACKAGES_DIR}/debug/lib + --includedir=${CURRENT_PACKAGES_DIR}/debug/include) + endif() + + set(base_cmd ) + if(CMAKE_HOST_WIN32) + set(base_cmd ${BASH} --noprofile --norc -c) + + if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) + set(_csc_OPTIONS ${_csc_OPTIONS} --enable-shared) + if (VCPKG_TARGET_IS_UWP) + set(_csc_OPTIONS ${_csc_OPTIONS} --extra-ldflags=-APPCONTAINER --extra-ldflags=WindowsApp.lib) + endif() + else() + set(_csc_OPTIONS ${_csc_OPTIONS} --enable-static) + endif() + # Load toolchains + if(NOT VCPKG_CHAINLOAD_TOOLCHAIN_FILE) + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/windows.cmake") + endif() + include("${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}") + + set(C_FLAGS_GLOBAL "$ENV{CFLAGS} ${VCPKG_C_FLAGS}") + set(CXX_FLAGS_GLOBAL "$ENV{CXXFLAGS} ${VCPKG_CXX_FLAGS}") + set(LD_FLAGS_GLOBAL "$ENV{LDFLAGS}") + + if(VCPKG_TARGET_IS_UWP) + set(ENV{LIBPATH} "$ENV{LIBPATH};$ENV{_WKITS10}references\\windows.foundation.foundationcontract\\2.0.0.0\\;$ENV{_WKITS10}references\\windows.foundation.universalapicontract\\3.0.0.0\\") + set(_csc_OPTIONS ${_csc_OPTIONS} --extra-cflags=-DWINAPI_FAMILY=WINAPI_FAMILY_APP --extra-cflags=-D_WIN32_WINNT=0x0A00) + endif() + + list(JOIN _csc_OPTIONS " " _csc_OPTIONS) + list(JOIN _csc_OPTIONS_RELEASE " " _csc_OPTIONS_RELEASE) + list(JOIN _csc_OPTIONS_DEBUG " " _csc_OPTIONS_DEBUG) + + set(rel_command + ${base_cmd} "${WIN_TARGET_COMPILER} ${_csc_SOURCE_PATH}/configure ${WIN_TARGET_ARCH} ${_csc_OPTIONS} ${_csc_OPTIONS_RELEASE}" + ) + set(dbg_command + ${base_cmd} "${WIN_TARGET_COMPILER} ${_csc_SOURCE_PATH}/configure ${WIN_TARGET_ARCH} ${_csc_OPTIONS} ${_csc_OPTIONS_DEBUG}" + ) + else() + set(base_cmd ./) + set(rel_command + ${base_cmd}configure "${_csc_OPTIONS}" "${_csc_OPTIONS_RELEASE}" + ) + set(dbg_command + ${base_cmd}configure "${_csc_OPTIONS}" "${_csc_OPTIONS_DEBUG}" + ) + endif() + + # Configure debug + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug" AND NOT _csc_NO_DEBUG) + if (CMAKE_HOST_WIN32) + unset(ENV{CFLAGS}) + unset(ENV{CXXFLAGS}) + unset(ENV{LDFLAGS}) + set(TMP_CFLAGS "${C_FLAGS_GLOBAL} ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG}") + string(REPLACE "/" "-" TMP_CFLAGS "${TMP_CFLAGS}") + set(ENV{CFLAGS} ${TMP_CFLAGS}) + set(TMP_CXXFLAGS "${CXX_FLAGS_GLOBAL} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}") + string(REPLACE "/" "-" TMP_CXXFLAGS "${TMP_CXXFLAGS}") + set(ENV{CXXFLAGS} ${TMP_CXXFLAGS}) + set(TMP_LDFLAGS "${LD_FLAGS_GLOBAL}") + string(REPLACE "/" "-" TMP_LDFLAGS "${TMP_LDFLAGS}") + set(ENV{LDFLAGS} ${TMP_LDFLAGS}) + endif() + + set(OBJ_DIR ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg) + set(PRJ_DIR ${OBJ_DIR}/${_csc_PROJECT_SUBPATH}) + + file(MAKE_DIRECTORY ${OBJ_DIR}) + + if (NOT CMAKE_HOST_WIN32) + file(GLOB_RECURSE SOURCE_FILES ${_csc_SOURCE_PATH}/*) + foreach(ONE_SOUCRCE_FILE ${SOURCE_FILES}) + file(COPY ${ONE_SOUCRCE_FILE} DESTINATION ${OBJ_DIR}) + get_filename_component(DST_DIR ${ONE_SOUCRCE_FILE} PATH) + string(REPLACE "${_csc_SOURCE_PATH}" "${OBJ_DIR}" DST_DIR "${DST_DIR}") + file(COPY ${ONE_SOUCRCE_FILE} DESTINATION ${DST_DIR}) + endforeach() + endif() + + if (_csc_PRERUN_SHELL) + message(STATUS "Prerun shell with ${TARGET_TRIPLET}-dbg") + vcpkg_execute_required_process( + COMMAND ${base_cmd}${_csc_PRERUN_SHELL} + WORKING_DIRECTORY ${PRJ_DIR} + LOGNAME prerun-${TARGET_TRIPLET}-dbg + ) + endif() + + if (_csc_AUTOCONFIG) + message(STATUS "Generating configure with ${TARGET_TRIPLET}-dbg") + vcpkg_execute_required_process( + COMMAND autoreconf -vfi + WORKING_DIRECTORY ${PRJ_DIR} + LOGNAME prerun-${TARGET_TRIPLET}-dbg + ) + endif() + + message(STATUS "Configuring ${TARGET_TRIPLET}-dbg") + vcpkg_execute_required_process( + COMMAND ${dbg_command} + WORKING_DIRECTORY ${PRJ_DIR} + LOGNAME config-${TARGET_TRIPLET}-dbg + ) + endif() + + # Configure release + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + if (CMAKE_HOST_WIN32) + unset(ENV{CFLAGS}) + unset(ENV{CXXFLAGS}) + unset(ENV{LDFLAGS}) + set(TMP_CFLAGS "${C_FLAGS_GLOBAL} ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE}") + string(REPLACE "/" "-" TMP_CFLAGS "${TMP_CFLAGS}") + set(ENV{CFLAGS} ${TMP_CFLAGS}) + + set(TMP_CXXFLAGS "${CXX_FLAGS_GLOBAL} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}") + string(REPLACE "/" "-" TMP_CXXFLAGS "${TMP_CXXFLAGS}") + set(ENV{CXXFLAGS} ${TMP_CXXFLAGS}) + + set(TMP_LDFLAGS "${LD_FLAGS_GLOBAL} ${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") + string(REPLACE "/" "-" TMP_LDFLAGS "${TMP_LDFLAGS}") + set(ENV{LDFLAGS} ${TMP_LDFLAGS}) + endif() + + if (_csc_NO_DEBUG) + set(TAR_TRIPLET_DIR ${TARGET_TRIPLET}) + set(OBJ_DIR ${CURRENT_BUILDTREES_DIR}/${TAR_TRIPLET_DIR}) + else() + set(TAR_TRIPLET_DIR ${TARGET_TRIPLET}-rel) + set(OBJ_DIR ${CURRENT_BUILDTREES_DIR}/${TAR_TRIPLET_DIR}) + endif() + set(PRJ_DIR ${OBJ_DIR}/${_csc_PROJECT_SUBPATH}) + + file(MAKE_DIRECTORY ${OBJ_DIR}) + + if (NOT CMAKE_HOST_WIN32) + file(GLOB_RECURSE SOURCE_FILES ${_csc_SOURCE_PATH}/*) + foreach(ONE_SOUCRCE_FILE ${SOURCE_FILES}) + get_filename_component(DST_DIR ${ONE_SOUCRCE_FILE} PATH) + string(REPLACE "${_csc_SOURCE_PATH}" "${OBJ_DIR}" DST_DIR "${DST_DIR}") + file(COPY ${ONE_SOUCRCE_FILE} DESTINATION ${DST_DIR}) + endforeach() + endif() + + if (_csc_PRERUN_SHELL) + message(STATUS "Prerun shell with ${TAR_TRIPLET_DIR}") + vcpkg_execute_required_process( + COMMAND ${base_cmd}${_csc_PRERUN_SHELL} + WORKING_DIRECTORY ${PRJ_DIR} + LOGNAME prerun-${TAR_TRIPLET_DIR} + ) + endif() + + if (_csc_AUTOCONFIG) + message(STATUS "Generating configure with ${TAR_TRIPLET_DIR}") + vcpkg_execute_required_process( + COMMAND autoreconf -vfi + WORKING_DIRECTORY ${PRJ_DIR} + LOGNAME prerun-${TAR_TRIPLET_DIR} + ) + endif() + + message(STATUS "Configuring ${TAR_TRIPLET_DIR}") + vcpkg_execute_required_process( + COMMAND ${rel_command} + WORKING_DIRECTORY ${PRJ_DIR} + LOGNAME config-${TAR_TRIPLET_DIR} + ) + endif() + + # Restore envs + if (CMAKE_HOST_WIN32) + set(ENV{CFLAGS} "${C_FLAGS_GLOBAL}") + set(ENV{CXXFLAGS} "${CXX_FLAGS_GLOBAL}") + set(ENV{LDFLAGS} "${LD_FLAGS_GLOBAL}") + endif() + + set(_VCPKG_MAKE_GENERATOR "${GENERATOR}" PARENT_SCOPE) + set(_VCPKG_NO_DEBUG ${_csc_NO_DEBUG} PARENT_SCOPE) + SET(_VCPKG_PROJECT_SOURCE_PATH ${_csc_SOURCE_PATH} PARENT_SCOPE) + set(_VCPKG_PROJECT_SUBPATH ${_csc_PROJECT_SUBPATH} PARENT_SCOPE) +endfunction() diff --git a/scripts/cmake/vcpkg_install_make.cmake b/scripts/cmake/vcpkg_install_make.cmake new file mode 100644 index 000000000..1672d7c5a --- /dev/null +++ b/scripts/cmake/vcpkg_install_make.cmake @@ -0,0 +1,25 @@ +## # vcpkg_install_make +## +## Build and install a make project. +## +## ## Usage: +## ```cmake +## vcpkg_install_make(...) +## ``` +## +## ## Parameters: +## See [`vcpkg_build_make()`](vcpkg_build_make.md). +## +## ## Notes: +## This command transparently forwards to [`vcpkg_build_make()`](vcpkg_build_make.md), adding `ENABLE_INSTALL` +## +## ## Examples +## +## * [x264](https://github.com/Microsoft/vcpkg/blob/master/ports/x264/portfile.cmake) +## * [tcl](https://github.com/Microsoft/vcpkg/blob/master/ports/tcl/portfile.cmake) +## * [freexl](https://github.com/Microsoft/vcpkg/blob/master/ports/freexl/portfile.cmake) +## * [libosip2](https://github.com/Microsoft/vcpkg/blob/master/ports/libosip2/portfile.cmake) + +function(vcpkg_install_make) + vcpkg_build_make(LOGFILE_ROOT ENABLE_INSTALL) +endfunction() diff --git a/scripts/cmake/vcpkg_install_nmake.cmake b/scripts/cmake/vcpkg_install_nmake.cmake new file mode 100644 index 000000000..ca7fe6ce5 --- /dev/null +++ b/scripts/cmake/vcpkg_install_nmake.cmake @@ -0,0 +1,69 @@ +## # vcpkg_install_nmake +## +## Build and install a msvc makefile project. +## +## ## Usage: +## ```cmake +## vcpkg_install_nmake( +## SOURCE_PATH <${SOURCE_PATH}> +## [NO_DEBUG] +## PROJECT_SUBPATH <${SUBPATH}> +## PROJECT_NAME <${MAKEFILE_NAME}> +## [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] +## [OPTIONS_RELEASE <-DOPTIMIZE=1>...] +## [OPTIONS_DEBUG <-DDEBUGGABLE=1>...] +## ``` +## +## ## Parameters +## ### SOURCE_PATH +## Specifies the directory containing the source files. +## By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. +## +## ### PROJECT_SUBPATH +## Specifies the sub directory containing the `makefile.vc`/`makefile.mak`/`makefile.msvc` or other msvc makefile. +## +## ### PROJECT_NAME +## Specifies the name of msvc makefile name. +## Default is makefile.vc +## +## ### NO_DEBUG +## This port doesn't support debug mode. +## +## ### OPTIONS +## Additional options passed to generate during the generation. +## +## ### OPTIONS_RELEASE +## Additional options passed to generate during the Release generation. These are in addition to `OPTIONS`. +## +## ### OPTIONS_DEBUG +## Additional options passed to generate during the Debug generation. These are in addition to `OPTIONS`. +## +## ## Parameters: +## See [`vcpkg_build_nmake()`](vcpkg_build_nmake.md). +## +## ## Notes: +## This command transparently forwards to [`vcpkg_build_nmake()`](vcpkg_build_nmake.md), adding `ENABLE_INSTALL` +## +## ## Examples +## +## * [tcl](https://github.com/Microsoft/vcpkg/blob/master/ports/tcl/portfile.cmake) +## * [freexl](https://github.com/Microsoft/vcpkg/blob/master/ports/freexl/portfile.cmake) + +function(vcpkg_install_nmake) + cmake_parse_arguments(_in + "NO_DEBUG" + "SOURCE_PATH;PROJECT_SUBPATH;PROJECT_NAME" + "OPTIONS;OPTIONS_RELEASE;OPTIONS_DEBUG" + ${ARGN} + ) + + if (NOT CMAKE_HOST_WIN32) + message(FATAL_ERROR "vcpkg_install_nmake only support windows.") + endif() + + vcpkg_build_nmake(LOGFILE_ROOT ENABLE_INSTALL + ${_in_NO_DEBUG} + SOURCE_PATH ${_in_SOURCE_PATH} PROJECT_SUBPATH ${_in_PROJECT_SUBPATH} PROJECT_NAME ${_in_PROJECT_NAME} + OPTIONS ${_in_OPTIONS} OPTIONS_RELEASE ${_in_OPTIONS_RELEASE} OPTIONS_DEBUG ${_in_OPTIONS_DEBUG} + ) +endfunction() -- cgit v1.2.3 From e86ff2cc54bda9e9ee322ab69141e7113d5c40a9 Mon Sep 17 00:00:00 2001 From: Vinny Date: Mon, 7 Oct 2019 13:31:39 -0400 Subject: Update vcpkg create template (#8427) * Began updating * Added 'Homepage:' to CONTROL, added vcpkg_check_features to vcpkg_create template * Update portfile.in.cmake Added documentation link for vcpkg_check_features --- scripts/templates/CONTROL.in | 1 + scripts/templates/portfile.in.cmake | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) (limited to 'scripts') diff --git a/scripts/templates/CONTROL.in b/scripts/templates/CONTROL.in index c5b706861..e22cefdce 100644 --- a/scripts/templates/CONTROL.in +++ b/scripts/templates/CONTROL.in @@ -1,3 +1,4 @@ Source: @PORT@ Version: +Homepage: Description: \ No newline at end of file diff --git a/scripts/templates/portfile.in.cmake b/scripts/templates/portfile.in.cmake index 33f8a4853..f6003a0cf 100644 --- a/scripts/templates/portfile.in.cmake +++ b/scripts/templates/portfile.in.cmake @@ -9,8 +9,10 @@ # VCPKG_ROOT_DIR = # VCPKG_TARGET_ARCHITECTURE = target architecture (x64, x86, arm) # +# See additional helpful variables in /docs/maintainers/vcpkg_common_definitions.md -include(vcpkg_common_functions) +# # Specifies if the port install should fail immediately given a condition +# vcpkg_fail_port_install(MESSAGE "@PORT@ currently only supports Linux and Mac platforms" ON_TARGET "Windows") vcpkg_download_distfile(ARCHIVE URLS "@URL@" @@ -30,6 +32,15 @@ vcpkg_extract_source_archive_ex( # 002_more_port_fixes.patch ) +# # Check if one or more features are a part of a package installation. +# # See /docs/maintainers/vcpkg_check_features.md for more details +# vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS +# FEATURES # <- Keyword FEATURES is required because INVERTED_FEATURES are being used +# tbb WITH_TBB +# INVERTED_FEATURES +# tbb ROCKSDB_IGNORE_PACKAGE_TBB +# ) + vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA # Disable this option if project cannot be built with Ninja @@ -40,8 +51,12 @@ vcpkg_configure_cmake( vcpkg_install_cmake() -# Handle copyright +# # Moves all .cmake files from /debug/share/@PORT@/ to /share/@PORT@/ +# # See /docs/maintainers/vcpkg_fixup_cmake_targets.md for more details +# vcpkg_fixup_cmake_targets(CONFIG_PATH cmake TARGET_PATH share/@PORT@) + +# # Handle copyright # file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/@PORT@ RENAME copyright) -# Post-build test for cmake libraries +# # Post-build test for cmake libraries # vcpkg_test_cmake(PACKAGE_NAME @PORT@) -- cgit v1.2.3 From 726c11148105a97aef39bec024fdb7c140b1b154 Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Mon, 7 Oct 2019 19:35:13 +0200 Subject: [vcpkg] fatal_error when patch fails to apply (#8087) vcpkg will now fail on failure to apply patches except when using `--head`. --- scripts/boost/generate-ports.ps1 | 10 +++++----- scripts/bootstrap.sh | 14 +++++++++++--- scripts/cmake/vcpkg_apply_patches.cmake | 2 +- scripts/cmake/vcpkg_common_definitions.cmake | 3 +++ scripts/cmake/vcpkg_extract_source_archive_ex.cmake | 19 ++++++++++++++++++- scripts/cmake/vcpkg_fixup_cmake_targets.cmake | 2 ++ scripts/cmake/vcpkg_from_github.cmake | 1 + 7 files changed, 41 insertions(+), 10 deletions(-) (limited to 'scripts') diff --git a/scripts/boost/generate-ports.ps1 b/scripts/boost/generate-ports.ps1 index d51b37f7e..5f5897718 100644 --- a/scripts/boost/generate-ports.ps1 +++ b/scripts/boost/generate-ports.ps1 @@ -13,9 +13,9 @@ function TransformReference() [string]$library ) - if ($library -match "python|fiber") + if ($library -match "fiber") { - # These two only work on windows desktop + # these only work on windows desktop "$library (windows)" } elseif ($library -match "type[_-]erasure|contract") @@ -47,12 +47,12 @@ function Generate() $sanitizedName = $name -replace "_","-" $versionsuffix = "" - if ($Name -eq "python" -or $Name -eq "asio" -or $Name -eq "mpi") + if ($Name -eq "asio" -or $Name -eq "mpi") { $versionsuffix = "-1" } - if ($Name -eq "test") + if ($Name -eq "python" -or $Name -eq "test") { $versionsuffix = "-2" } @@ -363,7 +363,7 @@ foreach ($library in $libraries) if ($library -eq "python") { - $deps += @("python3") + $deps += @("python3 (!osx&!linux)") $needsBuild = $true } elseif ($library -eq "iostreams") diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index afdd9c1b3..d89d5a15b 100644 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -17,7 +17,7 @@ fi # Argument parsing vcpkgDisableMetrics="OFF" vcpkgUseSystem=false -vcpkgAllowAppleClang=OFF +vcpkgAllowAppleClang=false for var in "$@" do if [ "$var" = "-disableMetrics" -o "$var" = "--disableMetrics" ]; then @@ -25,7 +25,7 @@ do elif [ "$var" = "-useSystemBinaries" -o "$var" = "--useSystemBinaries" ]; then vcpkgUseSystem=true elif [ "$var" = "-allowAppleClang" -o "$var" = "--allowAppleClang" ]; then - vcpkgAllowAppleClang=ON + vcpkgAllowAppleClang=true elif [ "$var" = "-help" -o "$var" = "--help" ]; then echo "Usage: ./bootstrap-vcpkg.sh [options]" echo @@ -242,7 +242,15 @@ else fetchTool "cmake" "$UNAME" cmakeExe || exit 1 fetchTool "ninja" "$UNAME" ninjaExe || exit 1 fi -selectCXX CXX || exit 1 +if [ "$os" = "osx" ]; then + if [ "$vcpkgAllowAppleClang" = "true" ] ; then + CXX=clang + else + selectCXX CXX || exit 1 + fi +else + selectCXX CXX || exit 1 +fi # Do the build buildDir="$vcpkgRootDir/toolsrc/build.rel" diff --git a/scripts/cmake/vcpkg_apply_patches.cmake b/scripts/cmake/vcpkg_apply_patches.cmake index 9698917de..8957fca27 100644 --- a/scripts/cmake/vcpkg_apply_patches.cmake +++ b/scripts/cmake/vcpkg_apply_patches.cmake @@ -49,7 +49,7 @@ function(vcpkg_apply_patches) ) if(error_code AND NOT _ap_QUIET) - message(STATUS "Applying patch failed. This is expected if this patch was previously applied.") + message(FATAL_ERROR "Applying patch failed. Patch needs to be updated to work with source being used by vcpkg!") endif() math(EXPR PATCHNUM "${PATCHNUM}+1") diff --git a/scripts/cmake/vcpkg_common_definitions.cmake b/scripts/cmake/vcpkg_common_definitions.cmake index 28177fbbf..60afeaf36 100644 --- a/scripts/cmake/vcpkg_common_definitions.cmake +++ b/scripts/cmake/vcpkg_common_definitions.cmake @@ -55,6 +55,7 @@ endif() #Helper variables for libraries if(VCPKG_TARGET_IS_WINDOWS) set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".lib") + set(VCPKG_TARGET_IMPORT_LIBRARY_SUFFIX ".lib") set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".dll") set(VCPKG_TARGET_IMPORT_LIBRARY_SUFFIX ".lib") set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "") @@ -69,6 +70,7 @@ if(VCPKG_TARGET_IS_WINDOWS) #set(VCPKG_FIND_LIBRARY_PREFIXES "lib" "") elseif(VCPKG_TARGET_IS_OSX) set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".a") + set(VCPKG_TARGET_IMPORT_LIBRARY_SUFFIX "") set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".dylib") set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "lib") set(VCPKG_TARGET_SHARED_LIBRARY_PREFIX "lib") @@ -76,6 +78,7 @@ elseif(VCPKG_TARGET_IS_OSX) set(VCPKG_FIND_LIBRARY_PREFIXES "lib" "") else() set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".a") + set(VCPKG_TARGET_IMPORT_LIBRARY_SUFFIX "") set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".so") set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "lib") set(VCPKG_TARGET_SHARED_LIBRARY_PREFIX "lib") diff --git a/scripts/cmake/vcpkg_extract_source_archive_ex.cmake b/scripts/cmake/vcpkg_extract_source_archive_ex.cmake index a775c2094..67916d09d 100644 --- a/scripts/cmake/vcpkg_extract_source_archive_ex.cmake +++ b/scripts/cmake/vcpkg_extract_source_archive_ex.cmake @@ -5,6 +5,7 @@ ## ## Usage ## ```cmake ## vcpkg_extract_source_archive_ex( +## SKIP_PATCH_CHECK ## OUT_SOURCE_PATH ## ARCHIVE <${ARCHIVE}> ## [REF <1.0.0>] @@ -14,6 +15,9 @@ ## ) ## ``` ## ## Parameters +## ### SKIP_PATCH_CHECK +## If this option is set the failure to apply a patch is ignored. +## ## ### OUT_SOURCE_PATH ## Specifies the out-variable that will contain the extracted location. ## @@ -51,7 +55,13 @@ include(vcpkg_apply_patches) include(vcpkg_extract_source_archive) function(vcpkg_extract_source_archive_ex) - cmake_parse_arguments(_vesae "NO_REMOVE_ONE_LEVEL" "OUT_SOURCE_PATH;ARCHIVE;REF;WORKING_DIRECTORY" "PATCHES" ${ARGN}) + cmake_parse_arguments( + _vesae + "NO_REMOVE_ONE_LEVEL;SKIP_PATCH_CHECK" + "OUT_SOURCE_PATH;ARCHIVE;REF;WORKING_DIRECTORY" + "PATCHES" + ${ARGN} + ) if(NOT _vesae_ARCHIVE) message(FATAL_ERROR "Must specify ARCHIVE parameter to vcpkg_extract_source_archive_ex()") @@ -115,7 +125,14 @@ function(vcpkg_extract_source_archive_ex) endif() endif() + if (_vesae_SKIP_PATCH_CHECK) + set (QUIET QUIET) + else() + set (QUIET) + endif() + vcpkg_apply_patches( + ${QUIET} SOURCE_PATH ${TEMP_SOURCE_PATH} PATCHES ${_vesae_PATCHES} ) diff --git a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake index 3b5370bcd..c383fcb56 100644 --- a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake +++ b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake @@ -178,3 +178,5 @@ function(vcpkg_fixup_cmake_targets) file(WRITE ${CMAKE_FILE} "${_contents}") endforeach() endfunction() + + diff --git a/scripts/cmake/vcpkg_from_github.cmake b/scripts/cmake/vcpkg_from_github.cmake index c0d657bbc..a822ee40e 100644 --- a/scripts/cmake/vcpkg_from_github.cmake +++ b/scripts/cmake/vcpkg_from_github.cmake @@ -172,6 +172,7 @@ function(vcpkg_from_github) endif() vcpkg_extract_source_archive_ex( + SKIP_PATCH_CHECK OUT_SOURCE_PATH SOURCE_PATH ARCHIVE "${downloaded_file_path}" REF "${SANITIZED_HEAD_REF}" -- cgit v1.2.3 From c784f08ee032dc28c4b5d15ab782d0198d3d0f0c Mon Sep 17 00:00:00 2001 From: JackBoosY Date: Mon, 7 Oct 2019 20:07:26 -0700 Subject: update templates. --- scripts/templates/CONTROL.in | 8 +++++++- scripts/templates/portfile.in.cmake | 12 ++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/templates/CONTROL.in b/scripts/templates/CONTROL.in index e22cefdce..77f287e0a 100644 --- a/scripts/templates/CONTROL.in +++ b/scripts/templates/CONTROL.in @@ -1,4 +1,10 @@ Source: @PORT@ Version: Homepage: -Description: \ No newline at end of file +Description: +Build-Depends: +Default-Features: + +Feature: +Description: +Build-Depends: \ No newline at end of file diff --git a/scripts/templates/portfile.in.cmake b/scripts/templates/portfile.in.cmake index f6003a0cf..6081c6b19 100644 --- a/scripts/templates/portfile.in.cmake +++ b/scripts/templates/portfile.in.cmake @@ -2,12 +2,24 @@ # CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT} # CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET} # CURRENT_PORT_DIR = ${VCPKG_ROOT_DIR}\ports\${PORT} +# CURRENT_INSTALLED_DIR = ${VCPKG_ROOT_DIR}\installed\${TRIPLET} +# DOWNLOADS = ${VCPKG_ROOT_DIR}\downloads # PORT = current port name (zlib, etc) # TARGET_TRIPLET = current triplet (x86-windows, x64-windows-static, etc) # VCPKG_CRT_LINKAGE = C runtime linkage type (static, dynamic) # VCPKG_LIBRARY_LINKAGE = target library linkage type (static, dynamic) # VCPKG_ROOT_DIR = # VCPKG_TARGET_ARCHITECTURE = target architecture (x64, x86, arm) +# VCPKG_CMAKE_SYSTEM_NAME = "WindowsStore" "WindowsPhone" "Linux" "Darwin" "Windows" "FreeBSD" empty(windows) +# VCPKG_TOOLCHAIN = ON OFF +# TRIPLET_SYSTEM_ARCH = arm x86 x64 +# BUILD_ARCH = "Win32" "x64" "ARM" +# MSBUILD_PLATFORM = "Win32"/"x64"/${TRIPLET_SYSTEM_ARCH} +# DEBUG_CONFIG = "Debug Static" "Debug Dll" +# RELEASE_CONFIG = "Release Static"" "Release DLL" +# VCPKG_TARGET_EXECUTABLE_SUFFIX +# VCPKG_TARGET_STATIC_LIBRARY_SUFFIX +# VCPKG_TARGET_SHARED_LIBRARY_SUFFIX # # See additional helpful variables in /docs/maintainers/vcpkg_common_definitions.md -- cgit v1.2.3 From bc80d3c00ef99709fff6bab059b3b87090c92e58 Mon Sep 17 00:00:00 2001 From: JackBoosY Date: Mon, 7 Oct 2019 20:10:46 -0700 Subject: use macros VCPKG_TARGET_IS_ instead of VCPKG_CMAKE_SYSTEM_NAME --- scripts/templates/portfile.in.cmake | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/templates/portfile.in.cmake b/scripts/templates/portfile.in.cmake index 6081c6b19..62c53a6db 100644 --- a/scripts/templates/portfile.in.cmake +++ b/scripts/templates/portfile.in.cmake @@ -10,13 +10,18 @@ # VCPKG_LIBRARY_LINKAGE = target library linkage type (static, dynamic) # VCPKG_ROOT_DIR = # VCPKG_TARGET_ARCHITECTURE = target architecture (x64, x86, arm) -# VCPKG_CMAKE_SYSTEM_NAME = "WindowsStore" "WindowsPhone" "Linux" "Darwin" "Windows" "FreeBSD" empty(windows) # VCPKG_TOOLCHAIN = ON OFF # TRIPLET_SYSTEM_ARCH = arm x86 x64 # BUILD_ARCH = "Win32" "x64" "ARM" # MSBUILD_PLATFORM = "Win32"/"x64"/${TRIPLET_SYSTEM_ARCH} # DEBUG_CONFIG = "Debug Static" "Debug Dll" # RELEASE_CONFIG = "Release Static"" "Release DLL" +# VCPKG_TARGET_IS_WINDOWS +# VCPKG_TARGET_IS_UWP +# VCPKG_TARGET_IS_LINUX +# VCPKG_TARGET_IS_OSX +# VCPKG_TARGET_IS_FREEBSD +# VCPKG_TARGET_IS_ANDROID # VCPKG_TARGET_EXECUTABLE_SUFFIX # VCPKG_TARGET_STATIC_LIBRARY_SUFFIX # VCPKG_TARGET_SHARED_LIBRARY_SUFFIX -- cgit v1.2.3 From 37be706f568f07b1507e7e1717a9bc4910747a61 Mon Sep 17 00:00:00 2001 From: JackBoosY <47264268+JackBoosY@users.noreply.github.com> Date: Wed, 9 Oct 2019 20:54:19 +0800 Subject: Fix option -j (#8489) * Remove unusable parameters -j * trigger CI system. * Add option -j to make. * Re-trigger CI system. * Fix -j in make, fix NO_DEBUG in nmake. * Re-trigger CI system. --- scripts/cmake/vcpkg_build_make.cmake | 12 ++++++------ scripts/cmake/vcpkg_build_nmake.cmake | 4 ++-- scripts/cmake/vcpkg_install_nmake.cmake | 6 +++++- 3 files changed, 13 insertions(+), 9 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index f73fb98d5..793341655 100644 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -52,17 +52,17 @@ function(vcpkg_build_make) set(ENV{PATH} "$ENV{PATH};${YASM_EXE_PATH};${MSYS_ROOT}/usr/bin;${PERL_EXE_PATH}") set(BASH ${MSYS_ROOT}/usr/bin/bash.exe) # Set make command and install command - set(MAKE ${BASH} --noprofile --norc -c) + set(MAKE ${BASH} --noprofile --norc -c "${_VCPKG_PROJECT_SUBPATH}make") # Must use absolute path to call make in windows - set(MAKE_OPTS "${_VCPKG_PROJECT_SUBPATH}make") - set(INSTALL_OPTS "${_VCPKG_PROJECT_SUBPATH}make install") + set(MAKE_OPTS "-j ${VCPKG_CONCURRENCY}") + set(INSTALL_OPTS "install -j ${VCPKG_CONCURRENCY}") else() # Compiler requriements find_program(MAKE make REQUIRED) set(MAKE make) # Set make command and install command - set(MAKE_OPTS) - set(INSTALL_OPTS install) + set(MAKE_OPTS -j ${VCPKG_CONCURRENCY}) + set(INSTALL_OPTS install -j ${VCPKG_CONCURRENCY}) endif() elseif (_VCPKG_MAKE_GENERATOR STREQUAL "nmake") find_program(NMAKE nmake REQUIRED) @@ -121,7 +121,7 @@ function(vcpkg_build_make) endif() vcpkg_execute_build_process( - COMMAND ${MAKE} -j ${VCPKG_CONCURRENCY} ${MAKE_OPTS} + COMMAND ${MAKE} ${MAKE_OPTS} WORKING_DIRECTORY ${WORKING_DIRECTORY} LOGNAME "${_bc_LOGFILE_ROOT}-${TARGET_TRIPLET}${SHORT_BUILDTYPE}" ) diff --git a/scripts/cmake/vcpkg_build_nmake.cmake b/scripts/cmake/vcpkg_build_nmake.cmake index c98df946a..1eb621b0e 100644 --- a/scripts/cmake/vcpkg_build_nmake.cmake +++ b/scripts/cmake/vcpkg_build_nmake.cmake @@ -171,8 +171,8 @@ function(vcpkg_build_nmake) message(STATUS "Building and installing ${CURRENT_TRIPLET_NAME}") endif() - vcpkg_execute_required_process( - COMMAND ${MAKE} -j ${VCPKG_CONCURRENCY} ${MAKE_OPTS} + vcpkg_execute_build_process( + COMMAND ${MAKE} ${MAKE_OPTS} WORKING_DIRECTORY ${OBJ_DIR}${_bn_PROJECT_SUBPATH} LOGNAME "${_bn_LOGFILE_ROOT}-${CURRENT_TRIPLET_NAME}" ) diff --git a/scripts/cmake/vcpkg_install_nmake.cmake b/scripts/cmake/vcpkg_install_nmake.cmake index ca7fe6ce5..0674f9ec3 100644 --- a/scripts/cmake/vcpkg_install_nmake.cmake +++ b/scripts/cmake/vcpkg_install_nmake.cmake @@ -61,8 +61,12 @@ function(vcpkg_install_nmake) message(FATAL_ERROR "vcpkg_install_nmake only support windows.") endif() + if (_in_NO_DEBUG) + set(NO_DEBUG NO_DEBUG) + endif() + vcpkg_build_nmake(LOGFILE_ROOT ENABLE_INSTALL - ${_in_NO_DEBUG} + ${NO_DEBUG} SOURCE_PATH ${_in_SOURCE_PATH} PROJECT_SUBPATH ${_in_PROJECT_SUBPATH} PROJECT_NAME ${_in_PROJECT_NAME} OPTIONS ${_in_OPTIONS} OPTIONS_RELEASE ${_in_OPTIONS_RELEASE} OPTIONS_DEBUG ${_in_OPTIONS_DEBUG} ) -- cgit v1.2.3 From db3e74fa9c683f2fdd7f0244cedc0fbf3f9478f6 Mon Sep 17 00:00:00 2001 From: Joel Pelaez Jorge Date: Mon, 14 Oct 2019 18:04:05 -0500 Subject: Fix CMake checks for Apple Clang 11.0 on macOS 10.15 (#8580) * Fix CMake checks for Apple Clang 11.0 on macOS 10.15 * Use clang++ instance clang if allowAppleClang is enabled --- scripts/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index d89d5a15b..55859d1f8 100644 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -244,7 +244,7 @@ else fi if [ "$os" = "osx" ]; then if [ "$vcpkgAllowAppleClang" = "true" ] ; then - CXX=clang + CXX=clang++ else selectCXX CXX || exit 1 fi -- cgit v1.2.3 From 6f37346354774bea181016fef3238c8d3770b6f4 Mon Sep 17 00:00:00 2001 From: Ehsan Date: Tue, 22 Oct 2019 01:55:25 +0330 Subject: [vcpkg_download_distfile.cmake] Fix Examples (#8669) --- scripts/cmake/vcpkg_download_distfile.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_download_distfile.cmake b/scripts/cmake/vcpkg_download_distfile.cmake index 887eb285f..8a8efd205 100644 --- a/scripts/cmake/vcpkg_download_distfile.cmake +++ b/scripts/cmake/vcpkg_download_distfile.cmake @@ -45,7 +45,7 @@ ## ## * [apr](https://github.com/Microsoft/vcpkg/blob/master/ports/apr/portfile.cmake) ## * [fontconfig](https://github.com/Microsoft/vcpkg/blob/master/ports/fontconfig/portfile.cmake) -## * [openssl](https://github.com/Microsoft/vcpkg/blob/master/ports/openssl/portfile.cmake) +## * [freetype](https://github.com/Microsoft/vcpkg/blob/master/ports/freetype/portfile.cmake) function(vcpkg_download_distfile VAR) set(options SKIP_SHA512) set(oneValueArgs FILENAME SHA512) -- cgit v1.2.3 From 6e30ee1ae8b560c53b5e72cf7a9dcd8176cedb50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20St=C3=B6ggl?= Date: Tue, 22 Oct 2019 00:25:58 +0200 Subject: vcpkg_configure_meson - Remove compiler flag /Oi (#8667) Removing the compiler flag /Oi (Generate Intrinsic Functions) allows meson to detect functions like memmove, memset correctly. This is relevant to meson configure for fribidi (see fribidi/meson.build). This fixes the following "issues" (from fribidi meson-log.txt): testfile.c(17): error C2168: 'memmove': too few actual parameters for intrinsic function Checking for function "memmove" : NO testfile.c(17): error C2168: 'memset': too few actual parameters for intrinsic function Checking for function "memset" : NO And enables detection of the functions: Checking for function "memmove" : YES Checking for function "memset" : YES --- scripts/cmake/vcpkg_configure_meson.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_configure_meson.cmake b/scripts/cmake/vcpkg_configure_meson.cmake index f907c76f1..6dfb266cf 100644 --- a/scripts/cmake/vcpkg_configure_meson.cmake +++ b/scripts/cmake/vcpkg_configure_meson.cmake @@ -12,14 +12,14 @@ function(vcpkg_configure_meson) set(MESON_DEBUG_CFLAGS "${MESON_DEBUG_CFLAGS} /D_DEBUG /MDd /Z7 /Ob0 /Od /RTC1") set(MESON_DEBUG_CXXFLAGS "${MESON_DEBUG_CXXFLAGS} /D_DEBUG /MDd /Z7 /Ob0 /Od /RTC1") - set(MESON_RELEASE_CFLAGS "${MESON_RELEASE_CFLAGS} /MD /O2 /Oi /Gy /DNDEBUG /Z7") - set(MESON_RELEASE_CXXFLAGS "${MESON_RELEASE_CXXFLAGS} /MD /O2 /Oi /Gy /DNDEBUG /Z7") + set(MESON_RELEASE_CFLAGS "${MESON_RELEASE_CFLAGS} /MD /O2 /Gy /DNDEBUG /Z7") + set(MESON_RELEASE_CXXFLAGS "${MESON_RELEASE_CXXFLAGS} /MD /O2 /Gy /DNDEBUG /Z7") elseif(DEFINED VCPKG_CRT_LINKAGE AND VCPKG_CRT_LINKAGE STREQUAL static) set(MESON_DEBUG_CFLAGS "${MESON_DEBUG_CFLAGS} /D_DEBUG /MTd /Z7 /Ob0 /Od /RTC1") set(MESON_DEBUG_CXXFLAGS "${MESON_DEBUG_CXXFLAGS} /D_DEBUG /MTd /Z7 /Ob0 /Od /RTC1") - set(MESON_RELEASE_CFLAGS "${MESON_RELEASE_CFLAGS} /MT /O2 /Oi /Gy /DNDEBUG /Z7") - set(MESON_RELEASE_CXXFLAGS "${MESON_RELEASE_CXXFLAGS} /MT /O2 /Oi /Gy /DNDEBUG /Z7") + set(MESON_RELEASE_CFLAGS "${MESON_RELEASE_CFLAGS} /MT /O2 /Gy /DNDEBUG /Z7") + set(MESON_RELEASE_CXXFLAGS "${MESON_RELEASE_CXXFLAGS} /MT /O2 /Gy /DNDEBUG /Z7") endif() set(MESON_COMMON_LDFLAGS "${MESON_COMMON_LDFLAGS} /DEBUG") -- cgit v1.2.3 From b99d0734129db2416e594dcd2aa382857429cce2 Mon Sep 17 00:00:00 2001 From: JackBoosY <47264268+JackBoosY@users.noreply.github.com> Date: Tue, 22 Oct 2019 07:23:23 +0800 Subject: Add AUTOCONF support with vcpkg_configure_make. (#8610) --- scripts/cmake/vcpkg_configure_make.cmake | 48 ++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 15 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index a30b962e9..c73f5c800 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -102,10 +102,6 @@ function(vcpkg_configure_make) else() message(FATAL_ERROR "${_csc_GENERATOR} not supported.") endif() - - if (_csc_AUTOCONFIG AND NOT CMAKE_HOST_WIN32) - find_program(autoreconf autoreconf REQUIRED) - endif() set(WIN_TARGET_ARCH ) set(WIN_TARGET_COMPILER ) @@ -123,7 +119,11 @@ function(vcpkg_configure_make) if (CMAKE_HOST_WIN32) vcpkg_find_acquire_program(YASM) vcpkg_find_acquire_program(PERL) - vcpkg_acquire_msys(MSYS_ROOT PACKAGES diffutils) + set(MSYS_REQUIRE_PACKAGES diffutils) + if (_csc_AUTOCONFIG) + set(MSYS_REQUIRE_PACKAGES ${MSYS_REQUIRE_PACKAGES} autoconf automake m4 libtool perl) + endif() + vcpkg_acquire_msys(MSYS_ROOT PACKAGES ${MSYS_REQUIRE_PACKAGES}) get_filename_component(YASM_EXE_PATH ${YASM} DIRECTORY) get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY) @@ -139,6 +139,8 @@ function(vcpkg_configure_make) set(WIN_TARGET_COMPILER CC=cl) set(ENV{PATH} "$ENV{PATH};${YASM_EXE_PATH};${MSYS_ROOT}/usr/bin;${PERL_EXE_PATH}") set(BASH ${MSYS_ROOT}/usr/bin/bash.exe) + elseif (_csc_AUTOCONFIG) + find_program(autoreconf autoreconf REQUIRED) endif() if (NOT _csc_NO_DEBUG) @@ -253,11 +255,19 @@ function(vcpkg_configure_make) if (_csc_AUTOCONFIG) message(STATUS "Generating configure with ${TARGET_TRIPLET}-dbg") - vcpkg_execute_required_process( - COMMAND autoreconf -vfi - WORKING_DIRECTORY ${PRJ_DIR} - LOGNAME prerun-${TARGET_TRIPLET}-dbg - ) + if (CMAKE_HOST_WIN32) + vcpkg_execute_required_process( + COMMAND ${base_cmd} autoreconf -vfi + WORKING_DIRECTORY ${_csc_SOURCE_PATH}/${_csc_PROJECT_SUBPATH} + LOGNAME prerun-${TAR_TRIPLET_DIR} + ) + else() + vcpkg_execute_required_process( + COMMAND autoreconf -vfi + WORKING_DIRECTORY ${PRJ_DIR} + LOGNAME prerun-${TAR_TRIPLET_DIR} + ) + endif() endif() message(STATUS "Configuring ${TARGET_TRIPLET}-dbg") @@ -318,11 +328,19 @@ function(vcpkg_configure_make) if (_csc_AUTOCONFIG) message(STATUS "Generating configure with ${TAR_TRIPLET_DIR}") - vcpkg_execute_required_process( - COMMAND autoreconf -vfi - WORKING_DIRECTORY ${PRJ_DIR} - LOGNAME prerun-${TAR_TRIPLET_DIR} - ) + if (CMAKE_HOST_WIN32) + vcpkg_execute_required_process( + COMMAND ${base_cmd} autoreconf -vfi + WORKING_DIRECTORY ${_csc_SOURCE_PATH}/${_csc_PROJECT_SUBPATH} + LOGNAME prerun-${TAR_TRIPLET_DIR} + ) + else() + vcpkg_execute_required_process( + COMMAND autoreconf -vfi + WORKING_DIRECTORY ${PRJ_DIR} + LOGNAME prerun-${TAR_TRIPLET_DIR} + ) + endif() endif() message(STATUS "Configuring ${TAR_TRIPLET_DIR}") -- cgit v1.2.3 From 988b1c989797380b92ef19c651e391bac546e0dc Mon Sep 17 00:00:00 2001 From: JackBoosY <47264268+JackBoosY@users.noreply.github.com> Date: Tue, 22 Oct 2019 07:23:52 +0800 Subject: support SKIP_CONFIGURE in vcpkg_configure_make. (#8647) --- scripts/cmake/vcpkg_configure_make.cmake | 34 ++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 13 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index c73f5c800..10426a0c8 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -11,6 +11,7 @@ ## [DISABLE_AUTO_DST] ## [GENERATOR] ## [NO_DEBUG] +## [SKIP_CONFIGURE] ## [PROJECT_SUBPATH <${PROJ_SUBPATH}>] ## [PRERUN_SHELL <${SHELL_PATH}>] ## [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] @@ -32,6 +33,9 @@ ## ### NO_DEBUG ## This port doesn't support debug mode. ## +## ### SKIP_CONFIGURE +## Skip configure process +## ## ### AUTOCONFIG ## Need to use autoconfig to generate configure file. ## @@ -71,7 +75,7 @@ ## * [libosip2](https://github.com/Microsoft/vcpkg/blob/master/ports/libosip2/portfile.cmake) function(vcpkg_configure_make) cmake_parse_arguments(_csc - "AUTOCONFIG;DISABLE_AUTO_HOST;DISABLE_AUTO_DST;NO_DEBUG" + "AUTOCONFIG;DISABLE_AUTO_HOST;DISABLE_AUTO_DST;NO_DEBUG;SKIP_CONFIGURE" "SOURCE_PATH;PROJECT_SUBPATH;GENERATOR;PRERUN_SHELL" "OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE" ${ARGN} @@ -270,12 +274,14 @@ function(vcpkg_configure_make) endif() endif() - message(STATUS "Configuring ${TARGET_TRIPLET}-dbg") - vcpkg_execute_required_process( - COMMAND ${dbg_command} - WORKING_DIRECTORY ${PRJ_DIR} - LOGNAME config-${TARGET_TRIPLET}-dbg - ) + if (NOT _csc_SKIP_CONFIGURE) + message(STATUS "Configuring ${TARGET_TRIPLET}-dbg") + vcpkg_execute_required_process( + COMMAND ${dbg_command} + WORKING_DIRECTORY ${PRJ_DIR} + LOGNAME config-${TARGET_TRIPLET}-dbg + ) + endif() endif() # Configure release @@ -343,12 +349,14 @@ function(vcpkg_configure_make) endif() endif() - message(STATUS "Configuring ${TAR_TRIPLET_DIR}") - vcpkg_execute_required_process( - COMMAND ${rel_command} - WORKING_DIRECTORY ${PRJ_DIR} - LOGNAME config-${TAR_TRIPLET_DIR} - ) + if (NOT _csc_SKIP_CONFIGURE) + message(STATUS "Configuring ${TAR_TRIPLET_DIR}") + vcpkg_execute_required_process( + COMMAND ${rel_command} + WORKING_DIRECTORY ${PRJ_DIR} + LOGNAME config-${TAR_TRIPLET_DIR} + ) + endif() endif() # Restore envs -- cgit v1.2.3 From 1bdb6bfec1929b0d30cb5a4c3353c1e62905f10f Mon Sep 17 00:00:00 2001 From: JackBoosY <47264268+JackBoosY@users.noreply.github.com> Date: Tue, 22 Oct 2019 13:49:23 +0800 Subject: Fix separate make and install execution error issue. (#8540) * Fix separate make and install execution error issue. * trigger CI system. * Fix multiple copy files under debug, fix separator between make and install in linux. --- scripts/cmake/vcpkg_build_make.cmake | 46 ++++++++++++++++++++------------ scripts/cmake/vcpkg_configure_make.cmake | 1 - 2 files changed, 29 insertions(+), 18 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index 793341655..d928a9287 100644 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -54,15 +54,15 @@ function(vcpkg_build_make) # Set make command and install command set(MAKE ${BASH} --noprofile --norc -c "${_VCPKG_PROJECT_SUBPATH}make") # Must use absolute path to call make in windows - set(MAKE_OPTS "-j ${VCPKG_CONCURRENCY}") - set(INSTALL_OPTS "install -j ${VCPKG_CONCURRENCY}") + set(MAKE_OPTS -j ${VCPKG_CONCURRENCY}) + set(INSTALL_OPTS install -j ${VCPKG_CONCURRENCY}) else() # Compiler requriements find_program(MAKE make REQUIRED) - set(MAKE make) + set(MAKE make;) # Set make command and install command - set(MAKE_OPTS -j ${VCPKG_CONCURRENCY}) - set(INSTALL_OPTS install -j ${VCPKG_CONCURRENCY}) + set(MAKE_OPTS -j;${VCPKG_CONCURRENCY}) + set(INSTALL_OPTS install;-j;${VCPKG_CONCURRENCY}) endif() elseif (_VCPKG_MAKE_GENERATOR STREQUAL "nmake") find_program(NMAKE nmake REQUIRED) @@ -120,11 +120,19 @@ function(vcpkg_build_make) endif() endif() - vcpkg_execute_build_process( - COMMAND ${MAKE} ${MAKE_OPTS} - WORKING_DIRECTORY ${WORKING_DIRECTORY} - LOGNAME "${_bc_LOGFILE_ROOT}-${TARGET_TRIPLET}${SHORT_BUILDTYPE}" - ) + if (CMAKE_HOST_WIN32) + vcpkg_execute_build_process( + COMMAND "${MAKE} ${MAKE_OPTS}" + WORKING_DIRECTORY ${WORKING_DIRECTORY} + LOGNAME "${_bc_LOGFILE_ROOT}-${TARGET_TRIPLET}${SHORT_BUILDTYPE}" + ) + else() + vcpkg_execute_build_process( + COMMAND "${MAKE};${MAKE_OPTS}" + WORKING_DIRECTORY ${WORKING_DIRECTORY} + LOGNAME "${_bc_LOGFILE_ROOT}-${TARGET_TRIPLET}${SHORT_BUILDTYPE}" + ) + endif() if(_bc_ADD_BIN_TO_PATH) set(ENV{PATH} "${_BACKUP_ENV_PATH}") @@ -149,19 +157,23 @@ function(vcpkg_build_make) endif() endif() + message(STATUS "Installing ${TARGET_TRIPLET}${SHORT_BUILDTYPE}") if (CMAKE_HOST_WIN32) # In windows we can remotely call make set(WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}${SHORT_BUILDTYPE}) + vcpkg_execute_build_process( + COMMAND "${MAKE} ${INSTALL_OPTS}" + WORKING_DIRECTORY ${WORKING_DIRECTORY} + LOGNAME "install-${TARGET_TRIPLET}${SHORT_BUILDTYPE}" + ) else() set(WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}${SHORT_BUILDTYPE}${_VCPKG_PROJECT_SUBPATH}) + vcpkg_execute_build_process( + COMMAND "${MAKE};${INSTALL_OPTS}" + WORKING_DIRECTORY ${WORKING_DIRECTORY} + LOGNAME "install-${TARGET_TRIPLET}${SHORT_BUILDTYPE}" + ) endif() - - message(STATUS "Installing ${TARGET_TRIPLET}${SHORT_BUILDTYPE}") - vcpkg_execute_required_process( - COMMAND ${MAKE} ${INSTALL_OPTS} - WORKING_DIRECTORY ${WORKING_DIRECTORY} - LOGNAME "install-${TARGET_TRIPLET}${SHORT_BUILDTYPE}" - ) endforeach() endif() diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 10426a0c8..1a691a945 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -241,7 +241,6 @@ function(vcpkg_configure_make) if (NOT CMAKE_HOST_WIN32) file(GLOB_RECURSE SOURCE_FILES ${_csc_SOURCE_PATH}/*) foreach(ONE_SOUCRCE_FILE ${SOURCE_FILES}) - file(COPY ${ONE_SOUCRCE_FILE} DESTINATION ${OBJ_DIR}) get_filename_component(DST_DIR ${ONE_SOUCRCE_FILE} PATH) string(REPLACE "${_csc_SOURCE_PATH}" "${OBJ_DIR}" DST_DIR "${DST_DIR}") file(COPY ${ONE_SOUCRCE_FILE} DESTINATION ${DST_DIR}) -- cgit v1.2.3 From af55822ea1d8b1cc8ff7daf4d4b0850405f12e89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20St=C3=B6ggl?= Date: Mon, 28 Oct 2019 23:47:40 +0100 Subject: mesonbuild - Update to 0.52.0 (#8639) * mesonbuild - Update to 0.52.0 * [tool-meson] Add package to represent dependency on Meson build-system --- scripts/cmake/vcpkg_find_acquire_program.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index b5af58cc2..b4672a245 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -169,10 +169,10 @@ function(vcpkg_find_acquire_program VAR) else() set(SCRIPTNAME meson) endif() - set(PATHS ${DOWNLOADS}/tools/meson/meson-0.51.0) - set(URL "https://github.com/mesonbuild/meson/archive/0.51.0.zip") - set(ARCHIVE "meson-0.51.0.zip") - set(HASH bf1df65cde7e0e0a44e4b4be7d68de9897a77c4ea4c694f1d77fe82cd3c7e7818dc034a3313ce885ba6883b4ba6d282b7a589f665fa499d9eb79fc7a23e415cc) + set(PATHS ${DOWNLOADS}/tools/meson/meson-0.52.0) + set(URL "https://github.com/mesonbuild/meson/archive/0.52.0.zip") + set(ARCHIVE "meson-0.52.0.zip") + set(HASH 2f2657599f19933c02be2a1faa508d5b2d137fba1ccc9d68a6b6d04b8d21163c33220c673643fa444fa86e94ba010cf8a851b9e6abc096559a7c735f5099a180) elseif(VAR MATCHES "FLEX") if(CMAKE_HOST_WIN32) set(PROGNAME win_flex) -- cgit v1.2.3 From 934275b7125e89caeaeff167d567574bf41e8264 Mon Sep 17 00:00:00 2001 From: JackBoosY <47264268+JackBoosY@users.noreply.github.com> Date: Wed, 30 Oct 2019 14:23:36 +0800 Subject: [libxslt]Using vcpkg_install_nmake in Windows, support unix. (#8589) * [libxslt]Using vcpkg_install_nmake in Windows, support unix. * support PRERUN_SHELL/PRERUN_SHELL_DEBUG/PRERUN_SHELL_RELEASE * Re-trigger CI. --- scripts/cmake/vcpkg_build_nmake.cmake | 43 ++++++++++++++++++++++++++++++--- scripts/cmake/vcpkg_install_nmake.cmake | 15 +++++++++++- 2 files changed, 54 insertions(+), 4 deletions(-) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_build_nmake.cmake b/scripts/cmake/vcpkg_build_nmake.cmake index 1eb621b0e..33f1e9d1e 100644 --- a/scripts/cmake/vcpkg_build_nmake.cmake +++ b/scripts/cmake/vcpkg_build_nmake.cmake @@ -7,8 +7,11 @@ ## vcpkg_build_nmake( ## SOURCE_PATH <${SOURCE_PATH}> ## [NO_DEBUG] -## PROJECT_SUBPATH <${SUBPATH}> -## PROJECT_NAME <${MAKEFILE_NAME}> +## [PROJECT_SUBPATH <${SUBPATH}>] +## [PROJECT_NAME <${MAKEFILE_NAME}>] +## [PRERUN_SHELL <${SHELL_PATH}>] +## [PRERUN_SHELL_DEBUG <${SHELL_PATH}>] +## [PRERUN_SHELL_RELEASE <${SHELL_PATH}>] ## [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] ## [OPTIONS_RELEASE <-DOPTIMIZE=1>...] ## [OPTIONS_DEBUG <-DDEBUGGABLE=1>...] @@ -33,6 +36,15 @@ ## ### ENABLE_INSTALL ## Install binaries after build. ## +## ### PRERUN_SHELL +## Script that needs to be called before build +## +## ### PRERUN_SHELL_DEBUG +## Script that needs to be called before debug build +## +## ### PRERUN_SHELL_RELEASE +## Script that needs to be called before release build +## ## ### OPTIONS ## Additional options passed to generate during the generation. ## @@ -62,7 +74,7 @@ function(vcpkg_build_nmake) cmake_parse_arguments(_bn "ADD_BIN_TO_PATH;ENABLE_INSTALL;NO_DEBUG" "SOURCE_PATH;PROJECT_SUBPATH;PROJECT_NAME;LOGFILE_ROOT" - "OPTIONS;OPTIONS_RELEASE;OPTIONS_DEBUG" + "OPTIONS;OPTIONS_RELEASE;OPTIONS_DEBUG;PRERUN_SHELL;PRERUN_SHELL_DEBUG;PRERUN_SHELL_RELEASE" ${ARGN} ) @@ -164,6 +176,31 @@ function(vcpkg_build_nmake) string(REPLACE "${_bn_SOURCE_PATH}" "${OBJ_DIR}" DST_DIR "${DST_DIR}") file(COPY ${ONE_SOUCRCE_FILE} DESTINATION ${DST_DIR}) endforeach() + + if (_bn_PRERUN_SHELL) + message("Prerunning ${CURRENT_TRIPLET_NAME}") + vcpkg_execute_required_process( + COMMAND ${_bn_PRERUN_SHELL} + WORKING_DIRECTORY ${OBJ_DIR}${_bn_PROJECT_SUBPATH} + LOGNAME "$prerun-${CURRENT_TRIPLET_NAME}" + ) + endif() + if (BUILDTYPE STREQUAL "debug" AND _bn_PRERUN_SHELL_DEBUG) + message("Prerunning ${CURRENT_TRIPLET_NAME}") + vcpkg_execute_required_process( + COMMAND "${_bn_PRERUN_SHELL_DEBUG}" + WORKING_DIRECTORY ${OBJ_DIR}${_bn_PROJECT_SUBPATH} + LOGNAME "prerun-${CURRENT_TRIPLET_NAME}-dbg" + ) + endif() + if (BUILDTYPE STREQUAL "release" AND _bn_PRERUN_SHELL_RELEASE) + message("Prerunning ${CURRENT_TRIPLET_NAME}") + vcpkg_execute_required_process( + COMMAND ${_bn_PRERUN_SHELL_RELEASE} + WORKING_DIRECTORY ${OBJ_DIR}${_bn_PROJECT_SUBPATH} + LOGNAME "prerun-${CURRENT_TRIPLET_NAME}-dbg" + ) + endif() if (NOT _bn_ENABLE_INSTALL) message(STATUS "Building ${CURRENT_TRIPLET_NAME}") diff --git a/scripts/cmake/vcpkg_install_nmake.cmake b/scripts/cmake/vcpkg_install_nmake.cmake index 0674f9ec3..a8197751c 100644 --- a/scripts/cmake/vcpkg_install_nmake.cmake +++ b/scripts/cmake/vcpkg_install_nmake.cmake @@ -9,6 +9,9 @@ ## [NO_DEBUG] ## PROJECT_SUBPATH <${SUBPATH}> ## PROJECT_NAME <${MAKEFILE_NAME}> +## [PRERUN_SHELL <${SHELL_PATH}>] +## [PRERUN_SHELL_DEBUG <${SHELL_PATH}>] +## [PRERUN_SHELL_RELEASE <${SHELL_PATH}>] ## [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] ## [OPTIONS_RELEASE <-DOPTIMIZE=1>...] ## [OPTIONS_DEBUG <-DDEBUGGABLE=1>...] @@ -29,6 +32,15 @@ ## ### NO_DEBUG ## This port doesn't support debug mode. ## +## ### PRERUN_SHELL +## Script that needs to be called before build +## +## ### PRERUN_SHELL_DEBUG +## Script that needs to be called before debug build +## +## ### PRERUN_SHELL_RELEASE +## Script that needs to be called before release build +## ## ### OPTIONS ## Additional options passed to generate during the generation. ## @@ -53,7 +65,7 @@ function(vcpkg_install_nmake) cmake_parse_arguments(_in "NO_DEBUG" "SOURCE_PATH;PROJECT_SUBPATH;PROJECT_NAME" - "OPTIONS;OPTIONS_RELEASE;OPTIONS_DEBUG" + "OPTIONS;OPTIONS_RELEASE;OPTIONS_DEBUG;PRERUN_SHELL;PRERUN_SHELL_DEBUG;PRERUN_SHELL_RELEASE" ${ARGN} ) @@ -68,6 +80,7 @@ function(vcpkg_install_nmake) vcpkg_build_nmake(LOGFILE_ROOT ENABLE_INSTALL ${NO_DEBUG} SOURCE_PATH ${_in_SOURCE_PATH} PROJECT_SUBPATH ${_in_PROJECT_SUBPATH} PROJECT_NAME ${_in_PROJECT_NAME} + PRERUN_SHELL ${_in_PRERUN_SHELL} PRERUN_SHELL_DEBUG ${_in_PRERUN_SHELL_DEBUG} PRERUN_SHELL_RELEASE ${_in_PRERUN_SHELL_RELEASE} OPTIONS ${_in_OPTIONS} OPTIONS_RELEASE ${_in_OPTIONS_RELEASE} OPTIONS_DEBUG ${_in_OPTIONS_DEBUG} ) endfunction() -- cgit v1.2.3 From 9d1048e612a115a3982f91e6f341abefcb02d726 Mon Sep 17 00:00:00 2001 From: Phoebe <925731795@qq.com> Date: Wed, 20 Nov 2019 03:02:13 +0800 Subject: [libusb] upgrade and support arm64 (#8976) --- scripts/cmake/vcpkg_install_msbuild.cmake | 2 ++ 1 file changed, 2 insertions(+) (limited to 'scripts') diff --git a/scripts/cmake/vcpkg_install_msbuild.cmake b/scripts/cmake/vcpkg_install_msbuild.cmake index 7c2fdd836..db2874a9f 100644 --- a/scripts/cmake/vcpkg_install_msbuild.cmake +++ b/scripts/cmake/vcpkg_install_msbuild.cmake @@ -113,6 +113,8 @@ function(vcpkg_install_msbuild) set(_csc_PLATFORM Win32) elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL ARM) set(_csc_PLATFORM ARM) + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL arm64) + set(_csc_PLATFORM arm64) else() message(FATAL_ERROR "Unsupported target architecture") endif() -- cgit v1.2.3