aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorGriffin Downs <35574547+grdowns@users.noreply.github.com>2019-04-12 02:30:59 -0700
committerGitHub <noreply@github.com>2019-04-12 02:30:59 -0700
commit0e000644053015b7f7a0985e14f0bd384c847d17 (patch)
tree7e456fd12b3bf281b28587338f1650017c8b32ab /scripts
parent93ce6b4f27602cd18f4327c2cfd84093d472b8bb (diff)
parent39ba5b2b30c9f7b49e777a62093cdd49d05b53a9 (diff)
downloadvcpkg-0e000644053015b7f7a0985e14f0bd384c847d17.tar.gz
vcpkg-0e000644053015b7f7a0985e14f0bd384c847d17.zip
Merge branch 'master' into master
Diffstat (limited to 'scripts')
-rw-r--r--scripts/bootstrap.sh10
-rw-r--r--scripts/buildsystems/msbuild/applocal.ps19
-rw-r--r--scripts/buildsystems/vcpkg.cmake55
-rw-r--r--scripts/cmake/vcpkg_add_to_path.cmake6
-rw-r--r--scripts/cmake/vcpkg_build_cmake.cmake29
-rw-r--r--scripts/cmake/vcpkg_build_msbuild.cmake2
-rw-r--r--scripts/cmake/vcpkg_build_qmake.cmake11
-rw-r--r--scripts/cmake/vcpkg_configure_cmake.cmake17
-rw-r--r--scripts/cmake/vcpkg_configure_qmake.cmake2
-rw-r--r--scripts/cmake/vcpkg_download_distfile.cmake20
-rw-r--r--scripts/cmake/vcpkg_execute_required_process.cmake1
-rw-r--r--scripts/cmake/vcpkg_find_acquire_program.cmake17
-rw-r--r--scripts/cmake/vcpkg_fixup_cmake_targets.cmake33
-rw-r--r--scripts/cmake/vcpkg_from_gitlab.cmake6
-rw-r--r--scripts/cmake/vcpkg_install_msbuild.cmake2
-rw-r--r--scripts/cmake/vcpkg_test_cmake.cmake89
-rw-r--r--scripts/toolchains/windows.cmake1
-rw-r--r--scripts/vcpkgTools.xml32
18 files changed, 217 insertions, 125 deletions
diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh
index 7a1b2777b..f0bfb9839 100644
--- a/scripts/bootstrap.sh
+++ b/scripts/bootstrap.sh
@@ -2,12 +2,15 @@
vcpkgDisableMetrics="OFF"
vcpkgUseSystem=false
+vcpkgAllowAppleClang=OFF
for var in "$@"
do
if [ "$var" = "-disableMetrics" -o "$var" = "--disableMetrics" ]; then
vcpkgDisableMetrics="ON"
elif [ "$var" = "-useSystemBinaries" -o "$var" = "--useSystemBinaries" ]; then
vcpkgUseSystem=true
+ elif [ "$var" = "-allowAppleClang" -o "$var" = "--allowAppleClang" ]; then
+ vcpkgAllowAppleClang=ON
elif [ "$var" = "-help" -o "$var" = "--help" ]; then
echo "Usage: ./bootstrap-vcpkg.sh [options]"
echo
@@ -15,6 +18,7 @@ do
echo " -help Display usage help"
echo " -disableMetrics Do not build metrics reporting into the executable"
echo " -useSystemBinaries Force use of the system utilities for building vcpkg"
+ echo " -allowAppleClang Set VCPKG_ALLOW_APPLE_CLANG to build vcpkg in apple with clang anyway"
exit 1
else
echo "Unknown argument $var. Use '-help' for help."
@@ -78,7 +82,7 @@ vcpkgCheckEqualFileHash()
echo " File path: [ $downloadPath ]"
echo " Expected hash: [ $sha512 ]"
echo " Actual hash: [ $actualHash ]"
- exit
+ exit 1
fi
}
@@ -234,8 +238,8 @@ 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")
-(cd "$buildDir" && "$cmakeExe" --build .)
+(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" && "$cmakeExe" --build .) || exit 1
rm -rf "$vcpkgRootDir/vcpkg"
cp "$buildDir/vcpkg" "$vcpkgRootDir/"
diff --git a/scripts/buildsystems/msbuild/applocal.ps1 b/scripts/buildsystems/msbuild/applocal.ps1
index 42bad4bcd..cf363f12e 100644
--- a/scripts/buildsystems/msbuild/applocal.ps1
+++ b/scripts/buildsystems/msbuild/applocal.ps1
@@ -15,7 +15,14 @@ if ($copiedFilesLog)
# Note: this function signature is depended upon by the qtdeploy.ps1 script introduced in 5.7.1-7
function deployBinary([string]$targetBinaryDir, [string]$SourceDir, [string]$targetBinaryName) {
if (Test-Path "$targetBinaryDir\$targetBinaryName") {
- Write-Verbose " ${targetBinaryName}: already present"
+ $sourceModTime = (Get-Item $SourceDir\$targetBinaryName).LastWriteTime
+ $destModTime = (Get-Item $targetBinaryDir\$targetBinaryName).LastWriteTime
+ if ($destModTime -lt $sourceModTime) {
+ Write-Verbose " ${targetBinaryName}: Updating $SourceDir\$targetBinaryName"
+ Copy-Item "$SourceDir\$targetBinaryName" $targetBinaryDir
+ } else {
+ Write-Verbose " ${targetBinaryName}: already present"
+ }
}
else {
Write-Verbose " ${targetBinaryName}: Copying $SourceDir\$targetBinaryName"
diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake
index 4ffb123d4..b2a589421 100644
--- a/scripts/buildsystems/vcpkg.cmake
+++ b/scripts/buildsystems/vcpkg.cmake
@@ -95,26 +95,27 @@ if(NOT EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}" AND NOT _CMAKE_I
message(WARNING "There are no libraries installed for the Vcpkg triplet ${VCPKG_TARGET_TRIPLET}.")
endif()
-if(CMAKE_BUILD_TYPE MATCHES "^Debug$" OR NOT DEFINED CMAKE_BUILD_TYPE)
+if(CMAKE_BUILD_TYPE MATCHES "^Debug$" OR NOT DEFINED CMAKE_BUILD_TYPE) #Debug build: Put Debug paths before Release paths.
list(APPEND CMAKE_PREFIX_PATH
- ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug
+ ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}
)
list(APPEND CMAKE_LIBRARY_PATH
- ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib/manual-link
+ ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib/manual-link ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/manual-link
)
list(APPEND CMAKE_FIND_ROOT_PATH
- ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug
+ ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}
+ )
+else() #Release build: Put Release paths before Debug paths. Debug Paths are required so that CMake generates correct info in autogenerated target files.
+ list(APPEND CMAKE_PREFIX_PATH
+ ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET} ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug
+ )
+ list(APPEND CMAKE_LIBRARY_PATH
+ ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/manual-link ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib/manual-link
+ )
+ list(APPEND CMAKE_FIND_ROOT_PATH
+ ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET} ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug
)
endif()
-list(APPEND CMAKE_PREFIX_PATH
- ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}
-)
-list(APPEND CMAKE_FIND_ROOT_PATH
- ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}
-)
-list(APPEND CMAKE_LIBRARY_PATH
- ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/manual-link
-)
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
set(CMAKE_SYSTEM_IGNORE_PATH
@@ -188,9 +189,11 @@ macro(find_package name)
include(${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/share/${_vcpkg_lowercase_name}/vcpkg-cmake-wrapper.cmake)
elseif("${name}" STREQUAL "Boost" AND EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include/boost")
# Checking for the boost headers disables this wrapper unless the user has installed at least one boost library
- unset(Boost_USE_STATIC_LIBS)
- unset(Boost_USE_MULTITHREADED)
+ set(Boost_USE_STATIC_LIBS OFF)
+ set(Boost_USE_MULTITHREADED ON)
unset(Boost_USE_STATIC_RUNTIME)
+ set(Boost_NO_BOOST_CMAKE ON)
+ unset(Boost_USE_STATIC_RUNTIME CACHE)
set(Boost_COMPILER "-vc140")
_find_package(${ARGV})
elseif("${name}" STREQUAL "ICU" AND EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include/unicode/utf.h")
@@ -204,28 +207,6 @@ macro(find_package name)
else()
_find_package(${ARGV})
endif()
- elseif("${name}" STREQUAL "TIFF" AND EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include/tiff.h")
- _find_package(${ARGV})
- find_package(LibLZMA)
- if(TARGET TIFF::TIFF)
- set_property(TARGET TIFF::TIFF APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${LIBLZMA_LIBRARIES})
- endif()
- if(TIFF_LIBRARIES)
- list(APPEND TIFF_LIBRARIES ${LIBLZMA_LIBRARIES})
- endif()
- elseif(("${name}" STREQUAL "HDF5" OR "${name}" STREQUAL "hdf5") AND NOT PROJECT_NAME STREQUAL "VTK" AND EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include/hdf5.h")
- # This is a hack to make VTK work. TODO: find another way to suppress the built-in find module.
- _find_package(${ARGV} CONFIG)
- # Fill in missing static/shared targets
- foreach(HDF5TARGET hdf5 hdf5_hl hdf5_cpp hdf5_hl_cpp)
- if(TARGET hdf5::${HDF5TARGET}-static AND NOT TARGET hdf5::${HDF5TARGET}-shared)
- _add_library(hdf5::${HDF5TARGET}-shared INTERFACE IMPORTED)
- set_target_properties(hdf5::${HDF5TARGET}-shared PROPERTIES INTERFACE_LINK_LIBRARIES "hdf5::${HDF5TARGET}-static")
- elseif(TARGET hdf5::${HDF5TARGET}-shared AND NOT TARGET hdf5::${HDF5TARGET}-static)
- _add_library(hdf5::${HDF5TARGET}-static INTERFACE IMPORTED)
- set_target_properties(hdf5::${HDF5TARGET}-static PROPERTIES INTERFACE_LINK_LIBRARIES "hdf5::${HDF5TARGET}-shared")
- endif()
- endforeach()
elseif("${name}" STREQUAL "GSL" AND EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include/gsl")
_find_package(${ARGV})
if(GSL_FOUND AND TARGET GSL::gsl)
diff --git a/scripts/cmake/vcpkg_add_to_path.cmake b/scripts/cmake/vcpkg_add_to_path.cmake
index 6890dfe31..7ab08c88e 100644
--- a/scripts/cmake/vcpkg_add_to_path.cmake
+++ b/scripts/cmake/vcpkg_add_to_path.cmake
@@ -15,6 +15,12 @@
## Prepends the directory.
##
## The default is to append.
+##
+## ## Examples:
+## * [curl](https://github.com/Microsoft/vcpkg/blob/master/ports/curl/portfile.cmake#L75)
+## * [folly](https://github.com/Microsoft/vcpkg/blob/master/ports/folly/portfile.cmake#L15)
+## * [z3](https://github.com/Microsoft/vcpkg/blob/master/ports/z3/portfile.cmake#L13)
+##
function(vcpkg_add_to_path)
if(NOT "${ARGC}" STREQUAL "1" AND NOT "${ARGC}" STREQUAL "2")
message(FATAL_ERROR "vcpkg_add_to_path() only accepts 1 or 2 arguments.")
diff --git a/scripts/cmake/vcpkg_build_cmake.cmake b/scripts/cmake/vcpkg_build_cmake.cmake
index 2f0da07f9..e86632c7e 100644
--- a/scripts/cmake/vcpkg_build_cmake.cmake
+++ b/scripts/cmake/vcpkg_build_cmake.cmake
@@ -162,6 +162,33 @@ function(vcpkg_build_cmake)
endif()
endwhile()
endif()
+ elseif(out_contents MATCHES "mt : general error c101008d: ")
+ # Antivirus workaround - occasionally files are locked and cause mt.exe to fail
+ set(ITERATION 0)
+ while (ITERATION LESS 3 AND out_contents MATCHES "mt : general error c101008d: ")
+ MATH(EXPR ITERATION "${ITERATION}+1")
+ message(STATUS "Restarting Build ${TARGET_TRIPLET}-${SHORT_BUILDTYPE} because of mt.exe file locking issue. Iteration: ${ITERATION}")
+ execute_process(
+ COMMAND ${CMAKE_COMMAND} --build . --config ${CONFIG} ${TARGET_PARAM} -- ${BUILD_ARGS}
+ OUTPUT_FILE "${LOGPREFIX}-out-${ITERATION}.log"
+ ERROR_FILE "${LOGPREFIX}-err-${ITERATION}.log"
+ RESULT_VARIABLE error_code
+ WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${SHORT_BUILDTYPE})
+
+ if(error_code)
+ file(READ "${LOGPREFIX}-out-${ITERATION}.log" out_contents)
+ file(READ "${LOGPREFIX}-err-${ITERATION}.log" err_contents)
+
+ if(out_contents)
+ list(APPEND LOGS "${LOGPREFIX}-out-${ITERATION}.log")
+ endif()
+ if(err_contents)
+ list(APPEND LOGS "${LOGPREFIX}-err-${ITERATION}.log")
+ endif()
+ else()
+ break()
+ endif()
+ endwhile()
endif()
if(error_code)
@@ -170,7 +197,7 @@ function(vcpkg_build_cmake)
file(TO_NATIVE_PATH "${LOG}" NATIVE_LOG)
list(APPEND STRINGIFIED_LOGS " ${NATIVE_LOG}\n")
endforeach()
- set(_eb_COMMAND ${CMAKE_COMMAND} --build . --config ${CONFIG} ${TARGET_PARAM} -- ${BUILD_ARGS} ${NO_PARALLEL_ARG})
+ set(_eb_COMMAND ${CMAKE_COMMAND} --build . --config ${CONFIG} ${TARGET_PARAM} -- ${BUILD_ARGS} ${PARALLEL_ARG})
set(_eb_WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${SHORT_BUILDTYPE})
message(FATAL_ERROR
" Command failed: ${_eb_COMMAND}\n"
diff --git a/scripts/cmake/vcpkg_build_msbuild.cmake b/scripts/cmake/vcpkg_build_msbuild.cmake
index 7a65127f0..50432f8fa 100644
--- a/scripts/cmake/vcpkg_build_msbuild.cmake
+++ b/scripts/cmake/vcpkg_build_msbuild.cmake
@@ -1,6 +1,6 @@
## # vcpkg_build_msbuild
##
-## Build an msbuild-based project. Deprecated in favor of `vcpkg_install_msbuild()`.
+## Build a msbuild-based project. Deprecated in favor of `vcpkg_install_msbuild()`.
##
## ## Usage
## ```cmake
diff --git a/scripts/cmake/vcpkg_build_qmake.cmake b/scripts/cmake/vcpkg_build_qmake.cmake
index 947178686..5b686527d 100644
--- a/scripts/cmake/vcpkg_build_qmake.cmake
+++ b/scripts/cmake/vcpkg_build_qmake.cmake
@@ -9,7 +9,14 @@
function(vcpkg_build_qmake)
cmake_parse_arguments(_csc "SKIP_MAKEFILES" "BUILD_LOGNAME" "TARGETS;RELEASE_TARGETS;DEBUG_TARGETS" ${ARGN})
- vcpkg_find_acquire_program(JOM)
+
+ if(CMAKE_HOST_WIN32)
+ vcpkg_find_acquire_program(JOM)
+ set(INVOKE "${JOM}")
+ else()
+ find_program(MAKE make)
+ set(INVOKE "${MAKE}")
+ endif()
# Make sure that the linker finds the libraries used
set(ENV_PATH_BACKUP "$ENV{PATH}")
@@ -29,7 +36,7 @@ function(vcpkg_build_qmake)
function(run_jom TARGETS LOG_PREFIX LOG_SUFFIX)
message(STATUS "Package ${LOG_PREFIX}-${TARGET_TRIPLET}-${LOG_SUFFIX}")
vcpkg_execute_required_process(
- COMMAND ${JOM} ${TARGETS}
+ COMMAND ${INVOKE} ${TARGETS}
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${LOG_SUFFIX}
LOGNAME package-${LOG_PREFIX}-${TARGET_TRIPLET}-${LOG_SUFFIX}
)
diff --git a/scripts/cmake/vcpkg_configure_cmake.cmake b/scripts/cmake/vcpkg_configure_cmake.cmake
index f7b81de93..ceff199ab 100644
--- a/scripts/cmake/vcpkg_configure_cmake.cmake
+++ b/scripts/cmake/vcpkg_configure_cmake.cmake
@@ -109,7 +109,24 @@ function(vcpkg_configure_cmake)
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64" AND VCPKG_PLATFORM_TOOLSET MATCHES "v141")
set(GENERATOR "Visual Studio 15 2017")
set(ARCH "ARM64")
+
+ elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x86" AND VCPKG_PLATFORM_TOOLSET MATCHES "v142")
+ set(GENERATOR "Visual Studio 16 2019")
+ set(ARCH "Win32")
+ elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x64" AND VCPKG_PLATFORM_TOOLSET MATCHES "v142")
+ set(GENERATOR "Visual Studio 16 2019")
+ set(ARCH "x64")
+ elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" AND VCPKG_PLATFORM_TOOLSET MATCHES "v142")
+ set(GENERATOR "Visual Studio 16 2019")
+ set(ARCH "ARM")
+ elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64" AND VCPKG_PLATFORM_TOOLSET MATCHES "v142")
+ set(GENERATOR "Visual Studio 16 2019")
+ set(ARCH "ARM64")
+
else()
+ 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}")
endif()
diff --git a/scripts/cmake/vcpkg_configure_qmake.cmake b/scripts/cmake/vcpkg_configure_qmake.cmake
index 3aa30e70d..11178174e 100644
--- a/scripts/cmake/vcpkg_configure_qmake.cmake
+++ b/scripts/cmake/vcpkg_configure_qmake.cmake
@@ -17,7 +17,7 @@ function(vcpkg_configure_qmake)
cmake_parse_arguments(_csc "" "SOURCE_PATH" "OPTIONS" ${ARGN})
# Find qmake executable
- find_program(QMAKE_COMMAND NAMES qmake.exe PATHS ${CURRENT_INSTALLED_DIR}/tools/qt5)
+ find_program(QMAKE_COMMAND NAMES qmake PATHS ${CURRENT_INSTALLED_DIR}/tools/qt5)
if(NOT QMAKE_COMMAND)
message(FATAL_ERROR "vcpkg_configure_qmake: unable to find qmake.")
diff --git a/scripts/cmake/vcpkg_download_distfile.cmake b/scripts/cmake/vcpkg_download_distfile.cmake
index 949036c88..72016b8c9 100644
--- a/scripts/cmake/vcpkg_download_distfile.cmake
+++ b/scripts/cmake/vcpkg_download_distfile.cmake
@@ -33,6 +33,11 @@
##
## This switch is only valid when building with the `--head` command line flag.
##
+## ### HEADERS
+## A list of headers to append to the download request. This can be used for authentication during a download.
+##
+## Headers should be specified as "<header-name>: <header-value>".
+##
## ## Notes
## The helper [`vcpkg_from_github`](vcpkg_from_github.md) should be used for downloading from GitHub projects.
##
@@ -44,7 +49,7 @@
function(vcpkg_download_distfile VAR)
set(options SKIP_SHA512)
set(oneValueArgs FILENAME SHA512)
- set(multipleValuesArgs URLS)
+ set(multipleValuesArgs URLS HEADERS)
cmake_parse_arguments(vcpkg_download_distfile "${options}" "${oneValueArgs}" "${multipleValuesArgs}" ${ARGN})
if(NOT DEFINED vcpkg_download_distfile_URLS)
@@ -110,10 +115,16 @@ function(vcpkg_download_distfile VAR)
if(_VCPKG_DOWNLOAD_TOOL STREQUAL "ARIA2" AND NOT SAMPLE_URL MATCHES "aria2")
vcpkg_find_acquire_program("ARIA2")
message(STATUS "Downloading ${vcpkg_download_distfile_FILENAME}...")
+ if(vcpkg_download_distfile_HEADERS)
+ foreach(header ${vcpkg_download_distfile_HEADERS})
+ list(APPEND request_headers "--header=${header}")
+ endforeach()
+ endif()
execute_process(
COMMAND ${ARIA2} ${vcpkg_download_distfile_URLS}
-o temp/${vcpkg_download_distfile_FILENAME}
-l download-${vcpkg_download_distfile_FILENAME}-detailed.log
+ ${request_headers}
OUTPUT_FILE download-${vcpkg_download_distfile_FILENAME}-out.log
ERROR_FILE download-${vcpkg_download_distfile_FILENAME}-err.log
RESULT_VARIABLE error_code
@@ -140,7 +151,12 @@ function(vcpkg_download_distfile VAR)
else()
foreach(url IN LISTS vcpkg_download_distfile_URLS)
message(STATUS "Downloading ${url}...")
- file(DOWNLOAD ${url} "${download_file_path_part}" STATUS download_status)
+ if(vcpkg_download_distfile_HEADERS)
+ foreach(header ${vcpkg_download_distfile_HEADERS})
+ list(APPEND request_headers HTTPHEADER ${header})
+ endforeach()
+ endif()
+ file(DOWNLOAD ${url} "${download_file_path_part}" STATUS download_status ${request_headers})
list(GET download_status 0 status_code)
if (NOT "${status_code}" STREQUAL "0")
message(STATUS "Downloading ${url}... Failed. Status: ${download_status}")
diff --git a/scripts/cmake/vcpkg_execute_required_process.cmake b/scripts/cmake/vcpkg_execute_required_process.cmake
index 5b8922c14..2e9ba7058 100644
--- a/scripts/cmake/vcpkg_execute_required_process.cmake
+++ b/scripts/cmake/vcpkg_execute_required_process.cmake
@@ -56,6 +56,7 @@ function(vcpkg_execute_required_process)
message(FATAL_ERROR
" Command failed: ${vcpkg_execute_required_process_COMMAND}\n"
" Working Directory: ${vcpkg_execute_required_process_WORKING_DIRECTORY}\n"
+ " Error code: ${error_code}\n"
" See logs for more information:\n"
${STRINGIFIED_LOGS}
)
diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake
index 1f856b69e..1642bf3b4 100644
--- a/scripts/cmake/vcpkg_find_acquire_program.cmake
+++ b/scripts/cmake/vcpkg_find_acquire_program.cmake
@@ -24,6 +24,7 @@
## - MESON
## - NASM
## - NINJA
+## - NUGET
## - YASM
## - ARIA2 (Downloader)
##
@@ -130,6 +131,14 @@ function(vcpkg_find_acquire_program VAR)
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")
+ set(BREW_PACKAGE_NAME "nuget")
+ set(URL "https://dist.nuget.org/win-x86-commandline/v4.8.1/nuget.exe")
+ set(ARCHIVE "nuget.exe")
+ set(NOEXTRACT ON)
+ set(HASH 42cb744338af8decc033a75bce5b4c4df28e102bafc45f9a8ba86d7bc010f5b43ebacae80d7b28c4f85ac900eefc2a349620ae65f27f6ca1c21c53b63b92924b)
elseif(VAR MATCHES "MESON")
set(PROGNAME meson)
set(REQUIRED_INTERPRETER PYTHON3)
@@ -140,10 +149,10 @@ function(vcpkg_find_acquire_program VAR)
else()
set(SCRIPTNAME meson)
endif()
- set(PATHS ${DOWNLOADS}/tools/meson/meson-0.47.1)
- set(URL "https://github.com/mesonbuild/meson/archive/0.47.1.zip")
- set(ARCHIVE "meson-0.47.1.zip")
- set(HASH 0f6462835583a51707bee82d852018cfcb7444c0dad95b2ba08814e500a5cfe3f731dc6c1fb73c765d1120ee2a2d6600e15d8d393bab1993e84bd4354b2e6855)
+ 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)
elseif(VAR MATCHES "FLEX")
if(CMAKE_HOST_WIN32)
set(PROGNAME win_flex)
diff --git a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake
index ea9923df3..982f414b6 100644
--- a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake
+++ b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake
@@ -6,6 +6,9 @@
#
# Transform all references matching /bin/*.exe to /tools/<port>/*.exe
#
+# Fix ${_IMPORT_PREFIX} in auto generated targets to be one folder deeper.
+# Replace ${CURRENT_INSTALLED_DIR} with ${_IMPORT_PREFIX} in configs/targets.
+#
# ::
# vcpkg_fixup_cmake_targets([CONFIG_PATH <config_path>])
#
@@ -126,32 +129,22 @@ function(vcpkg_fixup_cmake_targets)
endforeach()
endif()
- file(GLOB_RECURSE MAIN_TARGETS "${RELEASE_SHARE}/*[Tt]argets.cmake")
- foreach(MAIN_TARGET IN LISTS MAIN_TARGETS)
- file(READ ${MAIN_TARGET} _contents)
+ #Fix ${_IMPORT_PREFIX} in cmake generated targets and configs;
+ #Since those can be renamed we have to check in every *.cmake
+ file(GLOB_RECURSE MAIN_CMAKES "${RELEASE_SHARE}/*.cmake")
+ foreach(MAIN_CMAKE IN LISTS MAIN_CMAKES)
+ file(READ ${MAIN_CMAKE} _contents)
string(REGEX REPLACE
"get_filename_component\\(_IMPORT_PREFIX \"\\\${CMAKE_CURRENT_LIST_FILE}\" PATH\\)(\nget_filename_component\\(_IMPORT_PREFIX \"\\\${_IMPORT_PREFIX}\" PATH\\))*"
"get_filename_component(_IMPORT_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)\nget_filename_component(_IMPORT_PREFIX \"\${_IMPORT_PREFIX}\" PATH)\nget_filename_component(_IMPORT_PREFIX \"\${_IMPORT_PREFIX}\" PATH)"
- _contents "${_contents}")
- string(REPLACE "${CURRENT_INSTALLED_DIR}" "_INVALID_ROOT_" _contents "${_contents}")
- string(REGEX REPLACE "_INVALID_ROOT_/[^\";>]*" "" _contents "${_contents}")
- string(REGEX REPLACE ";;+" ";" _contents "${_contents}")
- string(REGEX REPLACE "\";\"" "\"\"" _contents "${_contents}")
- file(WRITE ${MAIN_TARGET} "${_contents}")
- endforeach()
-
- file(GLOB_RECURSE MAIN_CONFIGS "${RELEASE_SHARE}/*[Cc]onfig.cmake")
- foreach(MAIN_CONFIG IN LISTS MAIN_CONFIGS)
- file(READ ${MAIN_CONFIG} _contents)
- string(REGEX REPLACE
- "get_filename_component\\(_IMPORT_PREFIX \"\\\${CMAKE_CURRENT_LIST_FILE}\" PATH\\)(\nget_filename_component\\(_IMPORT_PREFIX \"\\\${_IMPORT_PREFIX}\" PATH\\))*"
- "get_filename_component(_IMPORT_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)\nget_filename_component(_IMPORT_PREFIX \"\${_IMPORT_PREFIX}\" PATH)\nget_filename_component(_IMPORT_PREFIX \"\${_IMPORT_PREFIX}\" PATH)"
- _contents "${_contents}")
- string(REGEX REPLACE
+ _contents "${_contents}") # see #1044 for details why this replacement is necessary. See #4782 why it must be a regex.
+ string(REGEX REPLACE
"get_filename_component\\(PACKAGE_PREFIX_DIR \"\\\${CMAKE_CURRENT_LIST_DIR}/\\.\\./(\\.\\./)*\" ABSOLUTE\\)"
"get_filename_component(PACKAGE_PREFIX_DIR \"\${CMAKE_CURRENT_LIST_DIR}/../../\" ABSOLUTE)"
_contents "${_contents}")
- file(WRITE ${MAIN_CONFIG} "${_contents}")
+ #Fix wrongly absolute paths to install dir with the correct dir using ${_IMPORT_PREFIX}
+ string(REPLACE "${CURRENT_INSTALLED_DIR}" [[${_IMPORT_PREFIX}]] _contents "${_contents}")
+ file(WRITE ${MAIN_CMAKE} "${_contents}")
endforeach()
# Remove /debug/<target_path>/ if it's empty.
diff --git a/scripts/cmake/vcpkg_from_gitlab.cmake b/scripts/cmake/vcpkg_from_gitlab.cmake
index f13bc054c..6bbe81ed6 100644
--- a/scripts/cmake/vcpkg_from_gitlab.cmake
+++ b/scripts/cmake/vcpkg_from_gitlab.cmake
@@ -56,7 +56,11 @@
##
## This exports the `VCPKG_HEAD_VERSION` variable during head builds.
##
-
+## ## Examples:
+## * [curl][https://github.com/Microsoft/vcpkg/blob/master/ports/curl/portfile.cmake#L75]
+## * [folly](https://github.com/Microsoft/vcpkg/blob/master/ports/folly/portfile.cmake#L15)
+## * [z3](https://github.com/Microsoft/vcpkg/blob/master/ports/z3/portfile.cmake#L13)
+##
function(vcpkg_from_gitlab)
set(oneValueArgs OUT_SOURCE_PATH GITLAB_URL USER REPO REF SHA512 HEAD_REF)
set(multipleValuesArgs PATCHES)
diff --git a/scripts/cmake/vcpkg_install_msbuild.cmake b/scripts/cmake/vcpkg_install_msbuild.cmake
index 11bcdf189..92c84bf0b 100644
--- a/scripts/cmake/vcpkg_install_msbuild.cmake
+++ b/scripts/cmake/vcpkg_install_msbuild.cmake
@@ -1,6 +1,6 @@
## # vcpkg_install_msbuild
##
-## Build and install an msbuild-based project. This replaces `vcpkg_build_msbuild()`.
+## Build and install a msbuild-based project. This replaces `vcpkg_build_msbuild()`.
##
## ## Usage
## ```cmake
diff --git a/scripts/cmake/vcpkg_test_cmake.cmake b/scripts/cmake/vcpkg_test_cmake.cmake
index 29654346a..20343bf64 100644
--- a/scripts/cmake/vcpkg_test_cmake.cmake
+++ b/scripts/cmake/vcpkg_test_cmake.cmake
@@ -16,43 +16,64 @@
## Indicates that the library expects to be found via built-in CMake targets.
##
function(vcpkg_test_cmake)
- cmake_parse_arguments(_tc "MODULE" "PACKAGE_NAME" "" ${ARGN})
+ # The following issues need to be addressed before re-enabling this function.
+ # 1. Use the actual vcpkg toolchain file.
+ # 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()
- 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()
+ cmake_parse_arguments(_tc "MODULE" "PACKAGE_NAME" "" ${ARGN})
- if(VCPKG_PLATFORM_TOOLSET STREQUAL "v142")
- message(STATUS "Skipping CMake integration test due to v142 / CMake interaction issues")
- return()
- endif()
+ 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()
- message(STATUS "Performing CMake integration test")
- file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test)
- file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test)
+ if(VCPKG_PLATFORM_TOOLSET STREQUAL "v142")
+ message(STATUS "Skipping CMake integration test due to v142 / CMake interaction issues")
+ return()
+ endif()
- # 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")
+ message(STATUS "Performing CMake integration test")
+ file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test)
+ file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-test)
- # Run cmake config with a generated CMakeLists.txt
- set(LOGPREFIX "${CURRENT_BUILDTREES_DIR}/test-cmake-${TARGET_TRIPLET}")
- execute_process(
- COMMAND ${CMAKE_COMMAND} .
- 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()
+ #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()
diff --git a/scripts/toolchains/windows.cmake b/scripts/toolchains/windows.cmake
index 266e023b1..12b1ae7f9 100644
--- a/scripts/toolchains/windows.cmake
+++ b/scripts/toolchains/windows.cmake
@@ -9,7 +9,6 @@ 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()
- set(CHARSET_FLAG "/utf-8")
if(VCPKG_PLATFORM_TOOLSET MATCHES "v120")
# VS 2013 does not support /utf-8
set(CHARSET_FLAG)
diff --git a/scripts/vcpkgTools.xml b/scripts/vcpkgTools.xml
index 18ca741c2..15f891979 100644
--- a/scripts/vcpkgTools.xml
+++ b/scripts/vcpkgTools.xml
@@ -1,25 +1,25 @@
<?xml version="1.0"?>
<tools version="2">
<tool name="cmake" os="windows">
- <version>3.12.4</version>
- <exeRelativePath>cmake-3.12.4-win32-x86\bin\cmake.exe</exeRelativePath>
- <url>https://github.com/Kitware/CMake/releases/download/v3.12.4/cmake-3.12.4-win32-x86.zip</url>
- <sha512>ca7097c5917101c39d5fa5325cd256ad3aa616a7e5811915cb2869c24961dc133726015b3576908fbd0666f89c8e31886bed9cf6b532a3fe44681d5245bc25c7</sha512>
- <archiveName>cmake-3.12.4-win32-x86.zip</archiveName>
+ <version>3.14.0</version>
+ <exeRelativePath>cmake-3.14.0-win32-x86\bin\cmake.exe</exeRelativePath>
+ <url>https://github.com/Kitware/CMake/releases/download/v3.14.0/cmake-3.14.0-win32-x86.zip</url>
+ <sha512>60eb6a0790883da4152a957bd1133405f620f4b7a073af3bea97695b3ef8c22c41d9b90e45815f2a896df5be0cd6dedb73a6df5f17a42761ca8f457c9f3b708c</sha512>
+ <archiveName>cmake-3.14.0-win32-x86.zip</archiveName>
</tool>
<tool name="cmake" os="osx">
- <version>3.12.4</version>
- <exeRelativePath>cmake-3.12.4-Darwin-x86_64/CMake.app/Contents/bin/cmake</exeRelativePath>
- <url>https://github.com/Kitware/CMake/releases/download/v3.12.4/cmake-3.12.4-Darwin-x86_64.tar.gz</url>
- <sha512>67ce23394d9679818ab0f2792f5d585c8c6f385e18584d488a47d48b768d1ee20b58247d22945aeff1ff9f84b7e843457dac98a50801ac3068ab1fbcbe0b0f45</sha512>
- <archiveName>cmake-3.12.4-Darwin-x86_64.tar.gz</archiveName>
+ <version>3.14.0</version>
+ <exeRelativePath>cmake-3.14.0-Darwin-x86_64/CMake.app/Contents/bin/cmake</exeRelativePath>
+ <url>https://github.com/Kitware/CMake/releases/download/v3.14.0/cmake-3.14.0-Darwin-x86_64.tar.gz</url>
+ <sha512>a5a7217a049be3bb2ef5c93292b1d92eb4dd5ec6ab2dd04984aae01d2732eb343cea4f9741b333a5e21a27eb7934f568f780f3558e7ff870150c3309fc4656b3</sha512>
+ <archiveName>cmake-3.14.0-Darwin-x86_64.tar.gz</archiveName>
</tool>
<tool name="cmake" os="linux">
- <version>3.12.4</version>
- <exeRelativePath>cmake-3.12.4-Linux-x86_64/bin/cmake</exeRelativePath>
- <url>https://github.com/Kitware/CMake/releases/download/v3.12.4/cmake-3.12.4-Linux-x86_64.tar.gz</url>
- <sha512>ee9eded0c72e06ef99554f09553d40842478700ca6f07319c28247f1d45301708c703c65ad617cf618833257bacc3b9f63a54b32288bfb619d38758669dcd20f</sha512>
- <archiveName>cmake-3.12.4-Linux-x86_64.tar.gz</archiveName>
+ <version>3.14.0</version>
+ <exeRelativePath>cmake-3.14.0-Linux-x86_64/bin/cmake</exeRelativePath>
+ <url>https://github.com/Kitware/CMake/releases/download/v3.14.0/cmake-3.14.0-Linux-x86_64.tar.gz</url>
+ <sha512>e687c0f3acfb15c880ddac67e2821907f833cb900c6ecedb4ab5df5102604d82753c948e3c7dca6e5bcce6278a09b7d577b1afade2e133aec5b2057ac48d3c74</sha512>
+ <archiveName>cmake-3.14.0-Linux-x86_64.tar.gz</archiveName>
</tool>
<tool name="cmake" os="freebsd">
<version>3.12.4</version>
@@ -30,7 +30,7 @@
</tool>
<tool name="git" os="windows">
<version>2.20.0</version>
- <exeRelativePath>cmd\git.exe</exeRelativePath>
+ <exeRelativePath>mingw32\bin\git.exe</exeRelativePath>
<url>https://github.com/git-for-windows/git/releases/download/v2.20.0.windows.1/PortableGit-2.20.0-32-bit.7z.exe</url>
<sha512>81647a87df9fde0945ef597cb1cafd8f5f42859da89e9b1db55222a261407bc16bdcc0cf1e86e315697f0981832fe10fc02845cad4b4c82ea64bbd218aec6a49</sha512>
<archiveName>PortableGit-2.20.0-32-bit.7z.exe</archiveName>