mirror of https://github.com/darlinghq/darling
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:
parent
2fe7f1ae07
commit
03db084961
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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" "$@"
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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}/")
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
Loading…
Reference in New Issue