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")