aboutsummaryrefslogtreecommitdiff
path: root/scripts/cmake
diff options
context:
space:
mode:
authorKai Pastor <dg0yt@darc.de>2021-10-01 08:58:36 +0200
committerGitHub <noreply@github.com>2021-09-30 23:58:36 -0700
commit2ed5383f7b88b23975f9cfd325f6451fd8716fb2 (patch)
treee35a8fd32812c05c3e35c513fcfa8610d7447707 /scripts/cmake
parent41874992952fffd37c60583391802e29b6f14d86 (diff)
downloadvcpkg-2ed5383f7b88b23975f9cfd325f6451fd8716fb2.tar.gz
vcpkg-2ed5383f7b88b23975f9cfd325f6451fd8716fb2.zip
[vcpkg_configure_make] Standardize `OPTIONS` list item handling (#19540)
* Remove unused EXTRA_QUOTES * Uniformly invoke 'configure' * [libtasn1] Fix mingw build * Unify prefix handling * Revise install dir processing * x-add-version * Force libdir to lib (adopted from #19666) * [skip actions] CI rebuild * CR request: Put backslash before shell var * CR request: Use vcpkg_list * Update versions * Fix python3 options * Update versions * Bump python port-version. * CR request: Add comment about backslashes before prefix Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
Diffstat (limited to 'scripts/cmake')
-rw-r--r--scripts/cmake/vcpkg_configure_make.cmake88
1 files changed, 43 insertions, 45 deletions
diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake
index a80641512..0b8e88be1 100644
--- a/scripts/cmake/vcpkg_configure_make.cmake
+++ b/scripts/cmake/vcpkg_configure_make.cmake
@@ -302,6 +302,7 @@ function(vcpkg_configure_make)
set(_vcm_paths_with_spaces TRUE)
endif()
+ set(CONFIGURE_ENV "V=1")
# Pre-processing windows configure requirements
if (VCPKG_TARGET_IS_WINDOWS)
if(CMAKE_HOST_WIN32)
@@ -351,7 +352,6 @@ function(vcpkg_configure_make)
endif()
endmacro()
- set(CONFIGURE_ENV "V=1")
# Remove full filepaths due to spaces and prepend filepaths to PATH (cross-compiling tools are unlikely on path by default)
set(progs VCPKG_DETECTED_CMAKE_C_COMPILER VCPKG_DETECTED_CMAKE_CXX_COMPILER VCPKG_DETECTED_CMAKE_AR
VCPKG_DETECTED_CMAKE_LINKER VCPKG_DETECTED_CMAKE_RANLIB VCPKG_DETECTED_CMAKE_OBJDUMP
@@ -448,17 +448,16 @@ function(vcpkg_configure_make)
endif()
endif()
+ # Some PATH handling for dealing with spaces....some tools will still fail with that!
+ # In particular, the libtool install command is unable to install correctly to paths with spaces.
+ # CURRENT_INSTALLED_DIR: Pristine native path (unprotected spaces, Windows drive letters)
+ # _VCPKG_INSTALLED: Native path with escaped space characters
+ # _VCPKG_PREFIX: Path with unprotected spaces, but drive letters transformed for mingw/msys
+ string(REPLACE " " "\\ " _VCPKG_INSTALLED "${CURRENT_INSTALLED_DIR}")
if(CMAKE_HOST_WIN32)
- #Some PATH handling for dealing with spaces....some tools will still fail with that!
- string(REPLACE " " "\\\ " _VCPKG_PREFIX ${CURRENT_INSTALLED_DIR})
- string(REGEX REPLACE "([a-zA-Z]):/" "/\\1/" _VCPKG_PREFIX "${_VCPKG_PREFIX}")
- set(_VCPKG_INSTALLED ${CURRENT_INSTALLED_DIR})
- set(prefix_var "'\${prefix}'") # Windows needs extra quotes or else the variable gets expanded in the makefile!
+ string(REGEX REPLACE "([a-zA-Z]):/" "/\\1/" _VCPKG_PREFIX "${CURRENT_INSTALLED_DIR}")
else()
- string(REPLACE " " "\ " _VCPKG_PREFIX ${CURRENT_INSTALLED_DIR})
- string(REPLACE " " "\ " _VCPKG_INSTALLED ${CURRENT_INSTALLED_DIR})
- set(EXTRA_QUOTES)
- set(prefix_var "\${prefix}")
+ set(_VCPKG_PREFIX "${CURRENT_INSTALLED_DIR}")
endif()
# macOS - cross-compiling support
@@ -484,25 +483,26 @@ function(vcpkg_configure_make)
"${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}")
# Set configure paths
- set(_csc_OPTIONS_RELEASE ${_csc_OPTIONS_RELEASE} "--prefix=${EXTRA_QUOTES}${_VCPKG_PREFIX}${EXTRA_QUOTES}")
- set(_csc_OPTIONS_DEBUG ${_csc_OPTIONS_DEBUG} "--prefix=${EXTRA_QUOTES}${_VCPKG_PREFIX}/debug${EXTRA_QUOTES}")
+ set(_csc_OPTIONS_RELEASE ${_csc_OPTIONS_RELEASE} "--prefix=${_VCPKG_PREFIX}")
+ set(_csc_OPTIONS_DEBUG ${_csc_OPTIONS_DEBUG} "--prefix=${_VCPKG_PREFIX}/debug")
if(NOT _csc_NO_ADDITIONAL_PATHS)
+ # ${prefix} has an extra backslash to prevent early expansion when calling `bash -c configure "..."`.
set(_csc_OPTIONS_RELEASE ${_csc_OPTIONS_RELEASE}
# Important: These should all be relative to prefix!
- "--bindir=${prefix_var}/tools/${PORT}/bin"
- "--sbindir=${prefix_var}/tools/${PORT}/sbin"
- "--libdir=${prefix_var}/lib" # On some Linux distributions lib64 is the default
+ "--bindir=\\\${prefix}/tools/${PORT}/bin"
+ "--sbindir=\\\${prefix}/tools/${PORT}/sbin"
+ "--libdir=\\\${prefix}/lib" # On some Linux distributions lib64 is the default
#"--includedir='\${prefix}'/include" # already the default!
- "--mandir=${prefix_var}/share/${PORT}"
- "--docdir=${prefix_var}/share/${PORT}"
- "--datarootdir=${prefix_var}/share/${PORT}")
+ "--mandir=\\\${prefix}/share/${PORT}"
+ "--docdir=\\\${prefix}/share/${PORT}"
+ "--datarootdir=\\\${prefix}/share/${PORT}")
set(_csc_OPTIONS_DEBUG ${_csc_OPTIONS_DEBUG}
# Important: These should all be relative to prefix!
- "--bindir=${prefix_var}/../tools/${PORT}/debug/bin"
- "--sbindir=${prefix_var}/../tools/${PORT}/debug/sbin"
- "--libdir=${prefix_var}/lib" # On some Linux distributions lib64 is the default
- "--includedir=${prefix_var}/../include"
- "--datarootdir=${prefix_var}/share/${PORT}")
+ "--bindir=\\\${prefix}/../tools/${PORT}/debug/bin"
+ "--sbindir=\\\${prefix}/../tools/${PORT}/debug/sbin"
+ "--libdir=\\\${prefix}/lib" # On some Linux distributions lib64 is the default
+ "--includedir=\\\${prefix}/../include"
+ "--datarootdir=\\\${prefix}/share/${PORT}")
endif()
# Setup common options
if(NOT DISABLE_VERBOSE_FLAGS)
@@ -534,18 +534,13 @@ function(vcpkg_configure_make)
else()
find_program(base_cmd bash REQUIRED)
endif()
- if(VCPKG_TARGET_IS_WINDOWS)
- list(JOIN _csc_OPTIONS " " _csc_OPTIONS)
- list(JOIN _csc_OPTIONS_RELEASE " " _csc_OPTIONS_RELEASE)
- list(JOIN _csc_OPTIONS_DEBUG " " _csc_OPTIONS_DEBUG)
- endif()
# Setup include environment (since these are buildtype independent restoring them is unnecessary)
macro(prepend_include_path var)
if("${${var}_BACKUP}" STREQUAL "")
- set(ENV{${var}} "${_VCPKG_INSTALLED}/include")
+ set(ENV{${var}} "${CURRENT_INSTALLED_DIR}/include")
else()
- set(ENV{${var}} "${_VCPKG_INSTALLED}/include${VCPKG_HOST_PATH_SEPARATOR}${${var}_BACKUP}")
+ set(ENV{${var}} "${CURRENT_INSTALLED_DIR}/include${VCPKG_HOST_PATH_SEPARATOR}${${var}_BACKUP}")
endif()
endmacro()
# Used by CL
@@ -693,10 +688,10 @@ function(vcpkg_configure_make)
endif()
else()
set(_link_dirs)
- if(EXISTS "${_VCPKG_INSTALLED}${PATH_SUFFIX_${_VAR_SUFFIX}}/lib")
+ if(EXISTS "${CURRENT_INSTALLED_DIR}${PATH_SUFFIX_${_VAR_SUFFIX}}/lib")
set(_link_dirs "-L${_VCPKG_INSTALLED}${PATH_SUFFIX_${_VAR_SUFFIX}}/lib")
endif()
- if(EXISTS "{_VCPKG_INSTALLED}${PATH_SUFFIX_${_VAR_SUFFIX}}/lib/manual-link")
+ if(EXISTS "{CURRENT_INSTALLED_DIR}${PATH_SUFFIX_${_VAR_SUFFIX}}/lib/manual-link")
set(_link_dirs "${_link_dirs} -L${_VCPKG_INSTALLED}${PATH_SUFFIX_${_VAR_SUFFIX}}/lib/manual-link")
endif()
string(STRIP "${_link_dirs}" _link_dirs)
@@ -726,10 +721,10 @@ function(vcpkg_configure_make)
endif()
else()
set(_link_dirs)
- if(EXISTS "${_VCPKG_INSTALLED}${PATH_SUFFIX_${_VAR_SUFFIX}}/lib")
+ if(EXISTS "${CURRENT_INSTALLED_DIR}${PATH_SUFFIX_${_VAR_SUFFIX}}/lib")
set(_link_dirs "-L${_VCPKG_INSTALLED}${PATH_SUFFIX_${_VAR_SUFFIX}}/lib")
endif()
- if(EXISTS "{_VCPKG_INSTALLED}${PATH_SUFFIX_${_VAR_SUFFIX}}/lib/manual-link")
+ if(EXISTS "{CURRENT_INSTALLED_DIR}${PATH_SUFFIX_${_VAR_SUFFIX}}/lib/manual-link")
set(_link_dirs "${_link_dirs} -L${_VCPKG_INSTALLED}${PATH_SUFFIX_${_VAR_SUFFIX}}/lib/manual-link")
endif()
string(STRIP "${_link_dirs}" _link_dirs)
@@ -738,6 +733,15 @@ function(vcpkg_configure_make)
unset(_VAR_SUFFIX)
endif()
+ foreach(var IN ITEMS _csc_OPTIONS _csc_OPTIONS_RELEASE _csc_OPTIONS_DEBUG)
+ vcpkg_list(SET tmp)
+ foreach(element IN LISTS "${var}")
+ string(REPLACE [["]] [[\"]] element "${element}")
+ vcpkg_list(APPEND tmp "\"${element}\"")
+ endforeach()
+ vcpkg_list(JOIN tmp " " "${var}")
+ endforeach()
+
foreach(_buildtype IN LISTS _buildtypes)
foreach(ENV_VAR ${_csc_CONFIG_DEPENDENT_ENVIRONMENT})
if(DEFINED ENV{${ENV_VAR}})
@@ -788,27 +792,21 @@ function(vcpkg_configure_make)
set(_lib_env_vars LIB LIBPATH LIBRARY_PATH LD_LIBRARY_PATH)
foreach(_lib_env_var IN LISTS _lib_env_vars)
set(_link_path)
- if(EXISTS "${_VCPKG_INSTALLED}${PATH_SUFFIX_${_buildtype}}/lib")
- set(_link_path "${_VCPKG_INSTALLED}${PATH_SUFFIX_${_buildtype}}/lib")
+ if(EXISTS "${CURRENT_INSTALLED_DIR}${PATH_SUFFIX_${_buildtype}}/lib")
+ set(_link_path "${CURRENT_INSTALLED_DIR}${PATH_SUFFIX_${_buildtype}}/lib")
endif()
- if(EXISTS "${_VCPKG_INSTALLED}${PATH_SUFFIX_${_buildtype}}/lib/manual-link")
+ if(EXISTS "${CURRENT_INSTALLED_DIR}${PATH_SUFFIX_${_buildtype}}/lib/manual-link")
if(_link_path)
set(_link_path "${_link_path}${VCPKG_HOST_PATH_SEPARATOR}")
endif()
- set(_link_path "${_link_path}${_VCPKG_INSTALLED}${PATH_SUFFIX_${_buildtype}}/lib/manual-link")
+ set(_link_path "${_link_path}${CURRENT_INSTALLED_DIR}${PATH_SUFFIX_${_buildtype}}/lib/manual-link")
endif()
set(ENV{${_lib_env_var}} "${_link_path}${${_lib_env_var}_PATHLIKE_CONCAT}")
endforeach()
unset(_link_path)
unset(_lib_env_vars)
- if(CMAKE_HOST_WIN32)
- set(command "${base_cmd}" -c "${CONFIGURE_ENV} ./${RELATIVE_BUILD_PATH}/configure ${_csc_BUILD_TRIPLET} ${_csc_OPTIONS} ${_csc_OPTIONS_${_buildtype}}")
- elseif(VCPKG_TARGET_IS_WINDOWS)
- set(command "${base_cmd}" -c "${CONFIGURE_ENV} $@" -- "./${RELATIVE_BUILD_PATH}/configure" ${_csc_BUILD_TRIPLET} ${_csc_OPTIONS} ${_csc_OPTIONS_${_buildtype}})
- else()
- set(command "${base_cmd}" "./${RELATIVE_BUILD_PATH}/configure" ${_csc_BUILD_TRIPLET} ${_csc_OPTIONS} ${_csc_OPTIONS_${_buildtype}})
- endif()
+ set(command "${base_cmd}" -c "${CONFIGURE_ENV} ./${RELATIVE_BUILD_PATH}/configure ${_csc_BUILD_TRIPLET} ${_csc_OPTIONS} ${_csc_OPTIONS_${_buildtype}}")
if(_csc_ADD_BIN_TO_PATH)
set(PATH_BACKUP $ENV{PATH})