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.
This commit is contained in:
Thomas A 2020-09-27 18:53:31 -07:00
parent 2fe7f1ae07
commit 03db084961
13 changed files with 154 additions and 115 deletions

View File

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

View File

@ -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" "$@"

36
cmake/architecture.cmake Normal file
View File

@ -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()

View File

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

View File

@ -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 $<TARGET_OBJECTS:${my_name}_obj> ${FRAMEWORK_OBJECTS}
STRONG_DEPENDENCIES ${FRAMEWORK_STRONG_DEPENDENCIES}
)
else (FRAMEWORK_CIRCULAR_DEPENDENCIES OR FRAMEWORK_UPWARD_DEPENDENCIES)
add_darling_library(${my_name}_i386 $<TARGET_OBJECTS:${my_name}_obj> ${FRAMEWORK_OBJECTS})
target_link_libraries(${my_name}_i386 PRIVATE ${FRAMEWORK_STRONG_DEPENDENCIES})
add_darling_library(${my_name}_${APPLE_ARCH_32BIT} $<TARGET_OBJECTS:${my_name}_obj> ${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 $<TARGET_OBJECTS:${my_name}_obj> ${FRAMEWORK_OBJECTS}
STRONG_DEPENDENCIES ${FRAMEWORK_STRONG_DEPENDENCIES}
)
else (FRAMEWORK_CIRCULAR_DEPENDENCIES OR FRAMEWORK_UPWARD_DEPENDENCIES)
add_darling_library(${my_name}_x86_64 $<TARGET_OBJECTS:${my_name}_obj> ${FRAMEWORK_OBJECTS})
target_link_libraries(${my_name}_x86_64 PRIVATE ${FRAMEWORK_STRONG_DEPENDENCIES})
add_darling_library(${my_name}_${APPLE_ARCH_64BIT} $<TARGET_OBJECTS:${my_name}_obj> ${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 $<TARGET_FILE:${my_name}_i386_firstpass>
-arch x86_64 $<TARGET_FILE:${my_name}_x86_64_firstpass>
-arch ${APPLE_ARCH_32BIT} $<TARGET_FILE:${my_name}_${APPLE_ARCH_32BIT}_firstpass>
-arch ${APPLE_ARCH_64BIT} $<TARGET_FILE:${my_name}_${APPLE_ARCH_64BIT}_firstpass>
-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 $<TARGET_FILE:${my_name}_i386>
-arch x86_64 $<TARGET_FILE:${my_name}_x86_64>
-arch ${APPLE_ARCH_32BIT} $<TARGET_FILE:${my_name}_${APPLE_ARCH_32BIT}>
-arch ${APPLE_ARCH_64BIT} $<TARGET_FILE:${my_name}_${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 $<TARGET_FILE:${my_name}_i386_firstpass>
-arch ${APPLE_ARCH_32BIT} $<TARGET_FILE:${my_name}_${APPLE_ARCH_32BIT}_firstpass>
-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 $<TARGET_FILE:${my_name}_i386>
-arch ${APPLE_ARCH_32BIT} $<TARGET_FILE:${my_name}_${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 $<TARGET_FILE:${my_name}_x86_64_firstpass>
-arch ${APPLE_ARCH_64BIT} $<TARGET_FILE:${my_name}_${APPLE_ARCH_64BIT}_firstpass>
-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 $<TARGET_FILE:${my_name}_x86_64>
-arch ${APPLE_ARCH_64BIT} $<TARGET_FILE:${my_name}_${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}/")

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -241,11 +241,11 @@ add_darling_static_library(libc_static SOURCES
$<TARGET_OBJECTS:libc-os>
$<TARGET_OBJECTS:libc-stdio_extsn>
)
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 $<TARGET_OBJECTS:libc-x86_64>)
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 $<TARGET_OBJECTS:libc-i386>)
add_dependencies(libc_static32 ranlib x86_64-apple-darwin11-ar)
add_dependencies(libc_static32 ranlib ${APPLE_TARGET_TRIPLET_PRIMARY}-ar)

View File

@ -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} $<TARGET_OBJECTS:system_m_extra>)
make_fat(system_m_static)

View File

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