diff options
| author | JackBoosY <yuzaiyang@beyondsoft.com> | 2020-01-13 23:55:59 -0800 |
|---|---|---|
| committer | JackBoosY <yuzaiyang@beyondsoft.com> | 2020-01-13 23:55:59 -0800 |
| commit | 2514481b42ebdeec28649582fc666955cf206c84 (patch) | |
| tree | 60c9809a5c3c8adbad240a40b1088a6f8e42c019 /scripts/cmake | |
| parent | b751326c91c9a307aaf5e340b61ab9f2d1ad45a4 (diff) | |
| parent | 28eee51adb36f2165be846e77ef7b3ee5b3f8789 (diff) | |
| download | vcpkg-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.cmake | 12 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_build_cmake.cmake | 9 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_build_make.cmake | 58 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_build_nmake.cmake | 8 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_build_qmake.cmake | 1 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_common_definitions.cmake | 8 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_common_functions.cmake | 1 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_configure_cmake.cmake | 7 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_configure_qmake.cmake | 22 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_find_acquire_program.cmake | 16 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_fixup_cmake_targets.cmake | 2 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_from_github.cmake | 35 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_install_msbuild.cmake | 2 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_install_qmake.cmake | 64 |
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()
|
