aboutsummaryrefslogtreecommitdiff
path: root/scripts/cmake
diff options
context:
space:
mode:
authorJackBoosY <yuzaiyang@beyondsoft.com>2020-01-13 23:55:59 -0800
committerJackBoosY <yuzaiyang@beyondsoft.com>2020-01-13 23:55:59 -0800
commit2514481b42ebdeec28649582fc666955cf206c84 (patch)
tree60c9809a5c3c8adbad240a40b1088a6f8e42c019 /scripts/cmake
parentb751326c91c9a307aaf5e340b61ab9f2d1ad45a4 (diff)
parent28eee51adb36f2165be846e77ef7b3ee5b3f8789 (diff)
downloadvcpkg-2514481b42ebdeec28649582fc666955cf206c84.tar.gz
vcpkg-2514481b42ebdeec28649582fc666955cf206c84.zip
Merge branch 'master' of https://github.com/Microsoft/vcpkg into dev/jack/upgrade_libi
Diffstat (limited to 'scripts/cmake')
-rw-r--r--scripts/cmake/vcpkg_add_to_path.cmake12
-rw-r--r--scripts/cmake/vcpkg_build_cmake.cmake9
-rw-r--r--scripts/cmake/vcpkg_build_make.cmake58
-rw-r--r--scripts/cmake/vcpkg_build_nmake.cmake8
-rw-r--r--scripts/cmake/vcpkg_build_qmake.cmake1
-rw-r--r--scripts/cmake/vcpkg_common_definitions.cmake8
-rw-r--r--scripts/cmake/vcpkg_common_functions.cmake1
-rw-r--r--scripts/cmake/vcpkg_configure_cmake.cmake7
-rw-r--r--scripts/cmake/vcpkg_configure_qmake.cmake22
-rw-r--r--scripts/cmake/vcpkg_find_acquire_program.cmake16
-rw-r--r--scripts/cmake/vcpkg_fixup_cmake_targets.cmake2
-rw-r--r--scripts/cmake/vcpkg_from_github.cmake35
-rw-r--r--scripts/cmake/vcpkg_install_msbuild.cmake2
-rw-r--r--scripts/cmake/vcpkg_install_qmake.cmake64
14 files changed, 171 insertions, 74 deletions
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_build_cmake.cmake b/scripts/cmake/vcpkg_build_cmake.cmake
index b110d2cc9..d049c907b 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}")
+ vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/bin")
else()
- set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin${_PATHSEP}$ENV{PATH}")
+ vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin")
endif()
endif()
diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake
index d928a9287..202ef33f4 100644
--- a/scripts/cmake/vcpkg_build_make.cmake
+++ b/scripts/cmake/vcpkg_build_make.cmake
@@ -142,37 +142,39 @@ function(vcpkg_build_make)
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 "")
+ 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()
- set(SHORT_BUILDTYPE "-rel")
+ # In NO_DEBUG mode, we only use ${TARGET_TRIPLET} directory.
+ if (_VCPKG_NO_DEBUG)
+ set(SHORT_BUILDTYPE "")
+ else()
+ set(SHORT_BUILDTYPE "-rel")
+ endif()
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}"
- )
+ 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()
endif()
endforeach()
endif()
diff --git a/scripts/cmake/vcpkg_build_nmake.cmake b/scripts/cmake/vcpkg_build_nmake.cmake
index 33f1e9d1e..8cf074739 100644
--- a/scripts/cmake/vcpkg_build_nmake.cmake
+++ b/scripts/cmake/vcpkg_build_nmake.cmake
@@ -178,7 +178,7 @@ function(vcpkg_build_nmake)
endforeach()
if (_bn_PRERUN_SHELL)
- message("Prerunning ${CURRENT_TRIPLET_NAME}")
+ message(STATUS "Prerunning ${CURRENT_TRIPLET_NAME}")
vcpkg_execute_required_process(
COMMAND ${_bn_PRERUN_SHELL}
WORKING_DIRECTORY ${OBJ_DIR}${_bn_PROJECT_SUBPATH}
@@ -186,7 +186,7 @@ function(vcpkg_build_nmake)
)
endif()
if (BUILDTYPE STREQUAL "debug" AND _bn_PRERUN_SHELL_DEBUG)
- message("Prerunning ${CURRENT_TRIPLET_NAME}")
+ message(STATUS "Prerunning ${CURRENT_TRIPLET_NAME}")
vcpkg_execute_required_process(
COMMAND "${_bn_PRERUN_SHELL_DEBUG}"
WORKING_DIRECTORY ${OBJ_DIR}${_bn_PROJECT_SUBPATH}
@@ -194,11 +194,11 @@ function(vcpkg_build_nmake)
)
endif()
if (BUILDTYPE STREQUAL "release" AND _bn_PRERUN_SHELL_RELEASE)
- message("Prerunning ${CURRENT_TRIPLET_NAME}")
+ message(STATUS "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"
+ LOGNAME "prerun-${CURRENT_TRIPLET_NAME}-rel"
)
endif()
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}
diff --git a/scripts/cmake/vcpkg_common_definitions.cmake b/scripts/cmake/vcpkg_common_definitions.cmake
index 60afeaf36..14cf460af 100644
--- a/scripts/cmake/vcpkg_common_definitions.cmake
+++ b/scripts/cmake/vcpkg_common_definitions.cmake
@@ -5,6 +5,7 @@
## ## The following variables are available:
## ```cmake
## VCPKG_TARGET_IS_<target> with <target> being one of the following: WINDOWS, UWP, LINUX, OSX, ANDROID, FREEBSD. only defined if <target>
+## VCPKG_HOST_PATH_SEPARATOR Host specific path separator (USAGE: "<something>${VCPKG_HOST_PATH_SEPARATOR}<something>"; 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)
@@ -38,6 +39,13 @@ elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
set(VCPKG_TARGET_IS_FREEBSD 1)
endif()
+#Helper variable to identify the host path separator.
+if(CMAKE_HOST_WIN32)
+ set(VCPKG_HOST_PATH_SEPARATOR ";")
+elseif(CMAKE_HOST_UNIX)
+ set(VCPKG_HOST_PATH_SEPARATOR ":")
+endif()
+
#Helper variables to identify executables on host/target
if(CMAKE_HOST_WIN32)
set(VCPKG_HOST_EXECUTABLE_SUFFIX ".exe")
diff --git a/scripts/cmake/vcpkg_common_functions.cmake b/scripts/cmake/vcpkg_common_functions.cmake
index 4aa115f47..564ac9421 100644
--- a/scripts/cmake/vcpkg_common_functions.cmake
+++ b/scripts/cmake/vcpkg_common_functions.cmake
@@ -26,6 +26,7 @@ include(vcpkg_install_meson)
include(vcpkg_install_msbuild)
include(vcpkg_install_make)
include(vcpkg_install_nmake)
+include(vcpkg_install_qmake)
include(vcpkg_configure_cmake)
include(vcpkg_configure_meson)
include(vcpkg_configure_qmake)
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
diff --git a/scripts/cmake/vcpkg_configure_qmake.cmake b/scripts/cmake/vcpkg_configure_qmake.cmake
index a04a4c8f6..44230a79e 100644
--- a/scripts/cmake/vcpkg_configure_qmake.cmake
+++ b/scripts/cmake/vcpkg_configure_qmake.cmake
@@ -20,13 +20,17 @@ function(vcpkg_configure_qmake)
# Find qmake executable
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(DEFINED VCPKG_QT_HOST_TOOLS_ROOT_DIR)
+ find_program(QMAKE_COMMAND NAMES qmake PATHS ${VCPKG_QT_HOST_TOOLS_ROOT_DIR}/bin ${_triplet_hostbindir} NO_DEFAULT_PATH)
+ else()
+ find_program(QMAKE_COMMAND NAMES qmake PATHS ${_triplet_hostbindir} NO_DEFAULT_PATH)
+ endif()
if(NOT QMAKE_COMMAND)
message(FATAL_ERROR "vcpkg_configure_qmake: unable to find qmake.")
endif()
- if(${VCPKG_LIBRARY_LINKAGE} STREQUAL "static")
+ if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
list(APPEND _csc_OPTIONS "CONFIG-=shared")
list(APPEND _csc_OPTIONS "CONFIG*=static")
else()
@@ -35,10 +39,10 @@ function(vcpkg_configure_qmake)
list(APPEND _csc_OPTIONS_DEBUG "CONFIG*=separate_debug_info")
endif()
- if(VCPKG_TARGET_IS_WINDOWS AND ${VCPKG_CRT_LINKAGE} STREQUAL "static")
+ 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)
@@ -55,9 +59,9 @@ function(vcpkg_configure_qmake)
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
@@ -74,8 +78,8 @@ function(vcpkg_configure_qmake)
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}
+ 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
diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake
index b4672a245..6511cb150 100644
--- a/scripts/cmake/vcpkg_find_acquire_program.cmake
+++ b/scripts/cmake/vcpkg_find_acquire_program.cmake
@@ -75,6 +75,8 @@ function(vcpkg_find_acquire_program VAR)
set(PROGNAME yasm)
set(SUBDIR 1.3.0.6)
set(PATHS ${DOWNLOADS}/tools/yasm/${SUBDIR})
+ set(BREW_PACKAGE_NAME "yasm")
+ set(APT_PACKAGE_NAME "yasm")
set(URL "https://www.tortall.net/projects/yasm/snapshots/v1.3.0.6.g1962/yasm-1.3.0.6.g1962.exe")
set(ARCHIVE "yasm-1.3.0.6.g1962.exe")
set(_vfa_RENAME "yasm.exe")
@@ -214,12 +216,14 @@ function(vcpkg_find_acquire_program VAR)
elseif(VAR MATCHES "GASPREPROCESSOR")
set(NOEXTRACT true)
set(PROGNAME gas-preprocessor)
+ set(SUBDIR "b5ea3a50")
set(REQUIRED_INTERPRETER PERL)
set(SCRIPTNAME "gas-preprocessor.pl")
- set(PATHS ${DOWNLOADS}/tools/gas-preprocessor)
- set(URL "https://raw.githubusercontent.com/FFmpeg/gas-preprocessor/cbe88474ec196370161032a3863ec65050f70ba4/gas-preprocessor.pl")
- set(ARCHIVE "gas-preprocessor.pl")
- set(HASH f6965875608bf2a3ee337e00c3f16e06cd9b5d10013da600d2a70887e47a7b4668af87b3524acf73dd122475712af831495a613a2128c1adb5fe0b4a11d96cd3)
+ set(PATHS ${DOWNLOADS}/tools/gas-preprocessor/${SUBDIR})
+ set(_vfa_RENAME "gas-preprocessor.pl")
+ set(URL "https://raw.githubusercontent.com/FFmpeg/gas-preprocessor/b5ea3a50ed991e6a3218e89402a8162c73f59cb2/gas-preprocessor.pl")
+ set(ARCHIVE "gas-preprocessor-${SUBDIR}.pl")
+ set(HASH 3a42a90dee09f3c8653d043d848057287f7460806a08f9471131d0c546ba541bdfa4efa3019e7ffc57a6c20538f1034f7a53b30ecaad9db5add7c71d8de35db9)
elseif(VAR MATCHES "DARK")
set(PROGNAME dark)
set(SUBDIR "wix311-binaries")
@@ -301,9 +305,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} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+ file(INSTALL ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR} RENAME ${_vfa_RENAME} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
else()
- file(COPY ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+ file(COPY ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
endif()
else()
get_filename_component(ARCHIVE_EXTENSION ${ARCHIVE} EXT)
diff --git a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake
index c383fcb56..a042d9124 100644
--- a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake
+++ b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake
@@ -179,4 +179,4 @@ function(vcpkg_fixup_cmake_targets)
endforeach()
endfunction()
-
+
diff --git a/scripts/cmake/vcpkg_from_github.cmake b/scripts/cmake/vcpkg_from_github.cmake
index a822ee40e..c8710998b 100644
--- a/scripts/cmake/vcpkg_from_github.cmake
+++ b/scripts/cmake/vcpkg_from_github.cmake
@@ -11,6 +11,8 @@
## [SHA512 <45d0d7f8cc350...>]
## [HEAD_REF <master>]
## [PATCHES <patch1.patch> <patch2.patch>...]
+## [GITHUB_HOST <https://github.com>]
+## [AUTHORIZATION_TOKEN <${SECRET_FROM_FILE}>]
## )
## ```
##
@@ -45,6 +47,14 @@
##
## Relative paths are based on the port directory.
##
+## ### GITHUB_HOST
+## A replacement host for enterprise GitHub instances.
+##
+## This field should contain the scheme, host, and port of the desired URL without a trailing slash.
+##
+## ### AUTHORIZATION_TOKEN
+## A token to be passed via the Authorization HTTP header as "token ${AUTHORIZATION_TOKEN}".
+##
## ## Notes:
## At least one of `REF` and `HEAD_REF` must be specified, however it is preferable for both to be present.
##
@@ -56,7 +66,7 @@
## * [ms-gsl](https://github.com/Microsoft/vcpkg/blob/master/ports/ms-gsl/portfile.cmake)
## * [beast](https://github.com/Microsoft/vcpkg/blob/master/ports/beast/portfile.cmake)
function(vcpkg_from_github)
- set(oneValueArgs OUT_SOURCE_PATH REPO REF SHA512 HEAD_REF)
+ set(oneValueArgs OUT_SOURCE_PATH REPO REF SHA512 HEAD_REF GITHUB_HOST AUTHORIZATION_TOKEN)
set(multipleValuesArgs PATCHES)
cmake_parse_arguments(_vdud "" "${oneValueArgs}" "${multipleValuesArgs}" ${ARGN})
@@ -76,6 +86,20 @@ function(vcpkg_from_github)
message(FATAL_ERROR "At least one of REF and HEAD_REF must be specified.")
endif()
+ if(NOT DEFINED _vdud_GITHUB_HOST)
+ set(GITHUB_HOST https://github.com)
+ set(GITHUB_API_URL https://api.github.com)
+ else()
+ set(GITHUB_HOST ${_vdud_GITHUB_HOST})
+ set(GITHUB_API_URL ${_vdud_GITHUB_HOST}/api/v3)
+ endif()
+
+ if(DEFINED _vdud_AUTHORIZATION_TOKEN)
+ set(HEADERS "HEADERS" "Authorization: token ${_vdud_AUTHORIZATION_TOKEN}")
+ else()
+ set(HEADERS)
+ endif()
+
string(REGEX REPLACE ".*/" "" REPO_NAME ${_vdud_REPO})
string(REGEX REPLACE "/.*" "" ORG_NAME ${_vdud_REPO})
@@ -106,9 +130,10 @@ function(vcpkg_from_github)
string(REPLACE "/" "-" SANITIZED_REF "${_vdud_REF}")
vcpkg_download_distfile(ARCHIVE
- URLS "https://github.com/${ORG_NAME}/${REPO_NAME}/archive/${_vdud_REF}.tar.gz"
+ URLS "${GITHUB_HOST}/${ORG_NAME}/${REPO_NAME}/archive/${_vdud_REF}.tar.gz"
SHA512 "${_vdud_SHA512}"
FILENAME "${ORG_NAME}-${REPO_NAME}-${SANITIZED_REF}.tar.gz"
+ ${HEADERS}
)
vcpkg_extract_source_archive_ex(
@@ -123,7 +148,7 @@ function(vcpkg_from_github)
endif()
# The following is for --head scenarios
- set(URL "https://github.com/${ORG_NAME}/${REPO_NAME}/archive/${_vdud_HEAD_REF}.tar.gz")
+ set(URL "${GITHUB_HOST}/${ORG_NAME}/${REPO_NAME}/archive/${_vdud_HEAD_REF}.tar.gz")
string(REPLACE "/" "-" SANITIZED_HEAD_REF "${_vdud_HEAD_REF}")
set(downloaded_file_name "${ORG_NAME}-${REPO_NAME}-${SANITIZED_HEAD_REF}.tar.gz")
set(downloaded_file_path "${DOWNLOADS}/${downloaded_file_name}")
@@ -147,15 +172,17 @@ function(vcpkg_from_github)
# Try to download the file and version information from github.
vcpkg_download_distfile(ARCHIVE_VERSION
- URLS "https://api.github.com/repos/${ORG_NAME}/${REPO_NAME}/git/refs/heads/${_vdud_HEAD_REF}"
+ URLS "${GITHUB_API_URL}/repos/${ORG_NAME}/${REPO_NAME}/git/refs/heads/${_vdud_HEAD_REF}"
FILENAME ${downloaded_file_name}.version
SKIP_SHA512
+ ${HEADERS}
)
vcpkg_download_distfile(ARCHIVE
URLS ${URL}
FILENAME ${downloaded_file_name}
SKIP_SHA512
+ ${HEADERS}
)
endif()
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()
diff --git a/scripts/cmake/vcpkg_install_qmake.cmake b/scripts/cmake/vcpkg_install_qmake.cmake
new file mode 100644
index 000000000..571b55a68
--- /dev/null
+++ b/scripts/cmake/vcpkg_install_qmake.cmake
@@ -0,0 +1,64 @@
+## # vcpkg_install_qmake
+##
+## Build and install a qmake project.
+##
+## ## Usage:
+## ```cmake
+## vcpkg_install_qmake(...)
+## ```
+##
+## ## Parameters:
+## See [`vcpkg_build_qmake()`](vcpkg_build_qmake.md).
+##
+## ## Notes:
+## This command transparently forwards to [`vcpkg_build_qmake()`](vcpkg_build_qmake.md).
+##
+## Additionally, this command will copy produced .libs/.dlls/.as/.dylibs/.sos to the appropriate
+## staging directories.
+##
+## ## Examples
+##
+## * [libqglviewer](https://github.com/Microsoft/vcpkg/blob/master/ports/libqglviewer/portfile.cmake)
+
+function(vcpkg_install_qmake)
+ vcpkg_build_qmake(${ARGN})
+ file(GLOB_RECURSE RELEASE_LIBS
+ ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/*.lib
+ ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/*.a
+ ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/*.so
+ ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/*.so.*
+ ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/*.dylib
+ )
+ file(GLOB_RECURSE RELEASE_BINS
+ ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/*.dll
+ )
+ file(GLOB_RECURSE DEBUG_LIBS
+ ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/*.lib
+ ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/*.a
+ ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/*.so
+ ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/*.so.*
+ ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/*.dylib
+ )
+ file(GLOB_RECURSE DEBUG_BINS
+ ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/*.dll
+ )
+ if(NOT RELEASE_LIBS AND NOT DEBUG_LIBS)
+ message(FATAL_ERROR "Build did not appear to produce any libraries. If this is intended, use `vcpkg_build_qmake()` directly.")
+ endif()
+ if(RELEASE_LIBS)
+ file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/lib)
+ file(COPY ${RELEASE_LIBS} DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
+ endif()
+ if(DEBUG_LIBS)
+ file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/lib)
+ file(COPY ${DEBUG_LIBS} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
+ endif()
+ if(RELEASE_BINS)
+ file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/bin)
+ file(COPY ${RELEASE_BINS} DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
+ endif()
+ if(DEBUG_BINS)
+ file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/bin)
+ file(COPY ${DEBUG_BINS} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
+ endif()
+endfunction()