aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authormyd7349 <myd7349@gmail.com>2019-07-02 18:13:44 +0800
committermyd7349 <myd7349@gmail.com>2019-07-02 18:13:44 +0800
commit086c72777369e9a8db0a58e4ad43360b3b613c78 (patch)
tree240047d021f2e08af14d58b8a6a5db4b6f0fda60 /scripts
parent3efdcef0e62aa6df7ff9088c001cff8d47304386 (diff)
parentf15d52becf620a0b234b4b7735579b5415f8d7b7 (diff)
downloadvcpkg-086c72777369e9a8db0a58e4ad43360b3b613c78.tar.gz
vcpkg-086c72777369e9a8db0a58e4ad43360b3b613c78.zip
Merge branch 'master' into rdkafka-init
Diffstat (limited to 'scripts')
-rw-r--r--scripts/bootstrap.ps19
-rw-r--r--scripts/bootstrap.sh2
-rw-r--r--scripts/cleanEnvironmentHelper.ps12
-rw-r--r--scripts/cmake/vcpkg_build_qmake.cmake6
-rw-r--r--scripts/cmake/vcpkg_check_features.cmake112
-rw-r--r--scripts/cmake/vcpkg_common_definitions.cmake14
-rw-r--r--scripts/cmake/vcpkg_common_functions.cmake2
-rw-r--r--scripts/cmake/vcpkg_configure_cmake.cmake11
-rw-r--r--scripts/cmake/vcpkg_configure_meson.cmake1
-rw-r--r--scripts/cmake/vcpkg_execute_build_process.cmake7
-rw-r--r--scripts/cmake/vcpkg_execute_required_process.cmake4
-rw-r--r--scripts/cmake/vcpkg_execute_required_process_repeat.cmake4
-rw-r--r--scripts/cmake/vcpkg_extract_source_archive_ex.cmake2
-rw-r--r--scripts/cmake/vcpkg_find_acquire_program.cmake54
-rw-r--r--scripts/cmake/vcpkg_fixup_cmake_targets.cmake14
-rw-r--r--scripts/cmake/vcpkg_from_git.cmake61
-rw-r--r--scripts/cmake/vcpkg_prettify_command.cmake26
-rw-r--r--scripts/ports.cmake4
-rw-r--r--scripts/toolchains/linux.cmake3
-rw-r--r--scripts/toolchains/windows.cmake6
20 files changed, 267 insertions, 77 deletions
diff --git a/scripts/bootstrap.ps1 b/scripts/bootstrap.ps1
index b195cc605..6234efaa3 100644
--- a/scripts/bootstrap.ps1
+++ b/scripts/bootstrap.ps1
@@ -339,7 +339,14 @@ if ($disableMetrics)
$platform = "x86"
$vcpkgReleaseDir = "$vcpkgSourcesPath\msbuild.x86.release"
-$architecture=(Get-WmiObject win32_operatingsystem | Select-Object osarchitecture).osarchitecture
+if($PSVersionTable.PSVersion.Major -le 2)
+{
+ $architecture=(Get-WmiObject win32_operatingsystem | Select-Object osarchitecture).osarchitecture
+}
+else
+{
+ $architecture=(Get-CimInstance win32_operatingsystem | Select-Object osarchitecture).osarchitecture
+}
if ($win64)
{
if (-not $architecture -like "*64*")
diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh
index 00d31760a..b0e4f98a5 100644
--- a/scripts/bootstrap.sh
+++ b/scripts/bootstrap.sh
@@ -100,7 +100,7 @@ vcpkgDownloadFile()
url=$1; downloadPath=$2 sha512=$3
vcpkgCheckRepoTool "curl"
rm -rf "$downloadPath.part"
- curl -L $url --create-dirs --output "$downloadPath.part" || exit 1
+ curl -L $url --create-dirs --retry 3 --output "$downloadPath.part" || exit 1
vcpkgCheckEqualFileHash $url "$downloadPath.part" $sha512
mv "$downloadPath.part" "$downloadPath"
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
diff --git a/scripts/cmake/vcpkg_build_qmake.cmake b/scripts/cmake/vcpkg_build_qmake.cmake
index 80a0aef0d..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,7 +58,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;${CURRENT_INSTALLED_DIR}/debug/bin;${CURRENT_INSTALLED_DIR}/tools/qt5;${ENV_PATH_BACKUP}")
+ 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)
@@ -81,7 +83,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;${CURRENT_INSTALLED_DIR}/bin;${CURRENT_INSTALLED_DIR}/tools/qt5;${ENV_PATH_BACKUP}")
+ 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)
diff --git a/scripts/cmake/vcpkg_check_features.cmake b/scripts/cmake/vcpkg_check_features.cmake
new file mode 100644
index 000000000..115b1501f
--- /dev/null
+++ b/scripts/cmake/vcpkg_check_features.cmake
@@ -0,0 +1,112 @@
+## # vcpkg_check_features
+##
+## Check if one or more features are a part of the package installation.
+##
+## ## Usage
+## ```cmake
+## vcpkg_check_features(
+## <feature1> <output_variable1>
+## [<feature2> <output_variable2>]
+## ...
+## )
+## ```
+##
+## `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}
+## )
+## ```
+##
+## ## Notes
+## ```cmake
+## vcpkg_check_features(<feature> <output_variable>)
+## ```
+## can be used as a replacement of:
+## ```cmake
+## if(<feature> IN_LIST FEATURES)
+## set(<output_variable> ON)
+## else()
+## set(<output_variable> OFF)
+## endif()
+## ```
+##
+## However, if you have a feature that was checked like this before:
+## ```cmake
+## if(<feature> IN_LIST FEATURES)
+## set(<output_variable> OFF)
+## else()
+## set(<output_variable> 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)
+## * [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})
+
+ 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_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/cmake/vcpkg_common_functions.cmake b/scripts/cmake/vcpkg_common_functions.cmake
index b99f8bee8..515b2bafe 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)
@@ -31,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_configure_cmake.cmake b/scripts/cmake/vcpkg_configure_cmake.cmake
index ceff199ab..ab93c3075 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>...]
@@ -50,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")
@@ -173,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}")
@@ -188,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"
@@ -207,6 +215,7 @@ function(vcpkg_configure_cmake)
"-DVCPKG_C_FLAGS_DEBUG=${VCPKG_C_FLAGS_DEBUG}"
"-DVCPKG_CRT_LINKAGE=${VCPKG_CRT_LINKAGE}"
"-DVCPKG_LINKER_FLAGS=${VCPKG_LINKER_FLAGS}"
+ "-DVCPKG_TARGET_ARCHITECTURE=${VCPKG_TARGET_ARCHITECTURE}"
"-DCMAKE_INSTALL_LIBDIR:STRING=lib"
"-DCMAKE_INSTALL_BINDIR:STRING=bin"
)
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)
diff --git a/scripts/cmake/vcpkg_execute_build_process.cmake b/scripts/cmake/vcpkg_execute_build_process.cmake
index 27e8c8163..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})
@@ -59,7 +60,8 @@ function(vcpkg_execute_build_process)
if(out_contents MATCHES "LINK : fatal error LNK1102:" OR out_contents MATCHES " fatal error C1060: "
OR err_contents MATCHES "LINK : fatal error LNK1102:" OR err_contents MATCHES " fatal error C1060: "
OR out_contents MATCHES "LINK : fatal error LNK1318: Unexpected PDB error; ACCESS_DENIED"
- OR out_contents MATCHES "LINK : fatal error LNK1104:")
+ OR out_contents MATCHES "LINK : fatal error LNK1104:"
+ OR out_contents MATCHES "LINK : fatal error LNK1201:")
# The linker ran out of memory during execution. We will try continuing once more, with parallelism disabled.
message(STATUS "Restarting Build without parallelism because memory exceeded")
set(LOG_OUT "${CURRENT_BUILDTREES_DIR}/${_ebp_LOGNAME}-out-1.log")
@@ -130,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 <num> COMMAND <cmd> [<args>...] WORKING_DIRECTORY </path/to/dir> LOGNAME <my_log_name>)
+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_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
##
diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake
index 4a77b4b8e..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)
@@ -79,9 +79,9 @@ function(vcpkg_find_acquire_program VAR)
set(PROGNAME python)
set(SUBDIR "python3")
set(PATHS ${DOWNLOADS}/tools/python/${SUBDIR})
- set(URL "https://www.python.org/ftp/python/3.5.4/python-3.5.4-embed-win32.zip")
- set(ARCHIVE "python-3.5.4-embed-win32.zip")
- set(HASH b5240fdc95088c2d7f65d2dd598650f8dd106b49589d94156bd4a078b108c6cabbe7a38ef73e2b2cf00e8312a93d2e587eac2c54ce85540d3c7a26cc60013156)
+ 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)
else()
set(PROGNAME python3)
set(BREW_PACKAGE_NAME "python")
@@ -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")
@@ -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)
@@ -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()
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/<port>/*targets-debug.cmake files and move them to /share/<port>.
# Removes all /debug/share/<port>/*targets.cmake and /debug/share/<port>/*config.cmake
#
-# Transform all references matching /bin/*.exe to /tools/<port>/*.exe
+# Transform all references matching /bin/*.exe to /tools/<port>/*.exe on Windows
+# Transform all references matching /bin/* to /tools/<port>/* 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}")
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 <SOURCE_PATH>
## URL <https://android.googlesource.com/platform/external/fdlibm>
## REF <59f7335e4d...>
-## SHA512 <abcdef123...>
## [PATCHES <patch1.patch> <patch2.patch>...]
## )
## ```
@@ -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(
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()
diff --git a/scripts/ports.cmake b/scripts/ports.cmake
index 7a5f2749f..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()
@@ -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)
diff --git a/scripts/toolchains/linux.cmake b/scripts/toolchains/linux.cmake
index b9cbc0ff3..70f224da9 100644
--- a/scripts/toolchains/linux.cmake
+++ b/scripts/toolchains/linux.cmake
@@ -4,6 +4,9 @@ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
set(CMAKE_CROSSCOMPILING OFF CACHE BOOL "")
endif()
set(CMAKE_SYSTEM_NAME Linux CACHE STRING "")
+if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ set(CMAKE_SYSTEM_PROCESSOR x86_64 CACHE STRING "")
+endif()
get_property( _CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE )
if(NOT _CMAKE_IN_TRY_COMPILE)
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()