aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorPhil Christensen <philc@microsoft.com>2019-08-23 11:18:34 -0700
committerGitHub <noreply@github.com>2019-08-23 11:18:34 -0700
commitbd4678610b221ae6cd4911295e84808ea7924cc6 (patch)
tree1e51033d924c41cd147f33665990b75fe19ff4b7 /scripts
parent1245f1dbfc383d33b2fa576f010644de9687280e (diff)
parentcf447c050c734fc71e5254ea9e05e1bc4a9d208d (diff)
downloadvcpkg-bd4678610b221ae6cd4911295e84808ea7924cc6.tar.gz
vcpkg-bd4678610b221ae6cd4911295e84808ea7924cc6.zip
Merge branch 'master' into multi_line_depends
Diffstat (limited to 'scripts')
-rw-r--r--scripts/cmake/vcpkg_common_definitions.cmake123
-rw-r--r--scripts/cmake/vcpkg_find_acquire_program.cmake24
-rw-r--r--scripts/get_triplet_environment.cmake4
-rw-r--r--scripts/ports.cmake18
4 files changed, 107 insertions, 62 deletions
diff --git a/scripts/cmake/vcpkg_common_definitions.cmake b/scripts/cmake/vcpkg_common_definitions.cmake
index 9724a33dc..662ea2a6e 100644
--- a/scripts/cmake/vcpkg_common_definitions.cmake
+++ b/scripts/cmake/vcpkg_common_definitions.cmake
@@ -1,53 +1,70 @@
-## # vcpkg_common_definitions
-##
-## File contains helpful variabls for portfiles which are commonly needed or used.
-##
-## ## The following variables are available:
-## ```cmake
-## VCPKG_TARGET_IS_<target> with <target> being one of the following: WINDOWS, UWP, LINUX, OSX, ANDROID, FREEBSD. only defined if <target>
-## VCPKG_TARGET_STATIC_LIBRARY_PREFIX static library prefix for target (same as CMAKE_STATIC_LIBRARY_PREFIX)
-## VCPKG_TARGET_STATIC_LIBRARY_SUFFIX static library suffix for target (same as CMAKE_STATIC_LIBRARY_SUFFIX)
-## VCPKG_TARGET_SHARED_LIBRARY_PREFIX shared library prefix for target (same as CMAKE_SHARED_LIBRARY_PREFIX)
-## VCPKG_TARGET_SHARED_LIBRARY_SUFFIX shared library suffix for target (same as CMAKE_SHARED_LIBRARY_SUFFIX)
-## ```
-##
-## CMAKE_STATIC_LIBRARY_PREFIX, CMAKE_STATIC_LIBRARY_SUFFIX, CMAKE_SHARED_LIBRARY_PREFIX, CMAKE_SHARED_LIBRARY_SUFFIX are defined for the target so that
-## portfiles are able to use find_library calls to discover dependent libraries within the current triplet for ports.
-##
-
-#Helper variable to identify the Target system. VCPKG_TARGET_IS_<targetname>
-if (NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
- set(VCPKG_TARGET_IS_WINDOWS 1)
- if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
- set(VCPKG_TARGET_IS_UWP 1)
- endif()
-elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Darwin")
- set(VCPKG_TARGET_IS_OSX 1)
-elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux")
- set(VCPKG_TARGET_IS_LINUX 1)
-elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android")
- set(VCPKG_TARGET_IS_ANDROID 1)
-elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
- set(VCPKG_TARGET_IS_FREEBSD 1)
-endif()
-
-#Helper variables for libraries
-if(VCPKG_TARGET_IS_WINDOWS)
- set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".lib")
- set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".dll")
- set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "")
- set(VCPKG_TARGET_SHARED_LIBRARY_PREFIX "")
-else()
- set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".a")
- set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".so")
- set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "lib")
- set(VCPKG_TARGET_SHARED_LIBRARY_PREFIX "lib")
-endif()
-#Setting these variables allows find_library to work in script mode and thus in portfiles!
-#This allows us scale down on hardcoded target dependent paths in portfiles
-set(CMAKE_STATIC_LIBRARY_SUFFIX ${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX})
-set(CMAKE_SHARED_LIBRARY_SUFFIX ${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX})
-set(CMAKE_STATIC_LIBRARY_PREFIX ${VCPKG_TARGET_STATIC_LIBRARY_PREFIX})
-set(CMAKE_SHARED_LIBRARY_PREFIX ${VCPKG_TARGET_SHARED_LIBRARY_PREFIX})
-
-
+## # vcpkg_common_definitions
+##
+## File contains helpful variabls for portfiles which are commonly needed or used.
+##
+## ## 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_EXECUTABLE_SUFFIX executable suffix of the host
+## VCPKG_TARGET_EXECUTABLE_SUFFIX executable suffix of the target
+## VCPKG_TARGET_STATIC_LIBRARY_PREFIX static library prefix for target (same as CMAKE_STATIC_LIBRARY_PREFIX)
+## VCPKG_TARGET_STATIC_LIBRARY_SUFFIX static library suffix for target (same as CMAKE_STATIC_LIBRARY_SUFFIX)
+## VCPKG_TARGET_SHARED_LIBRARY_PREFIX shared library prefix for target (same as CMAKE_SHARED_LIBRARY_PREFIX)
+## VCPKG_TARGET_SHARED_LIBRARY_SUFFIX shared library suffix for target (same as CMAKE_SHARED_LIBRARY_SUFFIX)
+## ```
+##
+## CMAKE_STATIC_LIBRARY_PREFIX, CMAKE_STATIC_LIBRARY_SUFFIX, CMAKE_SHARED_LIBRARY_PREFIX, CMAKE_SHARED_LIBRARY_SUFFIX are defined for the target so that
+## portfiles are able to use find_library calls to discover dependent libraries within the current triplet for ports.
+##
+
+#Helper variable to identify the Target system. VCPKG_TARGET_IS_<targetname>
+if (NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ set(VCPKG_TARGET_IS_WINDOWS 1)
+ if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ set(VCPKG_TARGET_IS_UWP 1)
+ endif()
+elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+ set(VCPKG_TARGET_IS_OSX 1)
+elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ set(VCPKG_TARGET_IS_LINUX 1)
+elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android")
+ set(VCPKG_TARGET_IS_ANDROID 1)
+elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+ set(VCPKG_TARGET_IS_FREEBSD 1)
+endif()
+
+#Helper variables to identify executables on host/target
+if(CMAKE_HOST_WIN32)
+ set(VCPKG_HOST_EXECUTABLE_SUFFIX ".exe")
+else()
+ set(VCPKG_HOST_EXECUTABLE_SUFFIX "")
+endif()
+#set(CMAKE_EXECUTABLE_SUFFIX ${VCPKG_HOST_EXECUTABLE_SUFFIX}) not required by find_program
+
+if(VCPKG_TARGET_IS_WINDOWS)
+ set(VCPKG_TARGET_EXECUTABLE_SUFFIX ".exe")
+else()
+ set(VCPKG_TARGET_EXECUTABLE_SUFFIX "")
+endif()
+
+#Helper variables for libraries
+if(VCPKG_TARGET_IS_WINDOWS)
+ set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".lib")
+ set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".dll")
+ set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "")
+ set(VCPKG_TARGET_SHARED_LIBRARY_PREFIX "")
+else()
+ set(VCPKG_TARGET_STATIC_LIBRARY_SUFFIX ".a")
+ set(VCPKG_TARGET_SHARED_LIBRARY_SUFFIX ".so")
+ set(VCPKG_TARGET_STATIC_LIBRARY_PREFIX "lib")
+ set(VCPKG_TARGET_SHARED_LIBRARY_PREFIX "lib")
+endif()
+#Setting these variables allows find_library to work in script mode and thus in portfiles!
+#This allows us scale down on hardcoded target dependent paths in portfiles
+set(CMAKE_STATIC_LIBRARY_SUFFIX ${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX})
+set(CMAKE_SHARED_LIBRARY_SUFFIX ${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX})
+set(CMAKE_STATIC_LIBRARY_PREFIX ${VCPKG_TARGET_STATIC_LIBRARY_PREFIX})
+set(CMAKE_SHARED_LIBRARY_PREFIX ${VCPKG_TARGET_SHARED_LIBRARY_PREFIX})
+set(CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_STATIC_LIBRARY_SUFFIX};${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") # Required by find_library
+set(CMAKE_FIND_LIBRARY_PREFIXES "${CMAKE_STATIC_LIBRARY_PREFIX};${CMAKE_SHARED_LIBRARY_PREFIX}" CACHE INTERNAL "") # Required by find_library
+
diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake
index 84ebdbfa8..fed016c7b 100644
--- a/scripts/cmake/vcpkg_find_acquire_program.cmake
+++ b/scripts/cmake/vcpkg_find_acquire_program.cmake
@@ -45,6 +45,7 @@ function(vcpkg_find_acquire_program VAR)
unset(_vfa_RENAME)
unset(SUBDIR)
unset(REQUIRED_INTERPRETER)
+ unset(_vfa_SUPPORTED)
unset(POST_INSTALL_COMMAND)
vcpkg_get_program_files_platform_bitness(PROGRAM_FILES_PLATFORM_BITNESS)
@@ -231,6 +232,23 @@ function(vcpkg_find_acquire_program VAR)
set(URL "http://doxygen.nl/files/doxygen-1.8.15.windows.bin.zip")
set(ARCHIVE "doxygen-1.8.15.windows.bin.zip")
set(HASH 89482dcb1863d381d47812c985593e736d703931d49994e09c7c03ef67e064115d0222b8de1563a7930404c9bc2d3be323f3d13a01ef18861be584db3d5a953c)
+ elseif(VAR MATCHES "BAZEL")
+ set(PROGNAME bazel)
+ set(BAZEL_VERSION 0.25.2)
+ set(SUBDIR ${BAZEL_VERSION})
+ set(PATHS ${DOWNLOADS}/tools/bazel/${SUBDIR})
+ set(_vfa_RENAME "bazel")
+ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
+ set(_vfa_SUPPORTED ON)
+ set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${BAZEL_VERSION}-linux-x86_64")
+ set(ARCHIVE "bazel-${BAZEL_VERSION}-linux-x86_64")
+ set(NOEXTRACT ON)
+ set(HASH db4a583cf2996aeb29fd008261b12fe39a4a5faf0fbf96f7124e6d3ffeccf6d9655d391378e68dd0915bc91c9e146a51fd9661963743857ca25179547feceab1)
+ else()
+ set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${BAZEL_VERSION}-windows-x86_64.zip")
+ set(ARCHIVE "bazel-${BAZEL_VERSION}-windows-x86_64.zip")
+ set(HASH 6482f99a0896f55ef65739e7b53452fd9c0adf597b599d0022a5e0c5fa4374f4a958d46f98e8ba25af4b065adacc578bfedced483d8c169ea5cb1777a99eea53)
+ endif()
# Download Tools
elseif(VAR MATCHES "ARIA2")
set(PROGNAME aria2c)
@@ -254,7 +272,7 @@ function(vcpkg_find_acquire_program VAR)
do_find()
if("${${VAR}}" MATCHES "-NOTFOUND")
- if(NOT CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
+ if(NOT CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows" AND NOT _vfa_SUPPORTED)
set(EXAMPLE ".")
if(DEFINED BREW_PACKAGE_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
set(EXAMPLE ":\n brew install ${BREW_PACKAGE_NAME}")
@@ -274,9 +292,9 @@ function(vcpkg_find_acquire_program VAR)
file(MAKE_DIRECTORY ${PROG_PATH_SUBDIR})
if(DEFINED NOEXTRACT)
if(DEFINED _vfa_RENAME)
- file(INSTALL ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR} RENAME ${_vfa_RENAME})
+ file(INSTALL ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR} RENAME ${_vfa_RENAME} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
else()
- file(COPY ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR})
+ file(COPY ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
endif()
else()
get_filename_component(ARCHIVE_EXTENSION ${ARCHIVE} EXT)
diff --git a/scripts/get_triplet_environment.cmake b/scripts/get_triplet_environment.cmake
index 0457cee9b..3b0b9fbef 100644
--- a/scripts/get_triplet_environment.cmake
+++ b/scripts/get_triplet_environment.cmake
@@ -1,6 +1,6 @@
include(${CMAKE_TRIPLET_FILE})
-if (DEFINED CMAKE_ENV_OVERRIDES_FILE)
- include(${CMAKE_ENV_OVERRIDES_FILE} OPTIONAL)
+if (DEFINED VCPKG_ENV_OVERRIDES_FILE)
+ include(${VCPKG_ENV_OVERRIDES_FILE})
endif()
# GUID used as a flag - "cut here line"
diff --git a/scripts/ports.cmake b/scripts/ports.cmake
index 86b2719d5..056485568 100644
--- a/scripts/ports.cmake
+++ b/scripts/ports.cmake
@@ -6,8 +6,9 @@ macro(debug_message)
endif()
endmacro()
-#Detect .vcpkg-root to figure VCPKG_ROOT_DIR
-SET(VCPKG_ROOT_DIR_CANDIDATE ${CMAKE_CURRENT_LIST_DIR})
+#Detect .vcpkg-root to figure VCPKG_ROOT_DIR, starting from triplet folder.
+get_filename_component(TARGET_TRIPLET_DIR ${TARGET_TRIPLET_FILE} DIRECTORY)
+SET(VCPKG_ROOT_DIR_CANDIDATE ${TARGET_TRIPLET_DIR})
while(IS_DIRECTORY ${VCPKG_ROOT_DIR_CANDIDATE} AND NOT EXISTS "${VCPKG_ROOT_DIR_CANDIDATE}/.vcpkg-root")
get_filename_component(VCPKG_ROOT_DIR_TEMP ${VCPKG_ROOT_DIR_CANDIDATE} DIRECTORY)
if (VCPKG_ROOT_DIR_TEMP STREQUAL VCPKG_ROOT_DIR_CANDIDATE) # If unchanged, we have reached the root of the drive
@@ -19,7 +20,7 @@ endwhile()
set(VCPKG_ROOT_DIR ${VCPKG_ROOT_DIR_CANDIDATE})
-list(APPEND CMAKE_MODULE_PATH ${VCPKG_ROOT_DIR}/scripts/cmake)
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)
set(CURRENT_INSTALLED_DIR ${VCPKG_ROOT_DIR}/installed/${TARGET_TRIPLET} CACHE PATH "Location to install final packages")
set(DOWNLOADS ${VCPKG_ROOT_DIR}/downloads CACHE PATH "Location to download sources and tools")
set(PACKAGES_DIR ${VCPKG_ROOT_DIR}/packages CACHE PATH "Location to store package images")
@@ -67,7 +68,16 @@ if(CMD MATCHES "^BUILD$")
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR} ${CURRENT_PACKAGES_DIR})
include(${CMAKE_TRIPLET_FILE})
- include(${ENV_OVERRIDES_FILE} OPTIONAL)
+
+ if (DEFINED VCPKG_ENV_OVERRIDES_FILE)
+ include(${VCPKG_ENV_OVERRIDES_FILE})
+ endif()
+
+ if (DEFINED VCPKG_PORT_TOOLCHAINS)
+ foreach(VCPKG_PORT_TOOLCHAIN ${VCPKG_PORT_TOOLCHAINS})
+ include(${VCPKG_PORT_TOOLCHAIN})
+ endforeach()
+ endif()
set(TRIPLET_SYSTEM_ARCH ${VCPKG_TARGET_ARCHITECTURE})
include(${CMAKE_CURRENT_LIST_DIR}/cmake/vcpkg_common_definitions.cmake)