2017-05-25 14:33:16 +08:00
|
|
|
## # vcpkg_configure_cmake
|
|
|
|
##
|
|
|
|
## Configure CMake for Debug and Release builds of a project.
|
|
|
|
##
|
|
|
|
## ## Usage
|
|
|
|
## ```cmake
|
|
|
|
## vcpkg_configure_cmake(
|
|
|
|
## SOURCE_PATH <${SOURCE_PATH}>
|
|
|
|
## [PREFER_NINJA]
|
2019-06-26 07:08:18 +08:00
|
|
|
## [DISABLE_PARALLEL_CONFIGURE]
|
2019-08-14 11:13:55 +08:00
|
|
|
## [NO_CHARSET_FLAG]
|
2017-05-25 14:33:16 +08:00
|
|
|
## [GENERATOR <"NMake Makefiles">]
|
|
|
|
## [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...]
|
|
|
|
## [OPTIONS_RELEASE <-DOPTIMIZE=1>...]
|
|
|
|
## [OPTIONS_DEBUG <-DDEBUGGABLE=1>...]
|
|
|
|
## )
|
|
|
|
## ```
|
|
|
|
##
|
|
|
|
## ## Parameters
|
|
|
|
## ### SOURCE_PATH
|
2019-07-10 05:53:48 +08:00
|
|
|
## Specifies the directory containing the `CMakeLists.txt`.
|
|
|
|
## By convention, this is usually set in the portfile as the variable `SOURCE_PATH`.
|
2017-05-25 14:33:16 +08:00
|
|
|
##
|
|
|
|
## ### PREFER_NINJA
|
2019-07-10 05:53:48 +08:00
|
|
|
## Indicates that, when available, Vcpkg should use Ninja to perform the build.
|
|
|
|
## This should be specified unless the port is known to not work under Ninja.
|
2017-05-25 14:33:16 +08:00
|
|
|
##
|
libmupdf version bump (#2730)
* Add libgta
Libgta is a portable library that implements the Generic Tagged Array (GTA)
file format.
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
* [libgta] turn off document build and doxygen dependency
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
* [libgta] add build-dependency
- bzip2, zlib and liblzma
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
* [libgta] remove dlls when static build
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
* Fix typo
* [libgta] update CONTROL
add lf at end of file.
* libmupdf version bump
* [qt5-base] Use system freetype.
* [opencv] Fix UWP and ARM
* [hdf5] Always use config mode for HDF5
* [opencv] Fixup -- apply patch added in previous commit
* [abseil] Add *.inc files. Fixes #2718
* [abseil] Update to 2018-2-5
* Fix for Issue #2729
Allows PowerShell to change the name of the downloaded directory correctly.
* vcpkgRemoveItem: nullcheck
* [cpprestsdk] Update to 2.10.2
* Adding Torch's TH library (#2737)
Adding Torch's TH library
* [flatbuffers] Fixes #2735
* sobjectizer updated to v.5.5.21
* [nghttp2] Enable static builds
* [nghttp2]: update to 1.30.0 (#2739)
* [nghttp2]: update to 1.30.0
* [nghttp2] Enable static builds
* Add epsilon library port
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
* [vcpkg-configure-cmake] Use ninja to configure in parallel (#2712)
* [curl] Add nghttp2.lib to dependencies of curl
* [vtk] Fix breaking change in find_package(HDF5)
* Merge findFileRecursivelyUp into VcpkgPowershellUtils
* [vcpkgInvokeCommandClean] Don't use -encodedCommand.
Instead, use -Command with the appropriate number of escaped quotes
(which ended up being 3)
* [blosc] Update to 1.13.5
static-install-fix.patch no longer required (upstream contains the patched version).
Resolves build error with VS 15.6 in static builds
* [cgal] Avoid using absolute paths in cmake config file
* Update CHANGELOG and bump version to v0.0.104
* [qt5-base][qtdeploy] Deploy plugin dependencies to the executable's folder.
* Add libgeotiff port
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
* [libgeotiff] fix install directory for cmake configurations
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
* fix tiff detection error when static build
* [libgeotiff] remove installed dlls when static build
* [libgeotiff] update description
* [chipmunk] 7.0.2 initial.
* [recast] 1.5.1 initial.
* [tinydir] 1.2.3 initial.
* [mman] git-f5ff813 initial.
* Update Catch to 2.1.2 (#2763)
* [vcpkg-ci] Delete intermediate build folders even on unsuccesful builds
* [folly] Workaround bug for VS 15.6
* [pcre] fix space issue and add mirror (fix #2751)
* [realsense2] Update to v2.10.0
Update realsense2 port to librealsense v2.10.0.
* [libevent] Fix generated libevent targets files
* fixed typo in warning message (#2773)
* [blaze] update to Blaze 3.3
* [lmdb] Fix possible whitespace problem
* Fix date issue
* add qt5-quickcontrols2
* add qt5-quickcontrols port
* add qt5-graphicaleffects
* change compile order to debug first, fix #2767 (#2785)
* [liblzma] Add usage information
* [ffmpeg] Allow static builds of ffmpeg (#2783)
ffmpeg creates static .a libraries, so change the suffix to .lib
* [ffmpeg] Bump version for PR #2783
* [aubio] Update to handle static FFMPEG
* Copy local dependencies for library targets (#2787)
* Fix for issue #2786
* [vcpkg-cmake-toolchain] Only applocal dependencies for shared libraries
* [uriparser] Update to 0.8.5
* [vcpkg] Implement Default-Features (#2697)
* [vcpkg] Add Default-Feature to make_status_pgh utility function
Signed-off-by: Squareys <squareys@googlemail.com>
* [vcpkg] Parse "Default-Features" as dependencies and add test for parsing
Signed-off-by: Squareys <squareys@googlemail.com>
* [vcpkg] Document some methods and structures
Signed-off-by: Squareys <squareys@googlemail.com>
* [vcpkg] Add install_default_features_test
Signed-off-by: Squareys <squareys@googlemail.com>
* [vcpkg] Change install_default_features_test to not have preinstalled package
* [vcpkg] Test install behaviour of default features
Signed-off-by: Squareys <squareys@googlemail.com>
* [vcpkg] Implement default features
Signed-off-by: Squareys <squareys@googlemail.com>
* [vcpkg] Test default features upgrade behavior
Signed-off-by: Squareys <squareys@googlemail.com>
* [vcpkg] Implement upgrade with default features
Signed-off-by: Squareys <squareys@googlemail.com>
* [vcpkg] Test behaviour of upgrade with default features in dependencies
Signed-off-by: Squareys <squareys@googlemail.com>
* [vcpkg] Make upgrade install new default features
Signed-off-by: Squareys <squareys@googlemail.com>
* [vcpkg] Move collecting of packages for which to prevent defaults
Further down the line to create_feature_install_plan.
Signed-off-by: Squareys <squareys@googlemail.com>
* [vcpkg] Fix core missing from default features and potential inf loop
Signed-off-by: Squareys <squareys@googlemail.com>
* [vcpkg] Rename, fix and move some tests
Signed-off-by: Squareys <squareys@googlemail.com>
* Updated boost license to 1.66.0 (#2795)
I was a bit confused to see a reference to "1.65.1" while I was installing 1.66.0, but it turns out this URL is just not updated. This updates it.
* [vcpkg-find-acquire-program] Add mirror for NASM. Fixes #2777.
* update cuda requirement to 9.0, fixes #2791 (#2802)
* update cuda requirement to 9.0, fixes #2791
* [cuda] Restore sample version blob
* [vcpkg] http_proxy and https_proxy should be lowercase (#2815)
Pacman of Msys understands only lowercase environment variables
http_proxy and https_proxy.
* [vcpkg] Add find/find_installed/is_installed for FeatureSpec
Signed-off-by: Squareys <squareys@googlemail.com>
* [vcpkg] Fix build command for packages that depend of features
Signed-off-by: Squareys <squareys@googlemail.com>
* [liblo] Initial port (#2821)
* [portaudio] Added ASIO support to build
* Update libpng to 1.6.34
* [liblo] Initial port
* Revert "Update libpng to 1.6.34"
This reverts commit ede0bb947b07aea119b7b05e3625c3eec1395af4.
* Revert "[liblo] Initial port"
This reverts commit bb819eb21841bb8cf4816af5a78e17ef58ec8ce5.
* [liblo] Initial port
* [liblo] Use vcpkg_from_github() and vcpkg_fixup_cmake_targets()
* [liblo] Fix SHA512
* [openvr] update to 1.0.13 (#2809)
* [ebml] Initial port. (#2812)
* [vcpkg] Fix bug with missing dependencies introduced in #2697 (#2819)
When a package dependency was not found (has no source control file),
install would exit with "Value was null" when trying to install its default
features, as the dependency would be marked erroneously as found in this
case.
Signed-off-by: Squareys <squareys@googlemail.com>
* [vcpkg] Avoid using s::status_known() -- it does not do what you think it does
* [jansson] Update to 2.11 (#2820)
* [aws-sdk-cpp] update to 1.3.58 (#2810)
* [mkl] Add port MKL (#2806)
* [corrade,magnum,-plugins,-extras,-integration] Update to latest and support feature packages (#2687)
[corrade,magnum,-plugins,-extras,-integration] Update to latest and support feature packages
* [jbig2dec][libmupdf] Extract jbig2dec, remove remaining vendored 3rdparty
2018-02-17 18:31:49 +08:00
|
|
|
## ### DISABLE_PARALLEL_CONFIGURE
|
|
|
|
## Disables running the CMake configure step in parallel.
|
|
|
|
## This is needed for libraries which write back into their source directory during configure.
|
|
|
|
##
|
2019-08-14 11:13:55 +08:00
|
|
|
## ### NO_CHARSET_FLAG
|
|
|
|
## Disables passing `utf-8` as the default character set to `CMAKE_C_FLAGS` and `CMAKE_CXX_FLAGS`.
|
|
|
|
##
|
|
|
|
## This is needed for libraries that set their own source code's character set.
|
|
|
|
##
|
2017-05-25 14:33:16 +08:00
|
|
|
## ### GENERATOR
|
|
|
|
## Specifies the precise generator to use.
|
|
|
|
##
|
2019-07-10 05:53:48 +08:00
|
|
|
## This is useful if some project-specific buildsystem has been wrapped in a cmake script that won't perform an actual build.
|
2020-02-13 07:58:43 +08:00
|
|
|
## If used for this purpose, it should be set to `"NMake Makefiles"`.
|
2017-05-25 14:33:16 +08:00
|
|
|
##
|
|
|
|
## ### OPTIONS
|
|
|
|
## Additional options passed to CMake during the configuration.
|
|
|
|
##
|
|
|
|
## ### OPTIONS_RELEASE
|
|
|
|
## Additional options passed to CMake during the Release configuration. These are in addition to `OPTIONS`.
|
|
|
|
##
|
|
|
|
## ### OPTIONS_DEBUG
|
|
|
|
## Additional options passed to CMake during the Debug configuration. These are in addition to `OPTIONS`.
|
|
|
|
##
|
|
|
|
## ## Notes
|
|
|
|
## This command supplies many common arguments to CMake. To see the full list, examine the source.
|
|
|
|
##
|
|
|
|
## ## Examples
|
|
|
|
##
|
|
|
|
## * [zlib](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake)
|
|
|
|
## * [cpprestsdk](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake)
|
|
|
|
## * [poco](https://github.com/Microsoft/vcpkg/blob/master/ports/poco/portfile.cmake)
|
|
|
|
## * [opencv](https://github.com/Microsoft/vcpkg/blob/master/ports/opencv/portfile.cmake)
|
2016-09-19 11:50:08 +08:00
|
|
|
function(vcpkg_configure_cmake)
|
2020-08-25 03:32:34 +08:00
|
|
|
# parse parameters such that semicolons in arguments to OPTIONS don't get erased
|
|
|
|
cmake_parse_arguments(PARSE_ARGV 0 _csc
|
2019-07-10 05:53:48 +08:00
|
|
|
"PREFER_NINJA;DISABLE_PARALLEL_CONFIGURE;NO_CHARSET_FLAG"
|
|
|
|
"SOURCE_PATH;GENERATOR"
|
|
|
|
"OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE"
|
|
|
|
)
|
2016-09-19 11:50:08 +08:00
|
|
|
|
2017-01-25 10:55:41 +08:00
|
|
|
if(NOT VCPKG_PLATFORM_TOOLSET)
|
2019-07-10 05:53:48 +08:00
|
|
|
message(FATAL_ERROR "Vcpkg has been updated with VS2017 support; "
|
|
|
|
"however, vcpkg.exe must be rebuilt by re-running bootstrap-vcpkg.bat\n")
|
2017-04-23 15:11:42 +08:00
|
|
|
endif()
|
|
|
|
|
2018-08-09 01:51:33 +08:00
|
|
|
if(CMAKE_HOST_WIN32)
|
2019-07-10 05:53:48 +08:00
|
|
|
if(DEFINED ENV{PROCESSOR_ARCHITEW6432})
|
|
|
|
set(_csc_HOST_ARCHITECTURE $ENV{PROCESSOR_ARCHITEW6432})
|
|
|
|
else()
|
|
|
|
set(_csc_HOST_ARCHITECTURE $ENV{PROCESSOR_ARCHITECTURE})
|
|
|
|
endif()
|
2018-08-09 01:51:33 +08:00
|
|
|
endif()
|
|
|
|
|
2018-03-04 05:09:55 +08:00
|
|
|
set(NINJA_CAN_BE_USED ON) # Ninja as generator
|
|
|
|
set(NINJA_HOST ON) # Ninja as parallel configurator
|
2019-07-10 05:53:48 +08:00
|
|
|
|
|
|
|
if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
|
|
|
|
set(_TARGETTING_UWP 1)
|
|
|
|
endif()
|
|
|
|
|
2018-01-04 07:19:52 +08:00
|
|
|
if(_csc_HOST_ARCHITECTURE STREQUAL "x86")
|
|
|
|
# Prebuilt ninja binaries are only provided for x64 hosts
|
|
|
|
set(NINJA_CAN_BE_USED OFF)
|
2018-03-04 05:09:55 +08:00
|
|
|
set(NINJA_HOST OFF)
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(_TARGETTING_UWP)
|
2018-01-04 07:19:52 +08:00
|
|
|
# Ninja and MSBuild have many differences when targetting UWP, so use MSBuild to maximize existing compatibility
|
|
|
|
set(NINJA_CAN_BE_USED OFF)
|
|
|
|
endif()
|
|
|
|
|
2016-09-19 11:50:08 +08:00
|
|
|
if(_csc_GENERATOR)
|
|
|
|
set(GENERATOR ${_csc_GENERATOR})
|
2018-01-04 07:19:52 +08:00
|
|
|
elseif(_csc_PREFER_NINJA AND NINJA_CAN_BE_USED)
|
|
|
|
set(GENERATOR "Ninja")
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_CHAINLOAD_TOOLCHAIN_FILE OR (VCPKG_CMAKE_SYSTEM_NAME AND NOT _TARGETTING_UWP))
|
2017-02-04 00:16:13 +08:00
|
|
|
set(GENERATOR "Ninja")
|
2018-01-04 07:19:52 +08:00
|
|
|
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v120")
|
2017-09-02 22:48:29 +08:00
|
|
|
set(GENERATOR "Visual Studio 12 2013")
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v120")
|
2017-09-02 22:48:29 +08:00
|
|
|
set(GENERATOR "Visual Studio 12 2013 Win64")
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v120")
|
2017-09-02 22:48:29 +08:00
|
|
|
set(GENERATOR "Visual Studio 12 2013 ARM")
|
2018-01-04 07:19:52 +08:00
|
|
|
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v140")
|
2016-09-19 11:50:08 +08:00
|
|
|
set(GENERATOR "Visual Studio 14 2015")
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v140")
|
2016-09-19 11:50:08 +08:00
|
|
|
set(GENERATOR "Visual Studio 14 2015 Win64")
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v140")
|
2017-03-14 08:59:41 +08:00
|
|
|
set(GENERATOR "Visual Studio 14 2015 ARM")
|
2017-01-24 11:25:47 +08:00
|
|
|
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v141")
|
2017-01-24 11:25:47 +08:00
|
|
|
set(GENERATOR "Visual Studio 15 2017")
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v141")
|
2017-01-24 11:25:47 +08:00
|
|
|
set(GENERATOR "Visual Studio 15 2017 Win64")
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v141")
|
2017-03-14 08:59:41 +08:00
|
|
|
set(GENERATOR "Visual Studio 15 2017 ARM")
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v141")
|
2017-09-24 21:01:37 +08:00
|
|
|
set(GENERATOR "Visual Studio 15 2017")
|
|
|
|
set(ARCH "ARM64")
|
2019-03-17 00:40:31 +08:00
|
|
|
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v142")
|
2019-03-17 00:40:31 +08:00
|
|
|
set(GENERATOR "Visual Studio 16 2019")
|
2019-03-17 00:53:31 +08:00
|
|
|
set(ARCH "Win32")
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v142")
|
2019-03-17 00:53:31 +08:00
|
|
|
set(GENERATOR "Visual Studio 16 2019")
|
|
|
|
set(ARCH "x64")
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v142")
|
2019-03-17 00:53:31 +08:00
|
|
|
set(GENERATOR "Visual Studio 16 2019")
|
|
|
|
set(ARCH "ARM")
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64" AND VCPKG_PLATFORM_TOOLSET STREQUAL "v142")
|
2019-03-17 00:53:31 +08:00
|
|
|
set(GENERATOR "Visual Studio 16 2019")
|
|
|
|
set(ARCH "ARM64")
|
2019-03-17 00:40:31 +08:00
|
|
|
|
2017-10-17 02:22:21 +08:00
|
|
|
else()
|
2019-03-06 06:42:07 +08:00
|
|
|
if(NOT VCPKG_CMAKE_SYSTEM_NAME)
|
|
|
|
set(VCPKG_CMAKE_SYSTEM_NAME Windows)
|
|
|
|
endif()
|
2019-07-10 05:53:48 +08:00
|
|
|
message(FATAL_ERROR "Unable to determine appropriate generator for: "
|
|
|
|
"${VCPKG_CMAKE_SYSTEM_NAME}-${VCPKG_TARGET_ARCHITECTURE}-${VCPKG_PLATFORM_TOOLSET}")
|
2016-09-19 11:50:08 +08:00
|
|
|
endif()
|
2018-03-02 00:31:14 +08:00
|
|
|
|
2017-02-04 00:16:13 +08:00
|
|
|
# If we use Ninja, make sure it's on PATH
|
|
|
|
if(GENERATOR STREQUAL "Ninja")
|
|
|
|
vcpkg_find_acquire_program(NINJA)
|
|
|
|
get_filename_component(NINJA_PATH ${NINJA} DIRECTORY)
|
2019-09-20 18:52:33 +08:00
|
|
|
vcpkg_add_to_path("${NINJA_PATH}")
|
2018-03-31 07:59:59 +08:00
|
|
|
list(APPEND _csc_OPTIONS "-DCMAKE_MAKE_PROGRAM=${NINJA}")
|
2017-02-04 00:16:13 +08:00
|
|
|
endif()
|
2016-09-19 11:50:08 +08:00
|
|
|
|
|
|
|
file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
|
|
|
|
|
2016-10-07 04:46:41 +08:00
|
|
|
if(DEFINED VCPKG_CMAKE_SYSTEM_NAME)
|
2017-10-17 02:22:21 +08:00
|
|
|
list(APPEND _csc_OPTIONS "-DCMAKE_SYSTEM_NAME=${VCPKG_CMAKE_SYSTEM_NAME}")
|
2019-07-10 05:53:48 +08:00
|
|
|
if(_TARGETTING_UWP AND NOT DEFINED VCPKG_CMAKE_SYSTEM_VERSION)
|
2018-11-21 08:28:12 +08:00
|
|
|
set(VCPKG_CMAKE_SYSTEM_VERSION 10.0)
|
|
|
|
endif()
|
2016-10-07 04:46:41 +08:00
|
|
|
endif()
|
2019-07-10 05:53:48 +08:00
|
|
|
|
2016-10-07 04:46:41 +08:00
|
|
|
if(DEFINED VCPKG_CMAKE_SYSTEM_VERSION)
|
2017-10-17 02:22:21 +08:00
|
|
|
list(APPEND _csc_OPTIONS "-DCMAKE_SYSTEM_VERSION=${VCPKG_CMAKE_SYSTEM_VERSION}")
|
2016-10-07 04:46:41 +08:00
|
|
|
endif()
|
2017-10-17 02:22:21 +08:00
|
|
|
|
|
|
|
if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
|
2016-10-08 07:34:31 +08:00
|
|
|
list(APPEND _csc_OPTIONS -DBUILD_SHARED_LIBS=ON)
|
2017-10-17 02:22:21 +08:00
|
|
|
elseif(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
|
2016-10-19 03:55:37 +08:00
|
|
|
list(APPEND _csc_OPTIONS -DBUILD_SHARED_LIBS=OFF)
|
2017-10-17 02:22:21 +08:00
|
|
|
else()
|
2019-07-10 05:53:48 +08:00
|
|
|
message(FATAL_ERROR
|
|
|
|
"Invalid setting for VCPKG_LIBRARY_LINKAGE: \"${VCPKG_LIBRARY_LINKAGE}\". "
|
|
|
|
"It must be \"static\" or \"dynamic\"")
|
2017-05-31 03:24:21 +08:00
|
|
|
endif()
|
2020-01-18 07:36:08 +08:00
|
|
|
|
2019-07-10 05:53:48 +08:00
|
|
|
macro(check_both_vars_are_set var1 var2)
|
|
|
|
if((NOT DEFINED ${var1} OR NOT DEFINED ${var2}) AND (DEFINED ${var1} OR DEFINED ${var2}))
|
|
|
|
message(FATAL_ERROR "Both ${var1} and ${var2} must be set.")
|
|
|
|
endif()
|
|
|
|
endmacro()
|
2020-01-18 07:36:08 +08:00
|
|
|
|
2019-07-10 05:53:48 +08:00
|
|
|
check_both_vars_are_set(VCPKG_CXX_FLAGS_DEBUG VCPKG_C_FLAGS_DEBUG)
|
|
|
|
check_both_vars_are_set(VCPKG_CXX_FLAGS_RELEASE VCPKG_C_FLAGS_RELEASE)
|
|
|
|
check_both_vars_are_set(VCPKG_CXX_FLAGS VCPKG_C_FLAGS)
|
|
|
|
|
2019-07-01 00:31:22 +08:00
|
|
|
set(VCPKG_SET_CHARSET_FLAG ON)
|
|
|
|
if(_csc_NO_CHARSET_FLAG)
|
|
|
|
set(VCPKG_SET_CHARSET_FLAG OFF)
|
|
|
|
endif()
|
2016-10-07 04:46:41 +08:00
|
|
|
|
2019-07-10 05:53:48 +08:00
|
|
|
if(NOT VCPKG_CHAINLOAD_TOOLCHAIN_FILE)
|
|
|
|
if(NOT DEFINED VCPKG_CMAKE_SYSTEM_NAME OR _TARGETTING_UWP)
|
2019-09-13 14:52:52 +08:00
|
|
|
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/windows.cmake")
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
2019-09-13 14:52:52 +08:00
|
|
|
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/linux.cmake")
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android")
|
2019-09-13 14:52:52 +08:00
|
|
|
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/android.cmake")
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
2019-09-13 14:52:52 +08:00
|
|
|
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/osx.cmake")
|
Add initial iOS support (#6275)
* Add iOS community triplets and toolchain support
Added an iOS toolchain to enable building packages for iOS.
The toolchain is used when a triplet's VCPKG_CMAKE_SYSTEM_NAME is set
to iOS.
To configure which architecture should be built, as well as other
iOS specifics, the following triplet variables can be set:
- VCPKG_TARGET_ARCHITECTURE
- VCPKG_OSX_SYSROOT
- VCPKG_OSX_DEPLOYMENT_TARGET
- VCPKG_OSX_ARCHITECTURES
The following VCPKG_TARGET_ARCHITECTURE values are currently
supported:
- arm, arm64, x64, x86.
The following VCPKG_OSX_SYSROOT values are currently supported:
- iphoneos, iphonesimulator, or an absolute path to the device or
simulator Xcode SDK.
VCPKG_OSX_DEPLOYMENT_TARGET can be set to control the minimum iOS
delopyment target for the built libraries.
CMAKE_OSX_ARCHITECTURES is derived from VCPKG_TARGET_ARCHITECTURE,
so generally it should not be set. In case if someone needs to target
a more specific architecture (like armv7k or arm64e), it can
be set in the triplet via VCPKG_OSX_ARCHITECTURES.
Note that only certain combinations of the architecture and sysroot
will work: simulator SDKs only provide x86-based libraries, etc.
The toolchain also sets CMAKE_SYSTEM_PROCESSOR for certain
configurations, because certain packages (like libpng) depend on the
processor type.
Added 4 community iOS triplets that build static libraries:
- arm-ios, arm64-ios, x86-ios, x64-ios.
The non-arm triplets target the iOS simulator.
The triplets build static libraries because they are easiest to
integrate into an iOS project. Dynamic libraries or frameworks require
code signing on iOS, which complicates integration.
Added heuristics to try and automatically detect what iOS triplet to
use when building your own CMake project (so when a CMake project sets
CMAKE_TOOLCHAIN_FILE to buildsystems/vcpkg.cmake), if no explicit
triplet is provided (VCPKG_TARGET_TRIPLET is undefined).
The heuristic checks for the values of CMAKE_SYSTEM_NAME and
CMAKE_OSX_ARCHITECTURES. Note that for this to work,
CMAKE_OSX_ARCHITECTURES needs to be set before the first project()
call in your CMake project.
Added workaround so find_package finds vcpkg installed packages
when targeting iOS.
This is done by saving / restoring the value of CMAKE_FIND_ROOT_PATH
while also adding the vcpkg package root in the find_package override
macro.
The workaround can be removed once vcpkg upgrades to CMake 3.15.0
or higher where the issue is fixed.
Fixes: #6003
* Fix building libpng and pcre2 targetting iOS
Fixes: #6003
2020-04-16 04:06:55 +08:00
|
|
|
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "iOS")
|
|
|
|
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/ios.cmake")
|
2019-07-10 05:53:48 +08:00
|
|
|
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
2019-09-13 14:52:52 +08:00
|
|
|
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/freebsd.cmake")
|
2020-01-18 07:36:08 +08:00
|
|
|
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "MinGW")
|
|
|
|
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/mingw.cmake")
|
2019-07-10 05:53:48 +08:00
|
|
|
endif()
|
2017-10-17 02:22:21 +08:00
|
|
|
endif()
|
|
|
|
|
2019-07-01 00:31:22 +08:00
|
|
|
|
2016-10-12 01:32:40 +08:00
|
|
|
list(APPEND _csc_OPTIONS
|
2019-07-10 05:53:48 +08:00
|
|
|
"-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}"
|
2017-03-31 15:35:40 +08:00
|
|
|
"-DVCPKG_TARGET_TRIPLET=${TARGET_TRIPLET}"
|
2019-07-01 00:31:22 +08:00
|
|
|
"-DVCPKG_SET_CHARSET_FLAG=${VCPKG_SET_CHARSET_FLAG}"
|
2018-04-03 11:40:25 +08:00
|
|
|
"-DVCPKG_PLATFORM_TOOLSET=${VCPKG_PLATFORM_TOOLSET}"
|
2016-12-06 17:26:21 +08:00
|
|
|
"-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON"
|
|
|
|
"-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON"
|
|
|
|
"-DCMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY=ON"
|
2017-03-07 02:35:03 +08:00
|
|
|
"-DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=TRUE"
|
|
|
|
"-DCMAKE_VERBOSE_MAKEFILE=ON"
|
2017-03-21 16:48:40 +08:00
|
|
|
"-DVCPKG_APPLOCAL_DEPS=OFF"
|
2019-09-13 14:52:52 +08:00
|
|
|
"-DCMAKE_TOOLCHAIN_FILE=${SCRIPTS}/buildsystems/vcpkg.cmake"
|
2017-03-21 16:48:40 +08:00
|
|
|
"-DCMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION=ON"
|
2018-03-07 01:57:37 +08:00
|
|
|
"-DVCPKG_CXX_FLAGS=${VCPKG_CXX_FLAGS}"
|
|
|
|
"-DVCPKG_CXX_FLAGS_RELEASE=${VCPKG_CXX_FLAGS_RELEASE}"
|
|
|
|
"-DVCPKG_CXX_FLAGS_DEBUG=${VCPKG_CXX_FLAGS_DEBUG}"
|
|
|
|
"-DVCPKG_C_FLAGS=${VCPKG_C_FLAGS}"
|
|
|
|
"-DVCPKG_C_FLAGS_RELEASE=${VCPKG_C_FLAGS_RELEASE}"
|
|
|
|
"-DVCPKG_C_FLAGS_DEBUG=${VCPKG_C_FLAGS_DEBUG}"
|
|
|
|
"-DVCPKG_CRT_LINKAGE=${VCPKG_CRT_LINKAGE}"
|
|
|
|
"-DVCPKG_LINKER_FLAGS=${VCPKG_LINKER_FLAGS}"
|
2019-06-15 04:09:38 +08:00
|
|
|
"-DVCPKG_TARGET_ARCHITECTURE=${VCPKG_TARGET_ARCHITECTURE}"
|
2018-03-24 07:23:37 +08:00
|
|
|
"-DCMAKE_INSTALL_LIBDIR:STRING=lib"
|
|
|
|
"-DCMAKE_INSTALL_BINDIR:STRING=bin"
|
2020-06-04 10:31:28 +08:00
|
|
|
"-D_VCPKG_ROOT_DIR=${VCPKG_ROOT_DIR}"
|
|
|
|
"-D_VCPKG_INSTALLED_DIR=${_VCPKG_INSTALLED_DIR}"
|
[vcpkg manifest] Manifest Implementation (#11757)
==== Changes Related to manifests ====
* Add the `manifests` feature flag
* This only says whether we look for a `vcpkg.json` in the cwd, not
whether we support parsing manifests (for ports, for example)
* Changes to the manifests RFC
* `"authors"` -> `"maintainers"`
* `--x-classic-mode` -> `-manifests` \in `vcpkg_feature_flags`
* reserve `"core"` in addition to `"default"`, since that's already
reserved for features
* Add a small helper note about what identifiers must look like
* `<license-string>`: SPDX v3.8 -> v3.9
* `"feature"."description"` is allowed to be an array of strings as well
* `"version"` -> `"version-string"` for forward-compat with versions
RFC
* Add the `--feature-flags` option
* Add the ability to turn off feature flags via passing
`-<feature-flag>` to `VCPKG_FEATURE_FLAGS` or `--feature-flags`
* Add CMake toolchain support for manifests
* Requires either:
* a feature flag of `manifests` in either `Env{VCPKG_FEATURE_FLAGS}`
or `VCPKG_FEATURE_FLAGS`
* Passing the `VCPKG_ENABLE_MANIFESTS` option
* The toolchain will install your packages to
`${VCPKG_MANIFEST_DIR}/vcpkg_installed`.
* Add MSBuild `vcpkg integrate install` support for manifests
* Requires `VcpkgEnableManifest` to be true
* `vcpkg create` creates a port that has a `vcpkg.json` instead of a
`CONTROL`
* argparse, abseil, 3fd, and avisynthplus ports switched to manifest
from CONTROL
* Add support for `--x-manifest-root`, as well as code for finding it if
not passed
* Add support for parsing manifests!
* Add a filesystem lock!
==== Important Changes which are somewhat unrelated to manifests ====
* Rename `logicexpression.{h,cpp}` to `platform-expression.{h,cpp}`
* Add `PlatformExpression` type which takes the place of the old logic
expression
* Split the parsing of platform expressions from checking whether
they're true or not
* Eagerly parse PlatformExpressions as opposed to leaving them as
strings
* Add checking for feature flag consistency
* i.e., if `-binarycaching` is passed, you shouldn't be passing
`--binarysource`
* Add the `Json::Reader` type which, with the help of user-defined
visitors, converts JSON to your internal type
* VcpkgArgParser: place the switch names into a constant as opposed to
using magic constants
* In general update the parsing code so that this ^ works
* Add `Port-Version` fields to CONTROL files
* This replaces the existing practice of
`Version: <my-version>-<port-version>`
==== Smaller changes ====
* small drive-by cleanups to some CMake
* `${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}` ->
`${CURRENT_INSTALLED_DIR}`
* Remove `-analyze` when compiling with clang-cl, since that's not a
supported flag (vcpkg's build system)
* Add a message about which compiler is detected by vcpkg's build
system machinery
* Fix `Expected::then`
* Convert `""` to `{}` for `std::string` and `fs::path`, to avoid a
`strlen` (additionally, `.empty()` instead of `== ""`, and `.clear()`)
* Add `Strings::strto` which converts strings to numeric types
* Support built-in arrays and `StringView` for `Strings::join`
* Add `operator<` and friends to `StringView`
* Add `substr` to `StringView`
* SourceParagraphParser gets some new errors
2020-07-01 01:40:18 +08:00
|
|
|
"-DVCPKG_MANIFEST_INSTALL=OFF"
|
2016-10-12 01:32:40 +08:00
|
|
|
)
|
2017-05-31 03:24:21 +08:00
|
|
|
|
2017-09-24 21:01:37 +08:00
|
|
|
if(DEFINED ARCH)
|
|
|
|
list(APPEND _csc_OPTIONS
|
|
|
|
"-A${ARCH}"
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2018-10-24 07:49:48 +08:00
|
|
|
# Sets configuration variables for macOS builds
|
Add initial iOS support (#6275)
* Add iOS community triplets and toolchain support
Added an iOS toolchain to enable building packages for iOS.
The toolchain is used when a triplet's VCPKG_CMAKE_SYSTEM_NAME is set
to iOS.
To configure which architecture should be built, as well as other
iOS specifics, the following triplet variables can be set:
- VCPKG_TARGET_ARCHITECTURE
- VCPKG_OSX_SYSROOT
- VCPKG_OSX_DEPLOYMENT_TARGET
- VCPKG_OSX_ARCHITECTURES
The following VCPKG_TARGET_ARCHITECTURE values are currently
supported:
- arm, arm64, x64, x86.
The following VCPKG_OSX_SYSROOT values are currently supported:
- iphoneos, iphonesimulator, or an absolute path to the device or
simulator Xcode SDK.
VCPKG_OSX_DEPLOYMENT_TARGET can be set to control the minimum iOS
delopyment target for the built libraries.
CMAKE_OSX_ARCHITECTURES is derived from VCPKG_TARGET_ARCHITECTURE,
so generally it should not be set. In case if someone needs to target
a more specific architecture (like armv7k or arm64e), it can
be set in the triplet via VCPKG_OSX_ARCHITECTURES.
Note that only certain combinations of the architecture and sysroot
will work: simulator SDKs only provide x86-based libraries, etc.
The toolchain also sets CMAKE_SYSTEM_PROCESSOR for certain
configurations, because certain packages (like libpng) depend on the
processor type.
Added 4 community iOS triplets that build static libraries:
- arm-ios, arm64-ios, x86-ios, x64-ios.
The non-arm triplets target the iOS simulator.
The triplets build static libraries because they are easiest to
integrate into an iOS project. Dynamic libraries or frameworks require
code signing on iOS, which complicates integration.
Added heuristics to try and automatically detect what iOS triplet to
use when building your own CMake project (so when a CMake project sets
CMAKE_TOOLCHAIN_FILE to buildsystems/vcpkg.cmake), if no explicit
triplet is provided (VCPKG_TARGET_TRIPLET is undefined).
The heuristic checks for the values of CMAKE_SYSTEM_NAME and
CMAKE_OSX_ARCHITECTURES. Note that for this to work,
CMAKE_OSX_ARCHITECTURES needs to be set before the first project()
call in your CMake project.
Added workaround so find_package finds vcpkg installed packages
when targeting iOS.
This is done by saving / restoring the value of CMAKE_FIND_ROOT_PATH
while also adding the vcpkg package root in the find_package override
macro.
The workaround can be removed once vcpkg upgrades to CMake 3.15.0
or higher where the issue is fixed.
Fixes: #6003
* Fix building libpng and pcre2 targetting iOS
Fixes: #6003
2020-04-16 04:06:55 +08:00
|
|
|
foreach(config_var INSTALL_NAME_DIR OSX_DEPLOYMENT_TARGET OSX_SYSROOT OSX_ARCHITECTURES)
|
2019-07-10 05:53:48 +08:00
|
|
|
if(DEFINED VCPKG_${config_var})
|
|
|
|
list(APPEND _csc_OPTIONS "-DCMAKE_${config_var}=${VCPKG_${config_var}}")
|
|
|
|
endif()
|
|
|
|
endforeach()
|
2018-10-24 07:49:48 +08:00
|
|
|
|
2018-02-08 08:57:47 +08:00
|
|
|
set(rel_command
|
2018-02-22 08:44:50 +08:00
|
|
|
${CMAKE_COMMAND} ${_csc_SOURCE_PATH} "${_csc_OPTIONS}" "${_csc_OPTIONS_RELEASE}"
|
2018-02-08 08:57:47 +08:00
|
|
|
-G ${GENERATOR}
|
|
|
|
-DCMAKE_BUILD_TYPE=Release
|
|
|
|
-DCMAKE_INSTALL_PREFIX=${CURRENT_PACKAGES_DIR})
|
|
|
|
set(dbg_command
|
2018-02-22 08:44:50 +08:00
|
|
|
${CMAKE_COMMAND} ${_csc_SOURCE_PATH} "${_csc_OPTIONS}" "${_csc_OPTIONS_DEBUG}"
|
2018-02-08 08:57:47 +08:00
|
|
|
-G ${GENERATOR}
|
|
|
|
-DCMAKE_BUILD_TYPE=Debug
|
|
|
|
-DCMAKE_INSTALL_PREFIX=${CURRENT_PACKAGES_DIR}/debug)
|
|
|
|
|
2019-07-10 05:53:48 +08:00
|
|
|
if(NINJA_HOST AND CMAKE_HOST_WIN32 AND NOT _csc_DISABLE_PARALLEL_CONFIGURE)
|
2018-02-08 08:57:47 +08:00
|
|
|
|
|
|
|
vcpkg_find_acquire_program(NINJA)
|
|
|
|
get_filename_component(NINJA_PATH ${NINJA} DIRECTORY)
|
2019-09-20 18:52:33 +08:00
|
|
|
vcpkg_add_to_path("${NINJA_PATH}")
|
2018-02-08 08:57:47 +08:00
|
|
|
|
|
|
|
#parallelize the configure step
|
|
|
|
set(_contents
|
|
|
|
"rule CreateProcess\n command = $process\n\n"
|
2017-11-26 07:25:18 +08:00
|
|
|
)
|
2016-09-19 11:50:08 +08:00
|
|
|
|
2019-07-10 05:53:48 +08:00
|
|
|
macro(_build_cmakecache whereat build_type)
|
|
|
|
set(${build_type}_line "build ${whereat}/CMakeCache.txt: CreateProcess\n process = cmd /c \"cd ${whereat} &&")
|
|
|
|
foreach(arg ${${build_type}_command})
|
|
|
|
set(${build_type}_line "${${build_type}_line} \"${arg}\"")
|
2018-02-08 08:57:47 +08:00
|
|
|
endforeach()
|
2019-07-10 05:53:48 +08:00
|
|
|
set(_contents "${_contents}${${build_type}_line}\"\n\n")
|
|
|
|
endmacro()
|
2018-02-08 08:57:47 +08:00
|
|
|
|
2019-07-10 05:53:48 +08:00
|
|
|
if(NOT DEFINED VCPKG_BUILD_TYPE)
|
|
|
|
_build_cmakecache(".." "rel")
|
|
|
|
_build_cmakecache("../../${TARGET_TRIPLET}-dbg" "dbg")
|
|
|
|
elseif(VCPKG_BUILD_TYPE STREQUAL "release")
|
|
|
|
_build_cmakecache(".." "rel")
|
|
|
|
elseif(VCPKG_BUILD_TYPE STREQUAL "debug")
|
|
|
|
_build_cmakecache("../../${TARGET_TRIPLET}-dbg" "dbg")
|
2018-02-08 08:57:47 +08:00
|
|
|
endif()
|
|
|
|
|
|
|
|
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/vcpkg-parallel-configure)
|
|
|
|
file(WRITE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/vcpkg-parallel-configure/build.ninja "${_contents}")
|
|
|
|
|
|
|
|
message(STATUS "Configuring ${TARGET_TRIPLET}")
|
2017-11-26 07:25:18 +08:00
|
|
|
vcpkg_execute_required_process(
|
2018-02-08 08:57:47 +08:00
|
|
|
COMMAND ninja -v
|
|
|
|
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/vcpkg-parallel-configure
|
|
|
|
LOGNAME config-${TARGET_TRIPLET}
|
2017-11-26 07:25:18 +08:00
|
|
|
)
|
2018-02-08 08:57:47 +08:00
|
|
|
else()
|
|
|
|
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
|
|
|
|
message(STATUS "Configuring ${TARGET_TRIPLET}-dbg")
|
|
|
|
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
|
|
|
|
vcpkg_execute_required_process(
|
|
|
|
COMMAND ${dbg_command}
|
|
|
|
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg
|
|
|
|
LOGNAME config-${TARGET_TRIPLET}-dbg
|
|
|
|
)
|
|
|
|
endif()
|
2018-03-02 00:31:14 +08:00
|
|
|
|
|
|
|
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
|
|
|
|
message(STATUS "Configuring ${TARGET_TRIPLET}-rel")
|
|
|
|
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
|
|
|
|
vcpkg_execute_required_process(
|
|
|
|
COMMAND ${rel_command}
|
|
|
|
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel
|
|
|
|
LOGNAME config-${TARGET_TRIPLET}-rel
|
|
|
|
)
|
|
|
|
endif()
|
2017-11-26 07:25:18 +08:00
|
|
|
endif()
|
2017-10-06 08:49:28 +08:00
|
|
|
|
|
|
|
set(_VCPKG_CMAKE_GENERATOR "${GENERATOR}" PARENT_SCOPE)
|
2018-03-02 00:31:14 +08:00
|
|
|
endfunction()
|