mirror of https://github.com/microsoft/vcpkg.git
[vcpkg] Refactor toolchain & generator selection (#23846)
* put default generator and toolchain selection into a function * update version-date of script * version stuff * restore PREFER_NINJA behavior on windows use elseif instead of else * cr ws change * missing , * version stuff * CR scripts/cmake/vcpkg_configure_cmake.cmake Co-authored-by: nicole mazzuca <mazzucan@outlook.com> * CR changes * revert baseline * update version * bump version * version stuff * ci retrigger Co-authored-by: Alexander Neumann <you@example.com> Co-authored-by: nicole mazzuca <mazzucan@outlook.com>
This commit is contained in:
parent
e9fcbfe8e1
commit
c556911a79
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "vcpkg-cmake",
|
||||
"version-date": "2022-04-05",
|
||||
"version-date": "2022-04-07",
|
||||
"license": "MIT"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -159,71 +159,18 @@ function(vcpkg_cmake_configure)
|
|||
set(ninja_can_be_used OFF)
|
||||
endif()
|
||||
|
||||
set(generator)
|
||||
set(generator "Ninja")
|
||||
if(DEFINED arg_GENERATOR)
|
||||
set(generator "${arg_GENERATOR}")
|
||||
elseif(arg_WINDOWS_USE_MSBUILD OR NOT ninja_can_be_used)
|
||||
if(VCPKG_PLATFORM_TOOLSET STREQUAL "v120")
|
||||
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
|
||||
set(generator "Visual Studio 12 2013")
|
||||
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
|
||||
set(generator "Visual Studio 12 2013 Win64")
|
||||
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
|
||||
set(generator "Visual Studio 12 2013 ARM")
|
||||
endif()
|
||||
elseif(VCPKG_PLATFORM_TOOLSET STREQUAL "v140")
|
||||
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
|
||||
set(generator "Visual Studio 14 2015")
|
||||
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
|
||||
set(generator "Visual Studio 14 2015 Win64")
|
||||
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
|
||||
set(generator "Visual Studio 14 2015 ARM")
|
||||
endif()
|
||||
elseif(VCPKG_PLATFORM_TOOLSET STREQUAL "v141")
|
||||
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
|
||||
set(generator "Visual Studio 15 2017")
|
||||
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
|
||||
set(generator "Visual Studio 15 2017 Win64")
|
||||
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
|
||||
set(generator "Visual Studio 15 2017 ARM")
|
||||
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
|
||||
set(generator "Visual Studio 15 2017")
|
||||
set(arch "ARM64")
|
||||
endif()
|
||||
elseif(VCPKG_PLATFORM_TOOLSET STREQUAL "v142")
|
||||
set(generator "Visual Studio 16 2019")
|
||||
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
|
||||
set(arch "Win32")
|
||||
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
|
||||
set(arch "x64")
|
||||
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
|
||||
set(arch "ARM")
|
||||
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
|
||||
set(arch "ARM64")
|
||||
else()
|
||||
set(generator)
|
||||
endif()
|
||||
elseif(VCPKG_PLATFORM_TOOLSET STREQUAL "v143")
|
||||
set(generator "Visual Studio 17 2022")
|
||||
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
|
||||
set(arch "Win32")
|
||||
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
|
||||
set(arch "x64")
|
||||
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
|
||||
set(arch "ARM")
|
||||
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
|
||||
set(arch "ARM64")
|
||||
else()
|
||||
set(generator)
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
set(generator "Ninja")
|
||||
set(generator "")
|
||||
set(arch "")
|
||||
z_vcpkg_get_visual_studio_generator(OUT_GENERATOR generator OUT_ARCH arch)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED generator)
|
||||
if(NOT generator)
|
||||
if(NOT VCPKG_CMAKE_SYSTEM_NAME)
|
||||
set(VCPKG_CMAKE_SYSTEM_NAME Windows)
|
||||
set(VCPKG_CMAKE_SYSTEM_NAME "Windows")
|
||||
endif()
|
||||
message(FATAL_ERROR "Unable to determine appropriate generator for: "
|
||||
"${VCPKG_CMAKE_SYSTEM_NAME}-${VCPKG_TARGET_ARCHITECTURE}-${VCPKG_PLATFORM_TOOLSET}")
|
||||
|
|
@ -280,23 +227,7 @@ function(vcpkg_cmake_configure)
|
|||
endif()
|
||||
|
||||
if(NOT DEFINED VCPKG_CHAINLOAD_TOOLCHAIN_FILE)
|
||||
if(VCPKG_TARGET_IS_MINGW)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/mingw.cmake")
|
||||
elseif(VCPKG_TARGET_IS_WINDOWS)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/windows.cmake")
|
||||
elseif(VCPKG_TARGET_IS_LINUX)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/linux.cmake")
|
||||
elseif(VCPKG_TARGET_IS_ANDROID)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/android.cmake")
|
||||
elseif(VCPKG_TARGET_IS_OSX)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/osx.cmake")
|
||||
elseif(VCPKG_TARGET_IS_IOS)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/ios.cmake")
|
||||
elseif(VCPKG_TARGET_IS_FREEBSD)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/freebsd.cmake")
|
||||
elseif(VCPKG_TARGET_IS_OPENBSD)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/openbsd.cmake")
|
||||
endif()
|
||||
z_vcpkg_select_default_vcpkg_chainload_toolchain()
|
||||
endif()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -98,6 +98,68 @@ function(z_vcpkg_configure_cmake_build_cmakecache out_var whereat build_type)
|
|||
set("${out_var}" "${${out_var}}${line}\"\n\n" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(z_vcpkg_get_visual_studio_generator)
|
||||
cmake_parse_arguments(PARSE_ARGV 0 arg "" "OUT_GENERATOR;OUT_ARCH" "")
|
||||
|
||||
if (NOT DEFINED arg_OUT_GENERATOR)
|
||||
message(FATAL_ERROR "OUT_GENERATOR must be defined.")
|
||||
endif()
|
||||
if(NOT DEFINED arg_OUT_ARCH)
|
||||
message(FATAL_ERROR "OUT_ARCH must be defined.")
|
||||
endif()
|
||||
if(DEFINED arg_UNPARSED_ARGUMENTS)
|
||||
message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} was passed extra arguments: ${arg_UNPARSED_ARGUMENTS}")
|
||||
endif()
|
||||
if("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v120" AND NOT "${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm64")
|
||||
set(generator "Visual Studio 12 2013")
|
||||
elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v140" AND NOT "${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm64")
|
||||
set(generator "Visual Studio 14 2015")
|
||||
elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v141")
|
||||
set(generator "Visual Studio 15 2017")
|
||||
elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v142")
|
||||
set(generator "Visual Studio 16 2019")
|
||||
elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v143")
|
||||
set(generator "Visual Studio 17 2022")
|
||||
endif()
|
||||
|
||||
if("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "x86")
|
||||
set(generator_arch "Win32")
|
||||
elseif("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "x64")
|
||||
set(generator_arch "x64")
|
||||
elseif("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm")
|
||||
set(generator_arch "ARM")
|
||||
elseif("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm64")
|
||||
set(generator_arch "ARM64")
|
||||
endif()
|
||||
set(${arg_OUT_GENERATOR} "${generator}" PARENT_SCOPE)
|
||||
set(${arg_OUT_ARCH} "${generator_arch}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(z_vcpkg_select_default_vcpkg_chainload_toolchain)
|
||||
# Try avoiding adding more defaults here.
|
||||
# Set VCPKG_CHAINLOAD_TOOLCHAIN_FILE explicitly in the triplet.
|
||||
if(DEFINED Z_VCPKG_CHAINLOAD_TOOLCHAIN_FILE)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${Z_VCPKG_CHAINLOAD_TOOLCHAIN_FILE}")
|
||||
elseif(VCPKG_TARGET_IS_MINGW)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/mingw.cmake")
|
||||
elseif(VCPKG_TARGET_IS_WINDOWS)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/windows.cmake")
|
||||
elseif(VCPKG_TARGET_IS_LINUX)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/linux.cmake")
|
||||
elseif(VCPKG_TARGET_IS_ANDROID)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/android.cmake")
|
||||
elseif(VCPKG_TARGET_IS_OSX)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/osx.cmake")
|
||||
elseif(VCPKG_TARGET_IS_IOS)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/ios.cmake")
|
||||
elseif(VCPKG_TARGET_IS_FREEBSD)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/freebsd.cmake")
|
||||
elseif(VCPKG_TARGET_IS_OPENBSD)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/openbsd.cmake")
|
||||
endif()
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE ${VCPKG_CHAINLOAD_TOOLCHAIN_FILE} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
|
||||
function(vcpkg_configure_cmake)
|
||||
cmake_parse_arguments(PARSE_ARGV 0 arg
|
||||
|
|
@ -142,6 +204,10 @@ function(vcpkg_configure_cmake)
|
|||
set(ninja_can_be_used ON) # Ninja as generator
|
||||
set(ninja_host ON) # Ninja as parallel configurator
|
||||
|
||||
if(NOT arg_PREFER_NINJA AND VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
|
||||
set(ninja_can_be_used OFF)
|
||||
endif()
|
||||
|
||||
if(VCPKG_HOST_IS_WINDOWS)
|
||||
if(DEFINED ENV{PROCESSOR_ARCHITEW6432})
|
||||
set(host_arch "$ENV{PROCESSOR_ARCHITEW6432}")
|
||||
|
|
@ -159,38 +225,13 @@ function(vcpkg_configure_cmake)
|
|||
endif()
|
||||
endif()
|
||||
|
||||
set(generator "")
|
||||
set(generator "Ninja") # the default generator is always ninja!
|
||||
set(generator_arch "")
|
||||
if(DEFINED arg_GENERATOR)
|
||||
set(generator "${arg_GENERATOR}")
|
||||
elseif(arg_PREFER_NINJA AND ninja_can_be_used)
|
||||
set(generator "Ninja")
|
||||
elseif(VCPKG_CHAINLOAD_TOOLCHAIN_FILE OR NOT VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_MINGW)
|
||||
set(generator "Ninja")
|
||||
|
||||
else()
|
||||
if("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v120" AND NOT "${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm64")
|
||||
set(generator "Visual Studio 12 2013")
|
||||
elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v140" AND NOT "${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm64")
|
||||
set(generator "Visual Studio 14 2015")
|
||||
elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v141")
|
||||
set(generator "Visual Studio 15 2017")
|
||||
elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v142")
|
||||
set(generator "Visual Studio 16 2019")
|
||||
elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v143")
|
||||
set(generator "Visual Studio 17 2022")
|
||||
endif()
|
||||
|
||||
if("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "x86")
|
||||
set(generator_arch "Win32")
|
||||
elseif("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "x64")
|
||||
set(generator_arch "x64")
|
||||
elseif("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm")
|
||||
set(generator_arch "ARM")
|
||||
elseif("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm64")
|
||||
set(generator_arch "ARM64")
|
||||
endif()
|
||||
|
||||
elseif(NOT ninja_can_be_used)
|
||||
set(generator "")
|
||||
z_vcpkg_get_visual_studio_generator(OUT_GENERATOR generator OUT_ARCH generator_arch)
|
||||
if("${generator}" STREQUAL "" OR "${generator_arch}" STREQUAL "")
|
||||
message(FATAL_ERROR
|
||||
"Unable to determine appropriate generator for triplet ${TARGET_TRIPLET}:
|
||||
|
|
@ -244,23 +285,7 @@ function(vcpkg_configure_cmake)
|
|||
endif()
|
||||
|
||||
if(NOT VCPKG_CHAINLOAD_TOOLCHAIN_FILE)
|
||||
if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/windows.cmake")
|
||||
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/linux.cmake")
|
||||
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/android.cmake")
|
||||
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/osx.cmake")
|
||||
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "iOS")
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/ios.cmake")
|
||||
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/freebsd.cmake")
|
||||
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/openbsd.cmake")
|
||||
elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "MinGW")
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/mingw.cmake")
|
||||
endif()
|
||||
z_vcpkg_select_default_vcpkg_chainload_toolchain()
|
||||
endif()
|
||||
|
||||
vcpkg_list(APPEND arg_OPTIONS
|
||||
|
|
|
|||
|
|
@ -204,23 +204,7 @@ function(z_vcpkg_meson_generate_native_file_config config_type) #https://mesonbu
|
|||
string(APPEND native_file "[cmake]\n")
|
||||
|
||||
if(NOT VCPKG_CHAINLOAD_TOOLCHAIN_FILE)
|
||||
if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/windows.cmake")
|
||||
elseif(VCPKG_TARGET_IS_LINUX)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/linux.cmake")
|
||||
elseif(VCPKG_TARGET_IS_ANDROID)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/android.cmake")
|
||||
elseif(VCPKG_TARGET_IS_OSX)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/osx.cmake")
|
||||
elseif(VCPKG_TARGET_IS_IOS)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/ios.cmake")
|
||||
elseif(VCPKG_TARGET_IS_FREEBSD)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/freebsd.cmake")
|
||||
elseif(VCPKG_TARGET_IS_OPENBSD)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/openbsd.cmake")
|
||||
elseif(VCPKG_TARGET_IS_MINGW)
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/mingw.cmake")
|
||||
endif()
|
||||
z_vcpkg_select_default_vcpkg_chainload_toolchain()
|
||||
endif()
|
||||
|
||||
string(APPEND native_file "VCPKG_TARGET_TRIPLET = '${TARGET_TRIPLET}'\n")
|
||||
|
|
|
|||
|
|
@ -7289,7 +7289,7 @@
|
|||
"port-version": 1
|
||||
},
|
||||
"vcpkg-cmake": {
|
||||
"baseline": "2022-04-05",
|
||||
"baseline": "2022-04-07",
|
||||
"port-version": 0
|
||||
},
|
||||
"vcpkg-cmake-config": {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
{
|
||||
"versions": [
|
||||
{
|
||||
"git-tree": "3dcb01563c0de941013579456d19ce5b0bd08a6e",
|
||||
"version-date": "2022-04-07",
|
||||
"port-version": 0
|
||||
},
|
||||
{
|
||||
"git-tree": "34d8604d164edd2903bdb833adf30fe1516c9982",
|
||||
"version-date": "2022-04-05",
|
||||
|
|
|
|||
Loading…
Reference in New Issue