From 03db084961d679de7ae45575e610bd7fe074976e Mon Sep 17 00:00:00 2001 From: Thomas A Date: Sun, 27 Sep 2020 18:53:31 -0700 Subject: [PATCH] Abstract Architecture Detection/Assignment The main goal of this commit is to make it more easy to add or update any architecture we want to support (such as ARM64). Any changes we want to make would be done in the architectures.cmake file. The secondary goal of this commit is to encourage a more architecture generic nomenclature. We shouldn't use i368/x86_64 unless we are dealing with code that is specific to those architectures. --- CMakeLists.txt | 3 + .../XcodeDefault.xctoolchain/usr/bin/ld | 2 +- cmake/architecture.cmake | 36 ++++++ cmake/darling_exe.cmake | 12 +- cmake/darling_framework.cmake | 116 +++++++++--------- cmake/darling_lib.cmake | 50 ++++---- cmake/darling_static_lib.cmake | 16 +-- cmake/use_ld64.cmake | 6 +- src/CMakeLists.txt | 8 +- src/dyld/CMakeLists.txt | 8 +- src/libc/CMakeLists.txt | 6 +- src/libm/CMakeLists.txt | 4 +- src/xtrace/CMakeLists.txt | 2 +- 13 files changed, 154 insertions(+), 115 deletions(-) create mode 100644 cmake/architecture.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ae60d80f..42de0cb4c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,7 @@ include(InstallSymlink) include(MacroEnsureOutOfSourceBuild) include(dsym) include(xcproj) +include(architecture) MACRO_ENSURE_OUT_OF_SOURCE_BUILD() @@ -99,6 +100,8 @@ find_package(Setcap REQUIRED) # Missing CMakeLists.txt must trigger an error cmake_policy(SET CMP0014 NEW) +generate_architecture() + add_subdirectory(src) install(DIRECTORY DESTINATION libexec/darling/private) diff --git a/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld b/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld index 992b1c59f..98ea780b8 100755 --- a/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld +++ b/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld @@ -1,6 +1,6 @@ #!/bin/bash SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -LD="$SCRIPTDIR/../../../../../build/src/external/cctools-port/cctools/ld64/src/x86_64-apple-darwin11-ld" +LD="$SCRIPTDIR/../../../../../build/src/external/cctools-port/cctools/ld64/src/${APPLE_TARGET_TRIPLET_PRIMARY}-ld" "$LD" "$@" diff --git a/cmake/architecture.cmake b/cmake/architecture.cmake new file mode 100644 index 000000000..e738fa696 --- /dev/null +++ b/cmake/architecture.cmake @@ -0,0 +1,36 @@ +macro(generate_architecture) + if (TARGET_x86_64) + set(APPLE_ARCH_64BIT "x86_64") + else () + set(APPLE_ARCH_64BIT "") + endif () + + if (TARGET_i386) + set(APPLE_ARCH_32BIT "i386") + else () + set(APPLE_ARCH_32BIT "") + endif () + + if (TARGET_x86_64) + set(BUILD_TARGET_64BIT TRUE) + set(APPLE_TARGET_TRIPLET_64BIT "x86_64-apple-darwin11") + else () + set(BUILD_TARGET_64BIT FALSE) + set(APPLE_TARGET_TRIPLET_64BIT "") + endif () + if (TARGET_i386) + set(BUILD_TARGET_32BIT TRUE) + set(APPLE_TARGET_TRIPLET_32BIT "i386-apple-darwin11") + else () + set(BUILD_TARGET_32BIT FALSE) + set(APPLE_TARGET_TRIPLET_32BIT "") + endif () + + if (BUILD_TARGET_64BIT) + set(APPLE_TARGET_TRIPLET_PRIMARY ${APPLE_TARGET_TRIPLET_64BIT}) + elseif (BUILD_TARGET_32BIT) + set(APPLE_TARGET_TRIPLET_PRIMARY ${APPLE_TARGET_TRIPLET_32BIT}) + else () + set(APPLE_TARGET_TRIPLET_PRIMARY "") + endif () +endmacro() diff --git a/cmake/darling_exe.cmake b/cmake/darling_exe.cmake index ff1baaae7..63527ba2d 100644 --- a/cmake/darling_exe.cmake +++ b/cmake/darling_exe.cmake @@ -14,13 +14,13 @@ FUNCTION(add_darling_executable exe) set_property(TARGET ${exe} APPEND_STRING PROPERTY LINK_FLAGS " ${CMAKE_EXE_LINKER_FLAGS} -nostdlib ${CMAKE_BINARY_DIR}/src/csu/CMakeFiles/csu.dir/crt1.10.6.o ") - if (TARGET_x86_64) - target_compile_options(${exe} PRIVATE -arch x86_64) - elseif (TARGET_i386) - target_compile_options(${exe} PRIVATE -arch i386) + if (BUILD_TARGET_64BIT) + target_compile_options(${exe} PRIVATE -arch ${APPLE_ARCH_64BIT}) + elseif (BUILD_TARGET_32BIT) + target_compile_options(${exe} PRIVATE -arch ${APPLE_ARCH_32BIT}) set_property(TARGET ${exe} APPEND_STRING PROPERTY - LINK_FLAGS " -arch i386") - endif (TARGET_x86_64) + LINK_FLAGS " -arch ${APPLE_ARCH_32BIT}") + endif (BUILD_TARGET_64BIT) use_ld64(${exe}) target_link_libraries(${exe} system) diff --git a/cmake/darling_framework.cmake b/cmake/darling_framework.cmake index fb7282c5a..ca021d2a9 100644 --- a/cmake/darling_framework.cmake +++ b/cmake/darling_framework.cmake @@ -132,83 +132,83 @@ function(add_separated_framework name) # `add_darling_object_library` automatically adds arch flags based on the same variables we use, so this works fine add_darling_object_library(${my_name}_obj ${FRAMEWORK_SOURCES}) - if (TARGET_i386) - set(DARLING_LIB_i386_ONLY TRUE) + if (BUILD_TARGET_32BIT) + set(DARLING_LIB_32BIT_ONLY TRUE) if (FRAMEWORK_CIRCULAR_DEPENDENCIES OR FRAMEWORK_UPWARD_DEPENDENCIES) - add_circular(${my_name}_i386 + add_circular(${my_name}_${APPLE_ARCH_32BIT} SIBLINGS ${FRAMEWORK_CIRCULAR_DEPENDENCIES} UPWARD ${FRAMEWORK_UPWARD_DEPENDENCIES} OBJECTS $ ${FRAMEWORK_OBJECTS} STRONG_DEPENDENCIES ${FRAMEWORK_STRONG_DEPENDENCIES} ) else (FRAMEWORK_CIRCULAR_DEPENDENCIES OR FRAMEWORK_UPWARD_DEPENDENCIES) - add_darling_library(${my_name}_i386 $ ${FRAMEWORK_OBJECTS}) - target_link_libraries(${my_name}_i386 PRIVATE ${FRAMEWORK_STRONG_DEPENDENCIES}) + add_darling_library(${my_name}_${APPLE_ARCH_32BIT} $ ${FRAMEWORK_OBJECTS}) + target_link_libraries(${my_name}_${APPLE_ARCH_32BIT} PRIVATE ${FRAMEWORK_STRONG_DEPENDENCIES}) endif (FRAMEWORK_CIRCULAR_DEPENDENCIES OR FRAMEWORK_UPWARD_DEPENDENCIES) - set(DARLING_LIB_i386_ONLY FALSE) - set_target_properties(${my_name}_i386 PROPERTIES - OUTPUT_NAME "${name}_i386" + set(DARLING_LIB_32BIT_ONLY FALSE) + set_target_properties(${my_name}_${APPLE_ARCH_32BIT} PROPERTIES + OUTPUT_NAME "${name}_${APPLE_ARCH_32BIT}" SUFFIX "" PREFIX "") - set_property(TARGET ${my_name}_i386 APPEND_STRING PROPERTY - COMPILE_FLAGS " -arch i386") - set_property(TARGET ${my_name}_i386 APPEND_STRING PROPERTY - LINK_FLAGS " -arch i386") + set_property(TARGET ${my_name}_${APPLE_ARCH_32BIT} APPEND_STRING PROPERTY + COMPILE_FLAGS " -arch ${APPLE_ARCH_32BIT}") + set_property(TARGET ${my_name}_${APPLE_ARCH_32BIT} APPEND_STRING PROPERTY + LINK_FLAGS " -arch ${APPLE_ARCH_32BIT}") if (NOT FRAMEWORK_CURRENT_VERSION) - add_library("${my_name}_i386" ALIAS "${name}_i386") + add_library("${my_name}_${APPLE_ARCH_32BIT}" ALIAS "${name}_${APPLE_ARCH_32BIT}") endif (NOT FRAMEWORK_CURRENT_VERSION) if (FRAMEWORK_DEPENDENCIES) - target_link_libraries(${my_name}_i386 PRIVATE ${FRAMEWORK_DEPENDENCIES}) + target_link_libraries(${my_name}_${APPLE_ARCH_32BIT} PRIVATE ${FRAMEWORK_DEPENDENCIES}) endif (FRAMEWORK_DEPENDENCIES) if (FRAMEWORK_LINK_FLAGS) - set_property(TARGET ${my_name}_i386 APPEND_STRING PROPERTY LINK_FLAGS " ${FRAMEWORK_LINK_FLAGS}") + set_property(TARGET ${my_name}_${APPLE_ARCH_32BIT} APPEND_STRING PROPERTY LINK_FLAGS " ${FRAMEWORK_LINK_FLAGS}") endif (FRAMEWORK_LINK_FLAGS) - endif (TARGET_i386) + endif (BUILD_TARGET_32BIT) - if (TARGET_x86_64) - set(DARLING_LIB_x86_64_ONLY TRUE) + if (BUILD_TARGET_64BIT) + set(DARLING_LIB_64BIT_ONLY TRUE) if (FRAMEWORK_CIRCULAR_DEPENDENCIES OR FRAMEWORK_UPWARD_DEPENDENCIES) - add_circular(${my_name}_x86_64 + add_circular(${my_name}_${APPLE_ARCH_64BIT} SIBLINGS ${FRAMEWORK_CIRCULAR_DEPENDENCIES} UPWARD ${FRAMEWORK_UPWARD_DEPENDENCIES} OBJECTS $ ${FRAMEWORK_OBJECTS} STRONG_DEPENDENCIES ${FRAMEWORK_STRONG_DEPENDENCIES} ) else (FRAMEWORK_CIRCULAR_DEPENDENCIES OR FRAMEWORK_UPWARD_DEPENDENCIES) - add_darling_library(${my_name}_x86_64 $ ${FRAMEWORK_OBJECTS}) - target_link_libraries(${my_name}_x86_64 PRIVATE ${FRAMEWORK_STRONG_DEPENDENCIES}) + add_darling_library(${my_name}_${APPLE_ARCH_64BIT} $ ${FRAMEWORK_OBJECTS}) + target_link_libraries(${my_name}_${APPLE_ARCH_64BIT} PRIVATE ${FRAMEWORK_STRONG_DEPENDENCIES}) endif (FRAMEWORK_CIRCULAR_DEPENDENCIES OR FRAMEWORK_UPWARD_DEPENDENCIES) - set(DARLING_LIB_x86_64_ONLY FALSE) - set_target_properties(${my_name}_x86_64 PROPERTIES - OUTPUT_NAME "${name}_x86_64" + set(DARLING_LIB_64BIT_ONLY FALSE) + set_target_properties(${my_name}_${APPLE_ARCH_64BIT} PROPERTIES + OUTPUT_NAME "${name}_${APPLE_ARCH_64BIT}" SUFFIX "" PREFIX "") - set_property(TARGET ${my_name}_x86_64 APPEND_STRING PROPERTY - COMPILE_FLAGS " -arch x86_64") - set_property(TARGET ${my_name}_x86_64 APPEND_STRING PROPERTY - LINK_FLAGS " -arch x86_64") + set_property(TARGET ${my_name}_${APPLE_ARCH_64BIT} APPEND_STRING PROPERTY + COMPILE_FLAGS " -arch ${APPLE_ARCH_64BIT}") + set_property(TARGET ${my_name}_${APPLE_ARCH_64BIT} APPEND_STRING PROPERTY + LINK_FLAGS " -arch ${APPLE_ARCH_64BIT}") if (NOT FRAMEWORK_CURRENT_VERSION) - add_library("${my_name}_x86_64" ALIAS "${name}_x86_64") + add_library("${my_name}_${APPLE_ARCH_64BIT}" ALIAS "${name}_${APPLE_ARCH_64BIT}") endif (NOT FRAMEWORK_CURRENT_VERSION) if (FRAMEWORK_DEPENDENCIES) - target_link_libraries(${my_name}_x86_64 PRIVATE ${FRAMEWORK_DEPENDENCIES}) + target_link_libraries(${my_name}_${APPLE_ARCH_64BIT} PRIVATE ${FRAMEWORK_DEPENDENCIES}) endif (FRAMEWORK_DEPENDENCIES) if (FRAMEWORK_LINK_FLAGS) - set_property(TARGET ${my_name}_x86_64 APPEND_STRING PROPERTY LINK_FLAGS " ${FRAMEWORK_LINK_FLAGS}") + set_property(TARGET ${my_name}_${APPLE_ARCH_64BIT} APPEND_STRING PROPERTY LINK_FLAGS " ${FRAMEWORK_LINK_FLAGS}") endif (FRAMEWORK_LINK_FLAGS) - endif (TARGET_x86_64) + endif (BUILD_TARGET_64BIT) - if (TARGET_i386 AND TARGET_x86_64) + if (BUILD_TARGET_32BIT AND BUILD_TARGET_64BIT) if (FRAMEWORK_CIRCULAR_DEPENDENCIES) - add_dependencies(${my_name}_x86_64_firstpass ${my_name}_i386_firstpass) - add_custom_command(TARGET ${my_name}_x86_64_firstpass POST_BUILD + add_dependencies(${my_name}_${APPLE_ARCH_64BIT}_firstpass ${my_name}_${APPLE_ARCH_32BIT}_firstpass) + add_custom_command(TARGET ${my_name}_${APPLE_ARCH_64BIT}_firstpass POST_BUILD COMMAND ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/lipo - -arch i386 $ - -arch x86_64 $ + -arch ${APPLE_ARCH_32BIT} $ + -arch ${APPLE_ARCH_64BIT} $ -create -output ${CMAKE_CURRENT_BINARY_DIR}/${my_name}_firstpass @@ -221,14 +221,14 @@ function(add_separated_framework name) PREFIX "" IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/${my_name}_firstpass ) - add_dependencies(${my_name}_firstpass ${my_name}_x86_64_firstpass) + add_dependencies(${my_name}_firstpass ${my_name}_${APPLE_ARCH_64BIT}_firstpass) endif (FRAMEWORK_CIRCULAR_DEPENDENCIES) - add_dependencies(${my_name}_x86_64 ${my_name}_i386) - add_custom_command(TARGET ${my_name}_x86_64 POST_BUILD + add_dependencies(${my_name}_${APPLE_ARCH_64BIT} ${my_name}_${APPLE_ARCH_32BIT}) + add_custom_command(TARGET ${my_name}_${APPLE_ARCH_64BIT} POST_BUILD COMMAND ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/lipo - -arch i386 $ - -arch x86_64 $ + -arch ${APPLE_ARCH_32BIT} $ + -arch ${APPLE_ARCH_64BIT} $ -create -output ${CMAKE_CURRENT_BINARY_DIR}/${my_name} @@ -241,12 +241,12 @@ function(add_separated_framework name) PREFIX "" IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/${my_name} ) - add_dependencies(${my_name} ${my_name}_x86_64) - elseif (TARGET_i386) + add_dependencies(${my_name} ${my_name}_${APPLE_ARCH_64BIT}) + elseif (BUILD_TARGET_32BIT) if (FRAMEWORK_CIRCULAR_DEPENDENCIES) - add_custom_command(TARGET ${my_name}_i386_firstpass POST_BUILD + add_custom_command(TARGET ${my_name}_${APPLE_ARCH_32BIT}_firstpass POST_BUILD COMMAND ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/lipo - -arch i386 $ + -arch ${APPLE_ARCH_32BIT} $ -create -output ${CMAKE_CURRENT_BINARY_DIR}/${my_name}_firstpass @@ -259,12 +259,12 @@ function(add_separated_framework name) PREFIX "" IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/${my_name}_firstpass ) - add_dependencies(${my_name}_firstpass ${my_name}_i386_firstpass) + add_dependencies(${my_name}_firstpass ${my_name}_${APPLE_ARCH_32BIT}_firstpass) endif (FRAMEWORK_CIRCULAR_DEPENDENCIES) - add_custom_command(TARGET ${my_name}_i386 POST_BUILD + add_custom_command(TARGET ${my_name}_${APPLE_ARCH_32BIT} POST_BUILD COMMAND ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/lipo - -arch i386 $ + -arch ${APPLE_ARCH_32BIT} $ -create -output ${CMAKE_CURRENT_BINARY_DIR}/${my_name} @@ -277,12 +277,12 @@ function(add_separated_framework name) PREFIX "" IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/${my_name} ) - add_dependencies(${my_name} ${my_name}_i386) - elseif (TARGET_x86_64) + add_dependencies(${my_name} ${my_name}_${APPLE_ARCH_32BIT}) + elseif (BUILD_TARGET_64BIT) if (FRAMEWORK_CIRCULAR_DEPENDENCIES) - add_custom_command(TARGET ${my_name}_x86_64_firstpass POST_BUILD + add_custom_command(TARGET ${my_name}_${APPLE_ARCH_64BIT}_firstpass POST_BUILD COMMAND ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/lipo - -arch x86_64 $ + -arch ${APPLE_ARCH_64BIT} $ -create -output ${CMAKE_CURRENT_BINARY_DIR}/${my_name}_firstpass @@ -295,12 +295,12 @@ function(add_separated_framework name) PREFIX "" IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/${my_name}_firstpass ) - add_dependencies(${my_name}_firstpass ${my_name}_x86_64_firstpass) + add_dependencies(${my_name}_firstpass ${my_name}_${APPLE_ARCH_64BIT}_firstpass) endif (FRAMEWORK_CIRCULAR_DEPENDENCIES) - add_custom_command(TARGET ${my_name}_x86_64 POST_BUILD + add_custom_command(TARGET ${my_name}_${APPLE_ARCH_64BIT} POST_BUILD COMMAND ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/lipo - -arch x86_64 $ + -arch ${APPLE_ARCH_64BIT} $ -create -output ${CMAKE_CURRENT_BINARY_DIR}/${my_name} @@ -313,8 +313,8 @@ function(add_separated_framework name) PREFIX "" IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/${my_name} ) - add_dependencies(${my_name} ${my_name}_x86_64) - endif (TARGET_i386 AND TARGET_x86_64) + add_dependencies(${my_name} ${my_name}_${APPLE_ARCH_64BIT}) + endif (BUILD_TARGET_32BIT AND BUILD_TARGET_64BIT) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${my_name} DESTINATION "libexec/darling/${sys_library_dir}/${dir_name}/${name}.framework/Versions/${FRAMEWORK_VERSION}/") diff --git a/cmake/darling_lib.cmake b/cmake/darling_lib.cmake index 60a11347c..bf6cd373f 100644 --- a/cmake/darling_lib.cmake +++ b/cmake/darling_lib.cmake @@ -44,14 +44,14 @@ FUNCTION(add_darling_library name) set_property(TARGET ${name} APPEND_STRING PROPERTY COMPILE_FLAGS " -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/") add_dependencies(${name} lipo) - if (TARGET_x86_64 AND NOT DARLING_LIB_i386_ONLY) - set_property(TARGET ${name} APPEND_STRING PROPERTY COMPILE_FLAGS " -arch x86_64") - set_property(TARGET ${name} APPEND_STRING PROPERTY LINK_FLAGS " -arch x86_64") - endif (TARGET_x86_64 AND NOT DARLING_LIB_i386_ONLY) - if (TARGET_i386 AND NOT DARLING_LIB_x86_64_ONLY) - set_property(TARGET ${name} APPEND_STRING PROPERTY COMPILE_FLAGS " -arch i386") - set_property(TARGET ${name} APPEND_STRING PROPERTY LINK_FLAGS " -arch i386") - endif (TARGET_i386 AND NOT DARLING_LIB_x86_64_ONLY) + if (BUILD_TARGET_64BIT AND NOT DARLING_LIB_32BIT_ONLY) + set_property(TARGET ${name} APPEND_STRING PROPERTY COMPILE_FLAGS " -arch ${APPLE_ARCH_64BIT}") + set_property(TARGET ${name} APPEND_STRING PROPERTY LINK_FLAGS " -arch ${APPLE_ARCH_64BIT}") + endif (BUILD_TARGET_64BIT AND NOT DARLING_LIB_32BIT_ONLY) + if (BUILD_TARGET_32BIT AND NOT DARLING_LIB_64BIT_ONLY) + set_property(TARGET ${name} APPEND_STRING PROPERTY COMPILE_FLAGS " -arch ${APPLE_ARCH_32BIT}") + set_property(TARGET ${name} APPEND_STRING PROPERTY LINK_FLAGS " -arch ${APPLE_ARCH_32BIT}") + endif (BUILD_TARGET_32BIT AND NOT DARLING_LIB_64BIT_ONLY) use_ld64(${name}) @@ -61,31 +61,31 @@ FUNCTION(add_darling_library name) ENDFUNCTION(add_darling_library) FUNCTION(make_fat) - if (TARGET_i386 AND TARGET_x86_64) + if (BUILD_TARGET_32BIT AND BUILD_TARGET_64BIT) set_property(TARGET ${ARGV} APPEND_STRING PROPERTY - COMPILE_FLAGS " -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/ -arch i386 -arch x86_64") + COMPILE_FLAGS " -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/ -arch ${APPLE_ARCH_32BIT} -arch ${APPLE_ARCH_64BIT}") set_property(TARGET ${ARGV} APPEND_STRING PROPERTY - LINK_FLAGS " -arch i386 -arch x86_64") + LINK_FLAGS " -arch ${APPLE_ARCH_32BIT} -arch ${APPLE_ARCH_64BIT}") foreach(tgt ${ARGV}) add_dependencies(${tgt} lipo) endforeach(tgt) - elseif (TARGET_i386) + elseif (BUILD_TARGET_32BIT) set_property(TARGET ${ARGV} APPEND_STRING PROPERTY - COMPILE_FLAGS " -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/ -arch i386") + COMPILE_FLAGS " -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/ -arch ${APPLE_ARCH_32BIT}") set_property(TARGET ${ARGV} APPEND_STRING PROPERTY - LINK_FLAGS " -arch i386") + LINK_FLAGS " -arch ${APPLE_ARCH_32BIT}") foreach(tgt ${ARGV}) add_dependencies(${tgt} lipo) endforeach(tgt) - elseif (TARGET_x86_64) + elseif (BUILD_TARGET_64BIT) set_property(TARGET ${ARGV} APPEND_STRING PROPERTY - COMPILE_FLAGS " -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/ -arch x86_64") + COMPILE_FLAGS " -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/ -arch ${APPLE_ARCH_64BIT}") set_property(TARGET ${ARGV} APPEND_STRING PROPERTY - LINK_FLAGS " -arch x86_64") + LINK_FLAGS " -arch ${APPLE_ARCH_64BIT}") foreach(tgt ${ARGV}) add_dependencies(${tgt} lipo) endforeach(tgt) - endif (TARGET_i386 AND TARGET_x86_64) + endif (BUILD_TARGET_32BIT AND BUILD_TARGET_64BIT) ENDFUNCTION(make_fat) # add_circular(name ...) @@ -172,7 +172,7 @@ FUNCTION(add_circular name) ENDFUNCTION(add_circular) function(add_darling_object_library name) - cmake_parse_arguments(OBJECT_LIB "i386_ONLY;x86_64_ONLY" "" "" ${ARGN}) + cmake_parse_arguments(OBJECT_LIB "32BIT_ONLY;64BIT_ONLY" "" "" ${ARGN}) foreach(f IN LISTS OBJECT_LIB_UNPARSED_ARGUMENTS) set(files ${files} ${f}) endforeach(f) @@ -181,10 +181,10 @@ function(add_darling_object_library name) add_dependencies(${name} lipo) set_property(TARGET ${name} APPEND_STRING PROPERTY COMPILE_FLAGS " -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/") - if (TARGET_i386 AND NOT OBJECT_LIB_x86_64_ONLY) - set_property(TARGET ${name} APPEND_STRING PROPERTY COMPILE_FLAGS " -arch i386") - endif (TARGET_i386 AND NOT OBJECT_LIB_x86_64_ONLY) - if (TARGET_x86_64 AND NOT OBJECT_LIB_i386_ONLY) - set_property(TARGET ${name} APPEND_STRING PROPERTY COMPILE_FLAGS " -arch x86_64") - endif (TARGET_x86_64 AND NOT OBJECT_LIB_i386_ONLY) + if (BUILD_TARGET_32BIT AND NOT OBJECT_LIB_64BIT_ONLY) + set_property(TARGET ${name} APPEND_STRING PROPERTY COMPILE_FLAGS " -arch ${APPLE_ARCH_32BIT}") + endif (BUILD_TARGET_32BIT AND NOT OBJECT_LIB_64BIT_ONLY) + if (BUILD_TARGET_64BIT AND NOT OBJECT_LIB_32BIT_ONLY) + set_property(TARGET ${name} APPEND_STRING PROPERTY COMPILE_FLAGS " -arch ${APPLE_ARCH_64BIT}") + endif (BUILD_TARGET_64BIT AND NOT OBJECT_LIB_32BIT_ONLY) endfunction(add_darling_object_library) diff --git a/cmake/darling_static_lib.cmake b/cmake/darling_static_lib.cmake index f3faa5086..bb416639e 100644 --- a/cmake/darling_static_lib.cmake +++ b/cmake/darling_static_lib.cmake @@ -4,29 +4,29 @@ cmake_policy(SET CMP0063 NEW) include(darling_lib) function(add_darling_static_library name) - cmake_parse_arguments(STATIC_LIB "FAT;x86_64_ONLY;i386_ONLY" "" "SOURCES" ${ARGN}) + cmake_parse_arguments(STATIC_LIB "FAT;64BIT_ONLY;32BIT_ONLY" "" "SOURCES" ${ARGN}) - set(CMAKE_AR "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/x86_64-apple-darwin11-ar") - set(CMAKE_RANLIB "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/x86_64-apple-darwin11-ranlib") + set(CMAKE_AR "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/${APPLE_TARGET_TRIPLET_PRIMARY}-ar") + set(CMAKE_RANLIB "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/${APPLE_TARGET_TRIPLET_PRIMARY}-ranlib") add_library(${name} STATIC ${STATIC_LIB_SOURCES}) set_property(TARGET ${name} APPEND_STRING PROPERTY COMPILE_FLAGS " -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/") set_property(TARGET ${name} APPEND_STRING PROPERTY LINK_FLAGS " -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/") add_dependencies(${name} lipo) - if (TARGET_x86_64 AND NOT STATIC_LIB_i386_ONLY) + if (BUILD_TARGET_64BIT AND NOT STATIC_LIB_32BIT_ONLY) set_property(TARGET ${name} APPEND_STRING PROPERTY - COMPILE_FLAGS " -arch x86_64") + COMPILE_FLAGS " -arch ${APPLE_ARCH_64BIT}") endif () - if (TARGET_i386 AND NOT STATIC_LIB_x86_64_ONLY) + if (BUILD_TARGET_32BIT AND NOT STATIC_LIB_64BIT_ONLY) set_property(TARGET ${name} APPEND_STRING PROPERTY - COMPILE_FLAGS " -arch i386") + COMPILE_FLAGS " -arch ${APPLE_ARCH_32BIT}") endif () if (STATIC_LIB_FAT) make_fat(${name}) endif (STATIC_LIB_FAT) - add_dependencies(${name} ranlib x86_64-apple-darwin11-ar) + add_dependencies(${name} ranlib ${APPLE_TARGET_TRIPLET_PRIMARY}-ar) endfunction(add_darling_static_library) diff --git a/cmake/use_ld64.cmake b/cmake/use_ld64.cmake index 0dde4c5c9..9c70e02e2 100644 --- a/cmake/use_ld64.cmake +++ b/cmake/use_ld64.cmake @@ -1,11 +1,11 @@ FUNCTION(use_ld64 target) set_property(TARGET ${target} APPEND_STRING PROPERTY - LINK_FLAGS " -fuse-ld=${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ld64/src/x86_64-apple-darwin11-ld ") + LINK_FLAGS " -fuse-ld=${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ld64/src/${APPLE_TARGET_TRIPLET_PRIMARY}-ld ") set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ld64/src/ \ -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/ \ --target x86_64-apple-darwin11 -Wl,-Z \ +-target ${APPLE_TARGET_TRIPLET_PRIMARY} -Wl,-Z \ -Wl,-dylib_file,/usr/lib/system/libsystem_c.dylib:${CMAKE_BINARY_DIR}/src/libc/libsystem_c_firstpass.dylib \ -Wl,-dylib_file,/usr/lib/system/libsystem_darwin.dylib:${CMAKE_BINARY_DIR}/src/libc/libdarwin/libsystem_darwin.dylib \ -Wl,-dylib_file,/usr/lib/system/libsystem_kernel.dylib:${CMAKE_BINARY_DIR}/src/kernel/libsystem_kernel_firstpass.dylib \ @@ -130,7 +130,7 @@ FUNCTION(use_ld64 target) -Wl,-dylib_file,/usr/lib/libnetwork.dylib:${CMAKE_BINARY_DIR}/src/external/libnetwork/libnetwork.dylib \ -Wl,-dylib_file,/usr/lib/system/libcache.dylib:${CMAKE_BINARY_DIR}/src/libcache/libcache.dylib") - add_dependencies(${target} x86_64-apple-darwin11-ld) + add_dependencies(${target} ${APPLE_TARGET_TRIPLET_PRIMARY}-ld) ENDFUNCTION(use_ld64) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0c6b62581..ed91700ec 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -70,11 +70,11 @@ add_definitions( -DTARGET_OS_MAC=1 ) -set(CMAKE_AR "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/x86_64-apple-darwin11-ar") -set(CMAKE_RANLIB "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/x86_64-apple-darwin11-ranlib") -#set(CMAKE_ASM_COMPILER "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/as/x86_64-apple-darwin11-as") +set(CMAKE_AR "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/${APPLE_TARGET_TRIPLET_PRIMARY}-ar") +set(CMAKE_RANLIB "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/${APPLE_TARGET_TRIPLET_PRIMARY}-ranlib") +#set(CMAKE_ASM_COMPILER "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/as/${APPLE_TARGET_TRIPLET_PRIMARY}-as") -add_definitions(-target x86_64-apple-darwin11) +add_definitions(-target ${APPLE_TARGET_TRIPLET_PRIMARY}) include(darling_lib) include(darling_static_lib) diff --git a/src/dyld/CMakeLists.txt b/src/dyld/CMakeLists.txt index fb190e3bd..e5fb9f838 100644 --- a/src/dyld/CMakeLists.txt +++ b/src/dyld/CMakeLists.txt @@ -127,13 +127,13 @@ target_link_libraries(system_loader libc_static system_blocks_static corecrypto_static ) -if (TARGET_i386) +if (BUILD_TARGET_32BIT) target_link_libraries(system_loader libc_static32 compiler_rt_static32 platform_static32) -endif (TARGET_i386) +endif (BUILD_TARGET_32BIT) -if (TARGET_x86_64) +if (BUILD_TARGET_64BIT) target_link_libraries(system_loader libc_static64 compiler_rt_static64 platform_static64) -endif (TARGET_x86_64) +endif (BUILD_TARGET_64BIT) make_fat(system_loader) diff --git a/src/libc/CMakeLists.txt b/src/libc/CMakeLists.txt index 9d16d641f..57570fbac 100644 --- a/src/libc/CMakeLists.txt +++ b/src/libc/CMakeLists.txt @@ -241,11 +241,11 @@ add_darling_static_library(libc_static SOURCES $ $ ) -add_dependencies(libc_static ranlib x86_64-apple-darwin11-ar) +add_dependencies(libc_static ranlib ${APPLE_TARGET_TRIPLET_PRIMARY}-ar) set_target_properties(libc_static PROPERTIES COMPILE_FLAGS "-ffunction-sections") add_library(libc_static64 STATIC $) -add_dependencies(libc_static64 ranlib x86_64-apple-darwin11-ar) +add_dependencies(libc_static64 ranlib ${APPLE_TARGET_TRIPLET_PRIMARY}-ar) add_library(libc_static32 STATIC $) -add_dependencies(libc_static32 ranlib x86_64-apple-darwin11-ar) +add_dependencies(libc_static32 ranlib ${APPLE_TARGET_TRIPLET_PRIMARY}-ar) diff --git a/src/libm/CMakeLists.txt b/src/libm/CMakeLists.txt index 86f8295f7..bdccfb203 100644 --- a/src/libm/CMakeLists.txt +++ b/src/libm/CMakeLists.txt @@ -175,7 +175,7 @@ add_circular(system_m FAT install(TARGETS system_m DESTINATION libexec/darling/usr/lib/system) -set(CMAKE_AR "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/x86_64-apple-darwin11-ar") -set(CMAKE_RANLIB "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/x86_64-apple-darwin11-ranlib") +set(CMAKE_AR "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/${APPLE_TARGET_TRIPLET_PRIMARY}-ar") +set(CMAKE_RANLIB "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/${APPLE_TARGET_TRIPLET_PRIMARY}-ranlib") add_darling_static_library(system_m_static SOURCES ${libm_sources} $) make_fat(system_m_static) diff --git a/src/xtrace/CMakeLists.txt b/src/xtrace/CMakeLists.txt index 841b48e7b..91372c138 100644 --- a/src/xtrace/CMakeLists.txt +++ b/src/xtrace/CMakeLists.txt @@ -18,7 +18,7 @@ set(xtrace_sources ) if (TARGET_x86_64) - set(DARLING_LIB_x86_64_ONLY TRUE) + set(DARLING_LIB_64BIT_ONLY TRUE) set(DYLIB_INSTALL_NAME "/usr/lib/darling/libxtrace.dylib") add_darling_library(xtracelib SHARED ${xtrace_sources}) set_target_properties(xtracelib PROPERTIES OUTPUT_NAME "xtrace") -- 2.51.2