[PATCH] D68292: [CMake] Disable building all Darwin libraries (except builtins) for macOS i386 when the SDK is >= 10.15.
Dan Liew via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 15 22:48:55 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rG8a5bfbe6db28: [CMake] Disable building all Darwin libraries (except builtins) for macOS i386… (authored by delcypher).
Changed prior to commit:
https://reviews.llvm.org/D68292?vs=222677&id=225163#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D68292/new/
https://reviews.llvm.org/D68292
Files:
compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake
Index: compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake
===================================================================
--- compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake
+++ compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake
@@ -41,6 +41,41 @@
set(DARWIN_${sdk_name}_CACHED_SYSROOT ${var_internal} CACHE STRING "Darwin SDK path for SDK ${sdk_name}." FORCE)
endfunction()
+function(find_darwin_sdk_version var sdk_name)
+ # We deliberately don't cache the result here because
+ # CMake's caching causes too many problems.
+ set(result_process 1)
+ if(NOT DARWIN_PREFER_PUBLIC_SDK)
+ # Let's first try the internal SDK, otherwise use the public SDK.
+ execute_process(
+ COMMAND xcodebuild -version -sdk ${sdk_name}.internal SDKVersion
+ RESULT_VARIABLE result_process
+ OUTPUT_VARIABLE var_internal
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_FILE /dev/null
+ )
+ endif()
+ if((NOT ${result_process} EQUAL 0) OR "" STREQUAL "${var_internal}")
+ execute_process(
+ COMMAND xcodebuild -version -sdk ${sdk_name} SDKVersion
+ RESULT_VARIABLE result_process
+ OUTPUT_VARIABLE var_internal
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_FILE /dev/null
+ )
+ endif()
+ if(NOT result_process EQUAL 0)
+ message(FATAL_ERROR
+ "Failed to determine SDK version for \"${sdk_name}\" SDK")
+ endif()
+ # Check reported version looks sane.
+ if (NOT "${var_internal}" MATCHES "^[0-9]+\\.[0-9]+(\\.[0-9]+)?$")
+ message(FATAL_ERROR
+ "Reported SDK version \"${var_internal}\" does not look like a version")
+ endif()
+ set(${var} ${var_internal} PARENT_SCOPE)
+endfunction()
+
# There isn't a clear mapping of what architectures are supported with a given
# target platform, but ld's version output does list the architectures it can
# link for.
@@ -77,11 +112,22 @@
message(STATUS "Finding valid architectures for ${os}...")
set(SIMPLE_C ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/src.c)
file(WRITE ${SIMPLE_C} "#include <stdio.h>\nint main() { printf(__FILE__); return 0; }\n")
-
+
set(os_linker_flags)
foreach(flag ${DARWIN_${os}_LINK_FLAGS})
set(os_linker_flags "${os_linker_flags} ${flag}")
endforeach()
+
+ # Disable building for i386 for macOS SDK >= 10.15. The SDK doesn't support
+ # linking for i386 and the corresponding OS doesn't allow running macOS i386
+ # binaries.
+ if ("${os}" STREQUAL "osx")
+ find_darwin_sdk_version(macosx_sdk_version "macosx")
+ if ("${macosx_sdk_version}" VERSION_GREATER 10.15 OR "${macosx_sdk_version}" VERSION_EQUAL 10.15)
+ message(STATUS "Disabling i386 slice for ${valid_archs}")
+ list(REMOVE_ITEM archs "i386")
+ endif()
+ endif()
endif()
# The simple program will build for x86_64h on the simulator because it is
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D68292.225163.patch
Type: text/x-patch
Size: 2857 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191016/35b32473/attachment.bin>
More information about the llvm-commits
mailing list