aboutsummaryrefslogtreecommitdiff
path: root/scripts/get_cmake_vars
diff options
context:
space:
mode:
authorpastdue <30942300+past-due@users.noreply.github.com>2021-01-28 22:38:32 -0500
committerGitHub <noreply@github.com>2021-01-28 19:38:32 -0800
commit7115ef469d20bf4a3aba3dcfbb38629bcc57ac5b (patch)
treee3e22fbd44f36e12cae0a4c97a683551f78e0095 /scripts/get_cmake_vars
parentb063d0cee7389514a0841cf1e2e055d6466fe4b8 (diff)
downloadvcpkg-7115ef469d20bf4a3aba3dcfbb38629bcc57ac5b.tar.gz
vcpkg-7115ef469d20bf4a3aba3dcfbb38629bcc57ac5b.zip
vcpkg_configure_make: Support macOS cross-compile (#15659)
* vcpkg_configure_make: Support macOS cross-compile * Move compiler flags logic to get_cmake_vars * Better match the arch behavior of config.guess * Apply suggestions from code review Co-authored-by: Billy O'Neal <bion@microsoft.com> Co-authored-by: Billy O'Neal <bion@microsoft.com>
Diffstat (limited to 'scripts/get_cmake_vars')
-rw-r--r--scripts/get_cmake_vars/CMakeLists.txt32
1 files changed, 26 insertions, 6 deletions
diff --git a/scripts/get_cmake_vars/CMakeLists.txt b/scripts/get_cmake_vars/CMakeLists.txt
index 45a53989b..6be594787 100644
--- a/scripts/get_cmake_vars/CMakeLists.txt
+++ b/scripts/get_cmake_vars/CMakeLists.txt
@@ -48,6 +48,12 @@ foreach(flag IN LISTS FLAGS)
endforeach()
list(REMOVE_DUPLICATES VCPKG_DEFAULT_FLAGS_TO_CHECK)
+#Language-specific flags.
+foreach(_lang IN LISTS VCPKG_LANGUAGES)
+ list(APPEND VCPKG_LANG_FLAGS CMAKE_${_lang}_FLAGS)
+endforeach()
+list(REMOVE_DUPLICATES VCPKG_LANG_FLAGS)
+
# TODO if ever necessary: Properties to check
set(VCPKG_VAR_PREFIX "VCPKG_DETECTED" CACHE STRING "Variable prefix to use for detected flags")
@@ -81,17 +87,31 @@ foreach(_env IN LISTS VCPKG_ENV_VARS_TO_CHECK)
endif()
endforeach()
+macro(_vcpkg_adjust_flags flag_var)
+ if(MSVC) # Transform MSVC /flags to -flags due to bash scripts intepreting /flag as a path.
+ string(REGEX REPLACE "(^| )/" "\\1-" ${flag_var} "${${flag_var}}")
+ endif()
+ if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
+ if("${flag_var}" IN_LIST VCPKG_LANG_FLAGS)
+ # macOS - append arch and isysroot if cross-compiling
+ if(NOT "${CMAKE_OSX_ARCHITECTURES}" STREQUAL "${CMAKE_HOST_SYSTEM_PROCESSOR}")
+
+ foreach(arch IN LISTS CMAKE_OSX_ARCHITECTURES)
+ string(APPEND ${flag_var} " -arch ${arch}")
+ endforeach()
+ string(APPEND ${flag_var} " -isysroot ${CMAKE_OSX_SYSROOT}")
+ endif()
+ endif()
+ endif()
+endmacro()
+
foreach(flag IN LISTS VCPKG_FLAGS_TO_CHECK)
string(STRIP "${${flag}}" ${flag}) # Strip leading and trailing whitespaces
- if(MSVC) # Transform MSVC /flags to -flags due to bash scripts intepreting /flag as a path.
- string(REGEX REPLACE "(^| )/" "\\1-" ${flag} "${${flag}}")
- endif()
+ _vcpkg_adjust_flags(${flag})
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_RAW_${flag} \" ${${flag}}\")\n")
foreach(config IN LISTS VCPKG_CONFIGS)
string(STRIP "${${flag}_${config}}" ${flag}_${config})
- if(MSVC)
- string(REGEX REPLACE "(^| )/" "\\1-" ${flag}_${config} "${${flag}_${config}}")
- endif()
+ _vcpkg_adjust_flags(${flag}_${config})
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_RAW_${flag}_${config} \"${CMAKE_${flag}_FLAGS_${config}}\")\n")
set(COMBINED_${flag}_${config} "${${flag}} ${${flag}_${config}}")
string(STRIP "${COMBINED_${flag}_${config}}" COMBINED_${flag}_${config})