diff --git a/CMakeLists.txt b/CMakeLists.txt index 8974c8aae..43dcc773d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,6 +58,8 @@ enable_language(ASM-ATT) option(FRAMEWORK_COREAUDIO "Enable audio-related functionality" OFF) option(FRAMEWORK_APPKIT "Enable AppKit development code" OFF) option(FULL_BUILD "Include large items in the build" ON) +option(TARGET_i386 "Enable i386 slices" ON) +option(TARGET_x86_64 "Enable x86_64 slices" ON) FindDsymutil() diff --git a/cmake/darling_exe.cmake b/cmake/darling_exe.cmake index 84f768d51..b0a87de7f 100644 --- a/cmake/darling_exe.cmake +++ b/cmake/darling_exe.cmake @@ -13,6 +13,15 @@ FUNCTION(add_darling_executable exe) add_executable(${exe} ${files}) 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) + set_property(TARGET ${exe} APPEND_STRING PROPERTY + LINK_FLAGS " -arch i386") + endif (TARGET_x86_64) + use_ld64(${exe}) target_link_libraries(${exe} system) add_dependencies(${exe} csu) diff --git a/cmake/darling_framework.cmake b/cmake/darling_framework.cmake index 3d08a188a..0947f65a3 100644 --- a/cmake/darling_framework.cmake +++ b/cmake/darling_framework.cmake @@ -111,60 +111,111 @@ function(add_separated_framework name) set(DYLIB_INSTALL_NAME "/System/Library/${dir_name}/${name}.framework/Versions/${FRAMEWORK_VERSION}/${name}") - - add_darling_library(${my_name}_i386 SHARED ${FRAMEWORK_SOURCES}) - add_darling_library(${my_name}_x86_64 SHARED ${FRAMEWORK_SOURCES}) - - set_target_properties(${my_name}_i386 PROPERTIES - OUTPUT_NAME "${name}_i386" - SUFFIX "" - PREFIX "") - set_target_properties(${my_name}_x86_64 PROPERTIES - OUTPUT_NAME "${name}_x86_64" - SUFFIX "" - PREFIX "") - set_property(TARGET ${my_name}_i386 APPEND_STRING PROPERTY - COMPILE_FLAGS " -arch i386") - set_property(TARGET ${my_name}_x86_64 APPEND_STRING PROPERTY - COMPILE_FLAGS " -arch x86_64") - set_property(TARGET ${my_name}_i386 APPEND_STRING PROPERTY - LINK_FLAGS " -arch i386") - set_property(TARGET ${my_name}_x86_64 APPEND_STRING PROPERTY - LINK_FLAGS " -arch x86_64") - - if (NOT FRAMEWORK_CURRENT_VERSION) - add_library("${my_name}_i386" ALIAS "${name}_i386") - add_library("${my_name}_x86_64" ALIAS "${name}_x86_64") - endif (NOT FRAMEWORK_CURRENT_VERSION) - - if (FRAMEWORK_DEPENDENCIES) - target_link_libraries(${my_name}_i386 PRIVATE ${FRAMEWORK_DEPENDENCIES}) - target_link_libraries(${my_name}_x86_64 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}_x86_64 APPEND_STRING PROPERTY LINK_FLAGS " ${FRAMEWORK_LINK_FLAGS}") - endif (FRAMEWORK_LINK_FLAGS) - - add_dependencies(${my_name}_x86_64 ${my_name}_i386) - add_custom_command(TARGET ${my_name}_x86_64 POST_BUILD - COMMAND ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/lipo - -arch i386 $ - -arch x86_64 $ - -create - -output - ${CMAKE_CURRENT_BINARY_DIR}/${my_name} - COMMENT "Running lipo to create ${my_name}" - BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/${my_name} - ) - add_library(${my_name} SHARED IMPORTED GLOBAL) - set_target_properties(${my_name} PROPERTIES - SUFFIX "" - PREFIX "" - IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/${my_name} - ) - add_dependencies(${my_name} ${my_name}_x86_64) + if (TARGET_i386) + set(DARLING_LIB_i386_ONLY TRUE) + add_darling_library(${my_name}_i386 ${FRAMEWORK_SOURCES}) + set(DARLING_LIB_i386_ONLY FALSE) + set_target_properties(${my_name}_i386 PROPERTIES + OUTPUT_NAME "${name}_i386" + 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") + if (NOT FRAMEWORK_CURRENT_VERSION) + add_library("${my_name}_i386" ALIAS "${name}_i386") + endif (NOT FRAMEWORK_CURRENT_VERSION) + + if (FRAMEWORK_DEPENDENCIES) + target_link_libraries(${my_name}_i386 PRIVATE ${FRAMEWORK_DEPENDENCIES}) + endif (FRAMEWORK_DEPENDENCIES) + + if (FRAMEWORK_LINK_FLAGS) + set_property(TARGET ${my_name}_i386 APPEND_STRING PROPERTY LINK_FLAGS " ${FRAMEWORK_LINK_FLAGS}") + endif (FRAMEWORK_LINK_FLAGS) + endif (TARGET_i386) + + if (TARGET_x86_64) + set(DARLING_LIB_x86_64_ONLY TRUE) + add_darling_library(${my_name}_x86_64 ${FRAMEWORK_SOURCES}) + set(DARLING_LIB_x86_64_ONLY FALSE) + set_target_properties(${my_name}_x86_64 PROPERTIES + OUTPUT_NAME "${name}_x86_64" + 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") + if (NOT FRAMEWORK_CURRENT_VERSION) + add_library("${my_name}_x86_64" ALIAS "${name}_x86_64") + endif (NOT FRAMEWORK_CURRENT_VERSION) + + if (FRAMEWORK_DEPENDENCIES) + target_link_libraries(${my_name}_x86_64 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}") + endif (FRAMEWORK_LINK_FLAGS) + endif (TARGET_x86_64) + + if (TARGET_i386 AND TARGET_x86_64) + add_dependencies(${my_name}_x86_64 ${my_name}_i386) + add_custom_command(TARGET ${my_name}_x86_64 POST_BUILD + COMMAND ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/lipo + -arch i386 $ + -arch x86_64 $ + -create + -output + ${CMAKE_CURRENT_BINARY_DIR}/${my_name} + COMMENT "Running lipo to create ${my_name}" + BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/${my_name} + ) + add_library(${my_name} SHARED IMPORTED GLOBAL) + set_target_properties(${my_name} PROPERTIES + SUFFIX "" + PREFIX "" + IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/${my_name} + ) + add_dependencies(${my_name} ${my_name}_x86_64) + elseif (TARGET_i386) + + add_custom_command(TARGET ${my_name}_i386 POST_BUILD + COMMAND ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/lipo + -arch i386 $ + -create + -output + ${CMAKE_CURRENT_BINARY_DIR}/${my_name} + COMMENT "Running lipo to create ${my_name}" + BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/${my_name} + ) + add_library(${my_name} SHARED IMPORTED GLOBAL) + set_target_properties(${my_name} PROPERTIES + SUFFIX "" + PREFIX "" + IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/${my_name} + ) + add_dependencies(${my_name} ${my_name}_i386) + elseif (TARGET_x86_64) + add_custom_command(TARGET ${my_name}_x86_64 POST_BUILD + COMMAND ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/lipo + -arch x86_64 $ + -create + -output + ${CMAKE_CURRENT_BINARY_DIR}/${my_name} + COMMENT "Running lipo to create ${my_name}" + BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/${my_name} + ) + add_library(${my_name} SHARED IMPORTED GLOBAL) + set_target_properties(${my_name} PROPERTIES + SUFFIX "" + PREFIX "" + IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/${my_name} + ) + add_dependencies(${my_name} ${my_name}_x86_64) + endif (TARGET_i386 AND TARGET_x86_64) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${my_name} DESTINATION "libexec/darling/System/Library/${dir_name}/${name}.framework/Versions/${FRAMEWORK_VERSION}/") diff --git a/cmake/darling_lib.cmake b/cmake/darling_lib.cmake index 0c38c210e..415f50c72 100644 --- a/cmake/darling_lib.cmake +++ b/cmake/darling_lib.cmake @@ -41,6 +41,18 @@ FUNCTION(add_darling_library name) LINK_FLAGS " -Wl,-current_version,${DYLIB_CURRENT_VERSION} ") endif (DYLIB_CURRENT_VERSION) + 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) + use_ld64(${name}) if (NOT NO_DSYM) @@ -49,13 +61,31 @@ FUNCTION(add_darling_library name) ENDFUNCTION(add_darling_library) FUNCTION(make_fat) - set_property(TARGET ${ARGV} APPEND_STRING PROPERTY - LINK_FLAGS " -arch i386 -arch x86_64") - set_property(TARGET ${ARGV} APPEND_STRING PROPERTY - COMPILE_FLAGS " -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/ -arch i386 -arch x86_64") - foreach(tgt ${ARGV}) - add_dependencies(${tgt} lipo) - endforeach(tgt) + if (TARGET_i386 AND TARGET_x86_64) + set_property(TARGET ${ARGV} APPEND_STRING PROPERTY + COMPILE_FLAGS " -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/ -arch i386 -arch x86_64") + set_property(TARGET ${ARGV} APPEND_STRING PROPERTY + LINK_FLAGS " -arch i386 -arch x86_64") + foreach(tgt ${ARGV}) + add_dependencies(${tgt} lipo) + endforeach(tgt) + elseif (TARGET_i386) + set_property(TARGET ${ARGV} APPEND_STRING PROPERTY + COMPILE_FLAGS " -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/ -arch i386") + set_property(TARGET ${ARGV} APPEND_STRING PROPERTY + LINK_FLAGS " -arch i386") + foreach(tgt ${ARGV}) + add_dependencies(${tgt} lipo) + endforeach(tgt) + elseif (TARGET_x86_64) + set_property(TARGET ${ARGV} APPEND_STRING PROPERTY + COMPILE_FLAGS " -B ${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/ -arch x86_64") + set_property(TARGET ${ARGV} APPEND_STRING PROPERTY + LINK_FLAGS " -arch x86_64") + foreach(tgt ${ARGV}) + add_dependencies(${tgt} lipo) + endforeach(tgt) + endif (TARGET_i386 AND TARGET_x86_64) ENDFUNCTION(make_fat) # add_circular(name ...) @@ -129,3 +159,21 @@ FUNCTION(add_circular name) make_fat(${name}) endif (CIRCULAR_FAT) ENDFUNCTION(add_circular) + +function(add_darling_object_library name) + cmake_parse_arguments(OBJECT_LIB "i386_ONLY;x86_64_ONLY" "" "" ${ARGN}) + foreach(f IN LISTS ARGN) + set(files ${files} ${f}) + endforeach(f) + + add_library(${name} OBJECT ${files}) + 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) +endfunction(add_darling_object_library) diff --git a/cmake/darling_static_lib.cmake b/cmake/darling_static_lib.cmake index 150ca5955..87ae2c381 100644 --- a/cmake/darling_static_lib.cmake +++ b/cmake/darling_static_lib.cmake @@ -10,6 +10,20 @@ function(add_darling_static_library name) set(CMAKE_RANLIB "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/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) + set_property(TARGET ${name} APPEND_STRING PROPERTY + COMPILE_FLAGS " -arch x86_64") + endif (TARGET_x86_64) + + if (TARGET_i386) + set_property(TARGET ${name} APPEND_STRING PROPERTY + COMPILE_FLAGS " -arch i386") + endif (TARGET_i386) + if (STATIC_LIB_FAT) make_fat(${name}) endif (STATIC_LIB_FAT) diff --git a/src/AppleSystemInfo/src/functions.c b/src/AppleSystemInfo/src/functions.c index 20abbbaf0..5c9e613e2 100644 --- a/src/AppleSystemInfo/src/functions.c +++ b/src/AppleSystemInfo/src/functions.c @@ -19,6 +19,8 @@ along with Darling. If not, see . #include +#include + static int verbose = 0; __attribute__((constructor)) static void initme(void) { verbose = getenv("STUB_VERBOSE") != NULL; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dd57b0f5f..5ccadabb1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -7,7 +7,7 @@ set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") include(mig) include(pyc) -add_subdirectory(external/xcbuild) +#add_subdirectory(external/xcbuild) add_subdirectory(libelfloader/native) add_subdirectory(bsdln) diff --git a/src/DiskImages/functions.c b/src/DiskImages/functions.c index ff00f3f9b..a6c1cd589 100644 --- a/src/DiskImages/functions.c +++ b/src/DiskImages/functions.c @@ -19,6 +19,8 @@ along with Darling. If not, see . #include +#include + static int verbose = 0; __attribute__((constructor)) static void initme(void) { verbose = getenv("STUB_VERBOSE") != NULL; diff --git a/src/Metal/src/functions.c b/src/Metal/src/functions.c index bdf7da9df..cbd48882b 100755 --- a/src/Metal/src/functions.c +++ b/src/Metal/src/functions.c @@ -19,6 +19,8 @@ along with Darling. If not, see . #include +#include + static int verbose = 0; __attribute__((constructor)) static void initme(void) { verbose = getenv("STUB_VERBOSE") != NULL; diff --git a/src/PackageKit/functions.c b/src/PackageKit/functions.c index fdbdeea5e..a7da1a05b 100644 --- a/src/PackageKit/functions.c +++ b/src/PackageKit/functions.c @@ -19,6 +19,8 @@ along with Darling. If not, see . #include +#include + static int verbose = 0; __attribute__((constructor)) static void initme(void) { verbose = getenv("STUB_VERBOSE") != NULL; diff --git a/src/dyld/CMakeLists.txt b/src/dyld/CMakeLists.txt index ddf49d6c1..f59f0e9a8 100644 --- a/src/dyld/CMakeLists.txt +++ b/src/dyld/CMakeLists.txt @@ -87,10 +87,18 @@ use_ld64(system_loader) set_target_properties(system_loader PROPERTIES OUTPUT_NAME "dyld") set_property(TARGET system_loader APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-dylinker -Wl,-dead_strip -nostdlib -Wl,-e,__dyld_start -Wl,-image_base,0x1fe00000") target_link_libraries(system_loader libc_static system_blocks_static - libc_static32 libc_static64 cxx_static + cxx_static unwind_static system_kernel_static system_m_static cxxabi_static - keymgr_static compiler_rt_static32 compiler_rt_static64 system_duct_static - platform_static32 platform_static64 pthread_static macho_static) + keymgr_static system_duct_static + pthread_static macho_static) + +if (TARGET_i386) + target_link_libraries(system_loader libc_static32 compiler_rt_static32 platform_static32) +endif (TARGET_i386) + +if (TARGET_x86_64) + target_link_libraries(system_loader libc_static64 compiler_rt_static64 platform_static64) +endif (TARGET_x86_64) make_fat(system_loader) diff --git a/src/external/bc b/src/external/bc index 46e252b51..ce249cc6a 160000 --- a/src/external/bc +++ b/src/external/bc @@ -1 +1 @@ -Subproject commit 46e252b5194952039324e825736c2eea8314cbd7 +Subproject commit ce249cc6a746ee470b5374daf4e9e8a8e32fa57a diff --git a/src/external/bind9 b/src/external/bind9 index 8f466c48f..c25734c25 160000 --- a/src/external/bind9 +++ b/src/external/bind9 @@ -1 +1 @@ -Subproject commit 8f466c48ffc1b7ac99a8a1d4fde4e163910897b5 +Subproject commit c25734c255445946f5e18e3fa0114c4b79abd683 diff --git a/src/external/cctools b/src/external/cctools index 0ec5e3efe..e99992c89 160000 --- a/src/external/cctools +++ b/src/external/cctools @@ -1 +1 @@ -Subproject commit 0ec5e3efe1e7701cedb35e9f65ea1935924143eb +Subproject commit e99992c89bdb9adf7684c1a5a7c89b7c75a34c8f diff --git a/src/external/cocotron b/src/external/cocotron index 35e442b89..b583fd29c 160000 --- a/src/external/cocotron +++ b/src/external/cocotron @@ -1 +1 @@ -Subproject commit 35e442b89e6746ede732551b6da01d6694e47963 +Subproject commit b583fd29ca31bfd45468fdcb91b63a9c49f07cf3 diff --git a/src/external/compiler-rt b/src/external/compiler-rt index bb8e6e5ce..fc763d0a0 160000 --- a/src/external/compiler-rt +++ b/src/external/compiler-rt @@ -1 +1 @@ -Subproject commit bb8e6e5cebd18f460669ce408e9be673eb26a71c +Subproject commit fc763d0a0bee9903e010255a82153b7d3040438a diff --git a/src/external/corefoundation b/src/external/corefoundation index 56f39c155..57b999bd2 160000 --- a/src/external/corefoundation +++ b/src/external/corefoundation @@ -1 +1 @@ -Subproject commit 56f39c155c187390d8b9154fa0402ba6c16b5c00 +Subproject commit 57b999bd2b7f4dcae6160bdd1fc24963565eeeaa diff --git a/src/external/file b/src/external/file index 9fde744e0..8fc434554 160000 --- a/src/external/file +++ b/src/external/file @@ -1 +1 @@ -Subproject commit 9fde744e06e54452d470f6dc919652b5af4a35f8 +Subproject commit 8fc43455467b01192d8c11eb7c591ffd42c1a280 diff --git a/src/external/gnudiff b/src/external/gnudiff index 34075b67e..0c29b27a7 160000 --- a/src/external/gnudiff +++ b/src/external/gnudiff @@ -1 +1 @@ -Subproject commit 34075b67e7810c5eca2b67984843cb290a050687 +Subproject commit 0c29b27a7cc1ec918d6a0f0b3c223b40cf3592e7 diff --git a/src/external/groff b/src/external/groff index ef6b769da..f6337efd3 160000 --- a/src/external/groff +++ b/src/external/groff @@ -1 +1 @@ -Subproject commit ef6b769da3fcb19befca1be1f8c7cd3b843fdcf1 +Subproject commit f6337efd30cff3263695c7b2a2231bd92d276446 diff --git a/src/external/libarchive b/src/external/libarchive index d444e7057..4e6f1bcb5 160000 --- a/src/external/libarchive +++ b/src/external/libarchive @@ -1 +1 @@ -Subproject commit d444e70577156cb0cfa97a926f0a7df5baaed612 +Subproject commit 4e6f1bcb5e5d6043fca1e6c0eebd6a28ce144853 diff --git a/src/external/libcxx b/src/external/libcxx index 598359531..48706becd 160000 --- a/src/external/libcxx +++ b/src/external/libcxx @@ -1 +1 @@ -Subproject commit 598359531aba442bab37de5467bdd0655c595ca2 +Subproject commit 48706becdc9ccfdd9a098a81aedbf97f307a484d diff --git a/src/external/libcxxabi b/src/external/libcxxabi index 4910d06df..d54413e65 160000 --- a/src/external/libcxxabi +++ b/src/external/libcxxabi @@ -1 +1 @@ -Subproject commit 4910d06df1b3df4630677702931028e35b0944ea +Subproject commit d54413e6552c8faa9b32becda58c9c16e19c5119 diff --git a/src/external/libkqueue b/src/external/libkqueue index 7ac3d4fbb..ae2fbcd28 160000 --- a/src/external/libkqueue +++ b/src/external/libkqueue @@ -1 +1 @@ -Subproject commit 7ac3d4fbb1bb60a8e863d8424cdbdbc4cf225e5e +Subproject commit ae2fbcd28e9b35ea33b709fa5fb8d69faf1b9e15 diff --git a/src/external/libplatform b/src/external/libplatform index 732c4bf39..ec90f3557 160000 --- a/src/external/libplatform +++ b/src/external/libplatform @@ -1 +1 @@ -Subproject commit 732c4bf3909404e77aa5d057d03e37720544b53e +Subproject commit ec90f355771911495d9e20faf4f210245adf2612 diff --git a/src/external/libtelnet b/src/external/libtelnet index 05cefce4c..17902c2d0 160000 --- a/src/external/libtelnet +++ b/src/external/libtelnet @@ -1 +1 @@ -Subproject commit 05cefce4c8893ef0239dcb3979b26852bfa3937e +Subproject commit 17902c2d09eca0cd48d1e6b1f4ef8b403af404b0 diff --git a/src/external/objc4 b/src/external/objc4 index 489e12b85..8f541e150 160000 --- a/src/external/objc4 +++ b/src/external/objc4 @@ -1 +1 @@ -Subproject commit 489e12b8575f4e0924431090d82ae38eb318ecb3 +Subproject commit 8f541e150c70d3b8e118f85c007af70ccf5f1b51 diff --git a/src/external/openssh b/src/external/openssh index 2a687827d..c5af80951 160000 --- a/src/external/openssh +++ b/src/external/openssh @@ -1 +1 @@ -Subproject commit 2a687827d642301cfecd486ae585b833ca2977b9 +Subproject commit c5af80951dcf0f9784952e3c99877a60aa38df66 diff --git a/src/external/openssl b/src/external/openssl index 0ec99ebfd..ffb4e740a 160000 --- a/src/external/openssl +++ b/src/external/openssl @@ -1 +1 @@ -Subproject commit 0ec99ebfd1707f282a2a6fd41866785f1997d400 +Subproject commit ffb4e740ad7eb9e07d63bcb6c0ef601e2a306224 diff --git a/src/external/perl b/src/external/perl index 4fc64cb1f..0d297a476 160000 --- a/src/external/perl +++ b/src/external/perl @@ -1 +1 @@ -Subproject commit 4fc64cb1f230951a5561e261aafe13f53c002e1e +Subproject commit 0d297a4762e9f5bb30bf82820d6bf741e921eb27 diff --git a/src/external/syslog b/src/external/syslog index 8fe875d97..93545ae2d 160000 --- a/src/external/syslog +++ b/src/external/syslog @@ -1 +1 @@ -Subproject commit 8fe875d979dd45d3c99e3dd9f841ec317974c345 +Subproject commit 93545ae2d00aff5df4f936fcb0b168120968d022 diff --git a/src/external/top b/src/external/top index 392c1fd48..fcc441c99 160000 --- a/src/external/top +++ b/src/external/top @@ -1 +1 @@ -Subproject commit 392c1fd4841b4628bf13abb965246c53b3afbe0d +Subproject commit fcc441c998b460f2101fcc21f9b8dc2f4b216c7f diff --git a/src/external/zip b/src/external/zip index 3c4a61f95..ff778595f 160000 --- a/src/external/zip +++ b/src/external/zip @@ -1 +1 @@ -Subproject commit 3c4a61f9575ff91bb0d9d8ac7db552105ce83be6 +Subproject commit ff778595fde184a33b1ecdb68f58981dd3f639bc diff --git a/src/external/zlib b/src/external/zlib index 07cf1da0b..6980a7b5d 160000 --- a/src/external/zlib +++ b/src/external/zlib @@ -1 +1 @@ -Subproject commit 07cf1da0b8295d75f01bf1838552dcd78f14a121 +Subproject commit 6980a7b5db5c3465dc2373e1dcbb750b27e25923 diff --git a/src/kernel/emulation/linux/CMakeLists.txt b/src/kernel/emulation/linux/CMakeLists.txt index 8a1712ecd..3ad07bdb7 100644 --- a/src/kernel/emulation/linux/CMakeLists.txt +++ b/src/kernel/emulation/linux/CMakeLists.txt @@ -306,8 +306,8 @@ set_source_files_properties(ext/timerfd_settime.c PROPERTIES COMPILE_FLAGS set_source_files_properties(misc/sysctl.c PROPERTIES COMPILE_FLAGS "-I${DARLING_TOP_DIRECTORY}/platform-include -I${DARLING_TOP_DIRECTORY}/kernel-include") -add_library(emulation OBJECT ${emulation_sources}) -add_library(emulation_dyld OBJECT ${emulation_sources}) +add_darling_object_library(emulation ${emulation_sources}) +add_darling_object_library(emulation_dyld ${emulation_sources}) set_target_properties(emulation_dyld PROPERTIES COMPILE_FLAGS "-ffunction-sections -DVARIANT_DYLD") add_dependencies(emulation rtsig_h) diff --git a/src/kernel/emulation/linux/mach/CMakeLists.txt b/src/kernel/emulation/linux/mach/CMakeLists.txt index 9c0c62a86..592a3047b 100644 --- a/src/kernel/emulation/linux/mach/CMakeLists.txt +++ b/src/kernel/emulation/linux/mach/CMakeLists.txt @@ -18,8 +18,8 @@ set(mach_server_client_sources mach_table.c ) -add_library(mach_server_client OBJECT ${mach_server_client_sources}) -add_library(mach_server_client_dyld OBJECT ${mach_server_client_sources}) +add_darling_object_library(mach_server_client ${mach_server_client_sources}) +add_darling_object_library(mach_server_client_dyld ${mach_server_client_sources}) set_target_properties(mach_server_client_dyld PROPERTIES COMPILE_FLAGS "-DVARIANT_DYLD") make_fat(mach_server_client) make_fat(mach_server_client_dyld) diff --git a/src/kernel/libsyscall/CMakeLists.txt b/src/kernel/libsyscall/CMakeLists.txt index 2b16963a5..486b888fa 100644 --- a/src/kernel/libsyscall/CMakeLists.txt +++ b/src/kernel/libsyscall/CMakeLists.txt @@ -617,17 +617,17 @@ foreach (file IN ITEMS ${syscall_legacy_sources}) set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -U_DARWIN_C_SOURCE -U_POSIX_C_SOURCE -U__DARWIN_UNIX03 -D__DARWIN_UNIX03=0 -U__DARWIN_C_LEVEL") endforeach(file) -add_library(libsyscall OBJECT ${syscall_sources}) -add_library(libsyscall_dynamic OBJECT ${syscall_dynamic_sources}) +add_darling_object_library(libsyscall ${syscall_sources}) +add_darling_object_library(libsyscall_dynamic ${syscall_dynamic_sources}) make_fat(libsyscall) make_fat(libsyscall_dynamic) -#add_library(libsyscall_static OBJECT wrappers/_libc_funcptr.c) +#add_darling_object_library(libsyscall_static wrappers/_libc_funcptr.c) #set_target_properties(libsyscall_static PROPERTIES COMPILE_FLAGS "-DVARIANT_DYLD") #make_fat(libsyscall_static) # For i386 -#add_library(libsyscall_legacy_extra OBJECT wrappers/legacy/select.c) +#add_darling_object_library(libsyscall_legacy_extra wrappers/legacy/select.c) #set_target_properties(libsyscall_legacy_extra PROPERTIES COMPILE_FLAGS # "${CMAKE_C_FLAGS} -U_DARWIN_C_SOURCE -U_POSIX_C_SOURCE -U__DARWIN_UNIX03 -D__DARWIN_UNIX03=0 -U__DARWIN_C_LEVEL") diff --git a/src/libc/CMakeLists.txt b/src/libc/CMakeLists.txt index f4f215157..17e43807b 100644 --- a/src/libc/CMakeLists.txt +++ b/src/libc/CMakeLists.txt @@ -64,34 +64,51 @@ add_subdirectory(nls) add_subdirectory(net) add_subdirectory(locale) add_subdirectory(darwin) -add_subdirectory(i386) -add_subdirectory(x86_64) -set_property ( - TARGET - libc-stdio_legacy - libc-compat_legacy - libc-stdlib_legacy - libc-stdtime_legacy - libc-gen_legacy - libc-string_legacy - libc-gdtoa_legacy - libc-regex_legacy - libc-locale_legacy - libc-net_legacy - libc-i386 - APPEND_STRING PROPERTY COMPILE_FLAGS - " -arch i386" -) -set_property ( - TARGET - libc-x86_64 - APPEND_STRING PROPERTY COMPILE_FLAGS - " -arch x86_64" -) +if (TARGET_i386) + add_subdirectory(i386) + set_property ( + TARGET + libc-stdio_legacy + libc-compat_legacy + libc-stdlib_legacy + libc-stdtime_legacy + libc-gen_legacy + libc-string_legacy + libc-gdtoa_legacy + libc-regex_legacy + libc-locale_legacy + libc-net_legacy + libc-i386 + APPEND_STRING PROPERTY COMPILE_FLAGS + " -arch i386" + ) +else (TARGET_i386) + add_library(libc-stdio_legacy OBJECT empty.c) + add_library(libc-compat_legacy OBJECT empty.c) + add_library(libc-stdlib_legacy OBJECT empty.c) + add_library(libc-stdtime_legacy OBJECT empty.c) + add_library(libc-gen_legacy OBJECT empty.c) + add_library(libc-string_legacy OBJECT empty.c) + add_library(libc-gdtoa_legacy OBJECT empty.c) + add_library(libc-regex_legacy OBJECT empty.c) + add_library(libc-locale_legacy OBJECT empty.c) + add_library(libc-net_legacy OBJECT empty.c) + add_library(libc-i386 OBJECT empty.c) +endif (TARGET_i386) + +if (TARGET_x86_64) + add_subdirectory(x86_64) + set_property ( + TARGET + libc-x86_64 + APPEND_STRING PROPERTY COMPILE_FLAGS + " -arch x86_64" + ) +else (TARGET_x86_64) + add_library(libc-x86_64 OBJECT empty.c) +endif (TARGET_x86_64) -#set_property ( -# TARGET make_fat( libc-db libc-compat @@ -129,9 +146,6 @@ make_fat( libc-sys_dyld libc-gdtoa_dyld ) -# APPEND_STRING PROPERTY COMPILE_FLAGS -# " -arch x86_64 -arch i386" -#) set(DYLIB_INSTALL_NAME "/usr/lib/system/libsystem_c.dylib") add_circular(system_c FAT OBJECTS diff --git a/src/libc/compat-43/CMakeLists.txt b/src/libc/compat-43/CMakeLists.txt index 6ba0eb5ca..e9d28d043 100644 --- a/src/libc/compat-43/CMakeLists.txt +++ b/src/libc/compat-43/CMakeLists.txt @@ -21,7 +21,7 @@ SET_SOURCE_FILES_PROPERTIES(FreeBSD/killpg.c PROPERTIES COMPILE_FLAGS "${CMAKE_C SET_SOURCE_FILES_PROPERTIES(FreeBSD/setpgrp.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLIBC_ALIAS_SETPGRP") SET_SOURCE_FILES_PROPERTIES(sigcompat.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLIBC_ALIAS_SIGPAUSE") -add_library(libc-compat OBJECT ${compat_sources}) +add_darling_object_library(libc-compat ${compat_sources}) #SET_TARGET_PROPERTIES(libc-compat PROPERTIES COMPILE_DEFINITIONS "__DARWIN_NON_CANCELABLE") # *** @@ -41,9 +41,10 @@ SET_TARGET_PROPERTIES(libc-compat_cancelable PROPERTIES # Legacy variants # *** -set(compat-legacy_sources FreeBSD/creat.c FreeBSD/killpg.c) -add_library(libc-compat_legacy OBJECT ${compat-legacy_sources}) -SET_TARGET_PROPERTIES(libc-compat_legacy PROPERTIES - COMPILE_DEFINITIONS "BUILDING_VARIANT;VARIANT_LEGACY;_NONSTD_SOURCE" - COMPILE_FLAGS "-U__DARWIN_NON_CANCELABLE -U__DARWIN_UNIX03 -U_DARWIN_C_SOURCE -U_POSIX_C_SOURCE") - +if (TARGET_i386) + set(compat-legacy_sources FreeBSD/creat.c FreeBSD/killpg.c) + add_library(libc-compat_legacy OBJECT ${compat-legacy_sources}) + SET_TARGET_PROPERTIES(libc-compat_legacy PROPERTIES + COMPILE_DEFINITIONS "BUILDING_VARIANT;VARIANT_LEGACY;_NONSTD_SOURCE" + COMPILE_FLAGS "-U__DARWIN_NON_CANCELABLE -U__DARWIN_UNIX03 -U_DARWIN_C_SOURCE -U_POSIX_C_SOURCE") +endif (TARGET_i386) diff --git a/src/libc/darwin/CMakeLists.txt b/src/libc/darwin/CMakeLists.txt index ec3de591e..6d2c40b6b 100644 --- a/src/libc/darwin/CMakeLists.txt +++ b/src/libc/darwin/CMakeLists.txt @@ -12,4 +12,4 @@ set(darwin_sources darling_hacks.c ) -add_library(libc-darwin OBJECT ${darwin_sources}) +add_darling_object_library(libc-darwin ${darwin_sources}) diff --git a/src/libc/db/CMakeLists.txt b/src/libc/db/CMakeLists.txt index 30af74ba3..53439c2b9 100644 --- a/src/libc/db/CMakeLists.txt +++ b/src/libc/db/CMakeLists.txt @@ -44,5 +44,5 @@ set(db_sources ${db_sources} recno/FreeBSD/rec_seq.c recno/FreeBSD/rec_utils.c) -add_library(libc-db OBJECT ${db_sources}) +add_darling_object_library(libc-db ${db_sources}) diff --git a/src/libc/empty.c b/src/libc/empty.c new file mode 100644 index 000000000..e69de29bb diff --git a/src/libc/emulated/CMakeLists.txt b/src/libc/emulated/CMakeLists.txt index 0c05b2756..e6b8b0185 100644 --- a/src/libc/emulated/CMakeLists.txt +++ b/src/libc/emulated/CMakeLists.txt @@ -6,4 +6,4 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c89") set(emulated_sources brk.c bsd_signal.c lchflags.c lchmod.c lutimes.c statvfs.c tcgetsid.c) -add_library(libc-emulated OBJECT ${emulated_sources}) +add_darling_object_library(libc-emulated ${emulated_sources}) diff --git a/src/libc/gdtoa/CMakeLists.txt b/src/libc/gdtoa/CMakeLists.txt index c7fc0d284..60bad4e00 100644 --- a/src/libc/gdtoa/CMakeLists.txt +++ b/src/libc/gdtoa/CMakeLists.txt @@ -38,17 +38,18 @@ set(gdtoa_sources ${gdtoa_sources} #SET_SOURCE_FILES_PROPERTIES(FreeBSD/gdtoa-strtod.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLIBC_ALIAS_STRTOD -DLIBC_ALIAS_STRTOD_L") #SET_SOURCE_FILES_PROPERTIES(FreeBSD/gdtoa-strtof.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLIBC_ALIAS_STRTOF -DLIBC_ALIAS_STRTOF_L") -add_library(libc-gdtoa OBJECT ${gdtoa_sources}) +add_darling_object_library(libc-gdtoa ${gdtoa_sources}) add_library(libc-gdtoa_dyld OBJECT ${gdtoa_sources}) set_target_properties(libc-gdtoa_dyld PROPERTIES COMPILE_FLAGS "-DVARIANT_DYLD") make_fat(libc-gdtoa_dyld) # Legacy variant -set(gdtoa-legacy_sources - FreeBSD/gdtoa-strtod.c - FreeBSD/gdtoa-strtodg.c - FreeBSD/gdtoa-strtof.c) -add_library(libc-gdtoa_legacy OBJECT ${gdtoa-legacy_sources}) -SET_TARGET_PROPERTIES(libc-gdtoa_legacy PROPERTIES COMPILE_FLAGS - "-DBUILDING_VARIANT -DVARIANT_LEGACY -U__DARWIN_UNIX03 -D__DARWIN_UNIX03=0") - +if (TARGET_i386) + set(gdtoa-legacy_sources + FreeBSD/gdtoa-strtod.c + FreeBSD/gdtoa-strtodg.c + FreeBSD/gdtoa-strtof.c) + add_library(libc-gdtoa_legacy OBJECT ${gdtoa-legacy_sources}) + SET_TARGET_PROPERTIES(libc-gdtoa_legacy PROPERTIES COMPILE_FLAGS + "-DBUILDING_VARIANT -DVARIANT_LEGACY -U__DARWIN_UNIX03 -D__DARWIN_UNIX03=0") +endif (TARGET_i386) diff --git a/src/libc/gen/CMakeLists.txt b/src/libc/gen/CMakeLists.txt index 2b08530f5..de3b0f0b6 100644 --- a/src/libc/gen/CMakeLists.txt +++ b/src/libc/gen/CMakeLists.txt @@ -160,7 +160,7 @@ set(gen_sources ${gen_sources} NetBSD/utmpx.c ) -add_library(libc-gen OBJECT ${gen_sources}) +add_darling_object_library(libc-gen ${gen_sources}) # *** # Cancelable variants @@ -183,16 +183,18 @@ SET_TARGET_PROPERTIES(libc-gen_noinode64 PROPERTIES COMPILE_FLAGS "-U__DARWIN_UN # Legacy variants # *** -set(gen-legacy_sources FreeBSD/clock.c FreeBSD/closedir.c FreeBSD/fnmatch.c - FreeBSD/lockf.c FreeBSD/pause.c FreeBSD/popen.c FreeBSD/rewinddir.c - FreeBSD/seekdir.c FreeBSD/setmode.c FreeBSD/sleep.c FreeBSD/telldir.c - FreeBSD/ttyname.c FreeBSD/usleep.c FreeBSD/wait.c FreeBSD/waitpid.c - FreeBSD/timezone.c FreeBSD/termios.c FreeBSD/nice.c - confstr.c crypt.c nftw.c FreeBSD/opendir.c nanosleep.c) - -add_library(libc-gen_legacy OBJECT ${gen-legacy_sources}) -SET_TARGET_PROPERTIES(libc-gen_legacy PROPERTIES COMPILE_FLAGS - "-DBUILDING_VARIANT -DVARIANT_LEGACY -U__DARWIN_UNIX03 -D__DARWIN_UNIX03=0 -U__DARWIN_64_BIT_INO_T -D_DARWIN_NO_64_BIT_INODE") +if (TARGET_i386) + set(gen-legacy_sources FreeBSD/clock.c FreeBSD/closedir.c FreeBSD/fnmatch.c + FreeBSD/lockf.c FreeBSD/pause.c FreeBSD/popen.c FreeBSD/rewinddir.c + FreeBSD/seekdir.c FreeBSD/setmode.c FreeBSD/sleep.c FreeBSD/telldir.c + FreeBSD/ttyname.c FreeBSD/usleep.c FreeBSD/wait.c FreeBSD/waitpid.c + FreeBSD/timezone.c FreeBSD/termios.c FreeBSD/nice.c + confstr.c crypt.c nftw.c FreeBSD/opendir.c nanosleep.c) + + add_library(libc-gen_legacy OBJECT ${gen-legacy_sources}) + SET_TARGET_PROPERTIES(libc-gen_legacy PROPERTIES COMPILE_FLAGS + "-DBUILDING_VARIANT -DVARIANT_LEGACY -U__DARWIN_UNIX03 -D__DARWIN_UNIX03=0 -U__DARWIN_64_BIT_INO_T -D_DARWIN_NO_64_BIT_INODE") +endif (TARGET_i386) # *** # DARWIN_EXTSN variants diff --git a/src/libc/gmon/CMakeLists.txt b/src/libc/gmon/CMakeLists.txt index b546bea79..39022913b 100644 --- a/src/libc/gmon/CMakeLists.txt +++ b/src/libc/gmon/CMakeLists.txt @@ -6,4 +6,4 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c89") set(gmon_sources gmon.c) -add_library(libc-gmon OBJECT ${gmon_sources}) +add_darling_object_library(libc-gmon ${gmon_sources}) diff --git a/src/libc/locale/CMakeLists.txt b/src/libc/locale/CMakeLists.txt index 2a28e30fa..be45ea136 100644 --- a/src/libc/locale/CMakeLists.txt +++ b/src/libc/locale/CMakeLists.txt @@ -75,14 +75,16 @@ set(locale_sources ${locale_sources} ) SET_SOURCE_FILES_PROPERTIES(FreeBSD/wcsftime.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLIBC_ALIAS_WCSFTIME -DLIBC_ALIAS_WCSFTIME_L") -add_library(libc-locale OBJECT ${locale_sources}) +add_darling_object_library(libc-locale ${locale_sources}) # Legacy variant -set(locale-legacy_sources - FreeBSD/wcsftime.c) -add_library(libc-locale_legacy OBJECT ${locale-legacy_sources}) -SET_TARGET_PROPERTIES(libc-locale_legacy PROPERTIES COMPILE_FLAGS - "-DBUILDING_VARIANT -DVARIANT_LEGACY -U__DARWIN_UNIX03 -D__DARWIN_UNIX03=0") +if (TARGET_i386) + set(locale-legacy_sources + FreeBSD/wcsftime.c) + add_library(libc-locale_legacy OBJECT ${locale-legacy_sources}) + SET_TARGET_PROPERTIES(libc-locale_legacy PROPERTIES COMPILE_FLAGS + "-DBUILDING_VARIANT -DVARIANT_LEGACY -U__DARWIN_UNIX03 -D__DARWIN_UNIX03=0") +endif (TARGET_i386) if (NOT DARLING_NO_EXECUTABLES) install(DIRECTORY locale DESTINATION libexec/darling/usr/share) diff --git a/src/libc/net/CMakeLists.txt b/src/libc/net/CMakeLists.txt index ddd1312de..791d38b1f 100644 --- a/src/libc/net/CMakeLists.txt +++ b/src/libc/net/CMakeLists.txt @@ -29,7 +29,7 @@ set(net_sources inet_pton.c ) -add_library(libc-net OBJECT ${net_sources}) +add_darling_object_library(libc-net ${net_sources}) # *** # Cancelable variants @@ -41,7 +41,9 @@ SET_TARGET_PROPERTIES(libc-net_cancelable PROPERTIES COMPILE_FLAGS "-U__DARWIN_U # *** # Legacy i386 variants # -set(net-legacy_sources FreeBSD/recv.c FreeBSD/send.c) -add_library(libc-net_legacy OBJECT ${net-legacy_sources}) -SET_TARGET_PROPERTIES(libc-net_legacy PROPERTIES COMPILE_FLAGS - "-DBUILDING_VARIANT -DVARIANT_LEGACY -U__DARWIN_UNIX03 -D__DARWIN_UNIX03=0 -U__DARWIN_64_BIT_INO_T -D_DARWIN_NO_64_BIT_INODE") +if (TARGET_i386) + set(net-legacy_sources FreeBSD/recv.c FreeBSD/send.c) + add_library(libc-net_legacy OBJECT ${net-legacy_sources}) + SET_TARGET_PROPERTIES(libc-net_legacy PROPERTIES COMPILE_FLAGS + "-DBUILDING_VARIANT -DVARIANT_LEGACY -U__DARWIN_UNIX03 -D__DARWIN_UNIX03=0 -U__DARWIN_64_BIT_INO_T -D_DARWIN_NO_64_BIT_INODE") +endif (TARGET_i386) diff --git a/src/libc/nls/CMakeLists.txt b/src/libc/nls/CMakeLists.txt index 20a456278..ecf32027f 100644 --- a/src/libc/nls/CMakeLists.txt +++ b/src/libc/nls/CMakeLists.txt @@ -8,4 +8,4 @@ set(nls_sources FreeBSD/msgcat.c ) -add_library(libc-nls OBJECT ${nls_sources}) +add_darling_object_library(libc-nls ${nls_sources}) diff --git a/src/libc/os/CMakeLists.txt b/src/libc/os/CMakeLists.txt index 1f56e146d..a5949dd2a 100644 --- a/src/libc/os/CMakeLists.txt +++ b/src/libc/os/CMakeLists.txt @@ -5,4 +5,4 @@ cmake_minimum_required(VERSION 2.4.0) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..) set(os_sources assumes.c debug_private.c log.c) -add_library(libc-os OBJECT ${os_sources}) +add_darling_object_library(libc-os ${os_sources}) diff --git a/src/libc/regex/CMakeLists.txt b/src/libc/regex/CMakeLists.txt index ff31a4013..1a286c03f 100644 --- a/src/libc/regex/CMakeLists.txt +++ b/src/libc/regex/CMakeLists.txt @@ -21,11 +21,13 @@ set(regex_sources SET_SOURCE_FILES_PROPERTIES(TRE/lib/regcomp.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLIBC_ALIAS_REGCOMP") -add_library(libc-regex OBJECT ${regex_sources}) +add_darling_object_library(libc-regex ${regex_sources}) # Legacy variant -set(regex-legacy_sources - TRE/lib/regcomp.c) -add_library(libc-regex_legacy OBJECT ${regex-legacy_sources}) -SET_TARGET_PROPERTIES(libc-regex_legacy PROPERTIES COMPILE_FLAGS - "-DBUILDING_VARIANT -DVARIANT_LEGACY -U__DARWIN_UNIX03 -D__DARWIN_UNIX03=0") +if (TARGET_i386) + set(regex-legacy_sources + TRE/lib/regcomp.c) + add_library(libc-regex_legacy OBJECT ${regex-legacy_sources}) + SET_TARGET_PROPERTIES(libc-regex_legacy PROPERTIES COMPILE_FLAGS + "-DBUILDING_VARIANT -DVARIANT_LEGACY -U__DARWIN_UNIX03 -D__DARWIN_UNIX03=0") +endif (TARGET_i386) diff --git a/src/libc/secure/CMakeLists.txt b/src/libc/secure/CMakeLists.txt index 0fcd6bf10..f6c27bd11 100644 --- a/src/libc/secure/CMakeLists.txt +++ b/src/libc/secure/CMakeLists.txt @@ -31,4 +31,4 @@ set(secure_sources #SET_SOURCE_FILES_PROPERTIES(FreeBSD/snprintf.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS}") -add_library(libc-secure OBJECT ${secure_sources}) +add_darling_object_library(libc-secure ${secure_sources}) diff --git a/src/libc/stdio/CMakeLists.txt b/src/libc/stdio/CMakeLists.txt index 73c8fb50e..fc2c0dd98 100644 --- a/src/libc/stdio/CMakeLists.txt +++ b/src/libc/stdio/CMakeLists.txt @@ -129,21 +129,24 @@ set_source_files_properties(FreeBSD/freopen.c PROPERTIES COMPILE_FLAGS "${CMAKE_ set_source_files_properties(FreeBSD/fwrite.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLIBC_ALIAS_FWRITE") set_source_files_properties(FreeBSD/tempnam.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLIBC_ALIAS_TEMPNAM") -add_library(libc-stdio OBJECT ${stdio_sources}) +add_darling_object_library(libc-stdio ${stdio_sources}) #SET_TARGET_PROPERTIES(libc-stdio PROPERTIES COMPILE_DEFINITIONS "VARIANT_DARWINEXTSN") # *** # Legacy variants # *** -set(stdio-legacy_sources - FreeBSD/fopen.c FreeBSD/fdopen.c - FreeBSD/fputs.c FreeBSD/tempnam.c - FreeBSD/freopen.c FreeBSD/fwrite.c) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -U_DARWIN_C_SOURCE -U_POSIX_C_SOURCE") -add_library(libc-stdio_legacy OBJECT ${stdio-legacy_sources}) -SET_TARGET_PROPERTIES(libc-stdio_legacy PROPERTIES COMPILE_DEFINITIONS "BUILDING_VARIANT;VARIANT_LEGACY") + +if (TARGET_i386) + set(stdio-legacy_sources + FreeBSD/fopen.c FreeBSD/fdopen.c + FreeBSD/fputs.c FreeBSD/tempnam.c + FreeBSD/freopen.c FreeBSD/fwrite.c) + + add_library(libc-stdio_legacy OBJECT ${stdio-legacy_sources}) + SET_TARGET_PROPERTIES(libc-stdio_legacy PROPERTIES COMPILE_DEFINITIONS "BUILDING_VARIANT;VARIANT_LEGACY") +endif (TARGET_i386) # *** # DARWIN_EXTSN variants diff --git a/src/libc/stdlib/CMakeLists.txt b/src/libc/stdlib/CMakeLists.txt index a36a4c1e1..e2392ddd3 100644 --- a/src/libc/stdlib/CMakeLists.txt +++ b/src/libc/stdlib/CMakeLists.txt @@ -85,7 +85,7 @@ SET_SOURCE_FILES_PROPERTIES(FreeBSD/realpath.c PROPERTIES COMPILE_FLAGS "${CMAKE SET_SOURCE_FILES_PROPERTIES(FreeBSD/setenv.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLIBC_ALIAS_SETENV -DLIBC_ALIAS_UNSETENV") SET_SOURCE_FILES_PROPERTIES(FreeBSD/putenv.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLIBC_ALIAS_PUTENV") -add_library(libc-stdlib OBJECT ${stdlib_sources}) +add_darling_object_library(libc-stdlib ${stdlib_sources}) # Cancelable variant set(stdlib-cancelable_sources FreeBSD/system.c) @@ -93,10 +93,12 @@ add_library(libc-stdlib_cancelable OBJECT ${stdlib-cancelable_sources}) SET_TARGET_PROPERTIES(libc-stdlib_cancelable PROPERTIES COMPILE_DEFINITIONS "BUILDING_VARIANT;VARIANT_CANCELABLE") # Legacy variant -set(stdlib-legacy_sources FreeBSD/getopt.c FreeBSD/realpath.c - FreeBSD/setenv.c FreeBSD/putenv.c) -add_library(libc-stdlib_legacy OBJECT ${stdlib-legacy_sources}) -SET_TARGET_PROPERTIES(libc-stdlib_legacy PROPERTIES COMPILE_DEFINITIONS "BUILDING_VARIANT;VARIANT_LEGACY") +if (TARGET_i386) + set(stdlib-legacy_sources FreeBSD/getopt.c FreeBSD/realpath.c + FreeBSD/setenv.c FreeBSD/putenv.c) + add_library(libc-stdlib_legacy OBJECT ${stdlib-legacy_sources}) + SET_TARGET_PROPERTIES(libc-stdlib_legacy PROPERTIES COMPILE_DEFINITIONS "BUILDING_VARIANT;VARIANT_LEGACY") +endif (TARGET_i386) # DARWIN_EXTSN variant set(stdlib-extsn_sources FreeBSD/realpath.c) diff --git a/src/libc/stdtime/CMakeLists.txt b/src/libc/stdtime/CMakeLists.txt index 61ad6affe..5635f0822 100644 --- a/src/libc/stdtime/CMakeLists.txt +++ b/src/libc/stdtime/CMakeLists.txt @@ -22,13 +22,14 @@ SET_SOURCE_FILES_PROPERTIES(FreeBSD/localtime.c PROPERTIES COMPILE_FLAGS "${CMAK SET_SOURCE_FILES_PROPERTIES(FreeBSD/strftime.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLIBC_ALIAS_STRFTIME -DLIBC_ALIAS_STRFTIME_L") SET_SOURCE_FILES_PROPERTIES(FreeBSD/strptime.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLIBC_ALIAS_STRPTIME -DLIBC_ALIAS_STRPTIME_L") -add_library(libc-stdtime OBJECT ${stdtime_sources}) +add_darling_object_library(libc-stdtime ${stdtime_sources}) # Legacy variant -set(stdtime-legacy_sources - FreeBSD/localtime.c - FreeBSD/strftime.c - FreeBSD/strptime.c) -add_library(libc-stdtime_legacy OBJECT ${stdtime-legacy_sources}) -SET_TARGET_PROPERTIES(libc-stdtime_legacy PROPERTIES COMPILE_DEFINITIONS "BUILDING_VARIANT;VARIANT_LEGACY") - +if (TARGET_i386) + set(stdtime-legacy_sources + FreeBSD/localtime.c + FreeBSD/strftime.c + FreeBSD/strptime.c) + add_library(libc-stdtime_legacy OBJECT ${stdtime-legacy_sources}) + SET_TARGET_PROPERTIES(libc-stdtime_legacy PROPERTIES COMPILE_DEFINITIONS "BUILDING_VARIANT;VARIANT_LEGACY") +endif (TARGET_i386) diff --git a/src/libc/string/CMakeLists.txt b/src/libc/string/CMakeLists.txt index 22ba9f4b3..ace79df00 100644 --- a/src/libc/string/CMakeLists.txt +++ b/src/libc/string/CMakeLists.txt @@ -87,7 +87,7 @@ set(string_sources ${string_sources} SET_SOURCE_FILES_PROPERTIES(FreeBSD/strerror.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLIBC_ALIAS_STRERROR") -add_library(libc-string OBJECT ${string_sources}) +add_darling_object_library(libc-string ${string_sources}) add_library(libc-string-x86_64 OBJECT ${string_x86_64_sources}) set_target_properties(libc-string-x86_64 PROPERTIES COMPILE_FLAGS "-arch x86_64") @@ -95,10 +95,12 @@ add_library(libc-string-i386 OBJECT ${string_i386_sources}) set_target_properties(libc-string-i386 PROPERTIES COMPILE_FLAGS "-arch i386") # Legacy variant -set(string-legacy_sources - FreeBSD/strerror.c) -add_library(libc-string_legacy OBJECT ${string-legacy_sources}) -SET_TARGET_PROPERTIES(libc-string_legacy PROPERTIES COMPILE_DEFINITIONS "BUILDING_VARIANT;VARIANT_LEGACY") +if (TARGET_i386) + set(string-legacy_sources + FreeBSD/strerror.c) + add_library(libc-string_legacy OBJECT ${string-legacy_sources}) + SET_TARGET_PROPERTIES(libc-string_legacy PROPERTIES COMPILE_DEFINITIONS "BUILDING_VARIANT;VARIANT_LEGACY") +endif (TARGET_i386) # DYLD variant add_library(libc-string_dyld OBJECT strcat.c strcpy.c FreeBSD/strdup.c strlcat.c strlcpy.c FreeBSD/strnlen.c FreeBSD/strrchr.c FreeBSD/strstr.c FreeBSD/strtok.c diff --git a/src/libc/sys/CMakeLists.txt b/src/libc/sys/CMakeLists.txt index edcf704bf..1f6a8837e 100644 --- a/src/libc/sys/CMakeLists.txt +++ b/src/libc/sys/CMakeLists.txt @@ -40,7 +40,7 @@ SET_SOURCE_FILES_PROPERTIES(shmctl.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} SET_SOURCE_FILES_PROPERTIES(sigtramp.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -D_XOPEN_SOURCE") SET_SOURCE_FILES_PROPERTIES(OpenBSD/stack_protector.c PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -fno-stack-protector") -add_library(libc-sys OBJECT ${sys_sources}) +add_darling_object_library(libc-sys ${sys_sources}) # *** # No-INODE64 variants diff --git a/src/libc/util/CMakeLists.txt b/src/libc/util/CMakeLists.txt index 712610141..e872624f0 100644 --- a/src/libc/util/CMakeLists.txt +++ b/src/libc/util/CMakeLists.txt @@ -14,4 +14,4 @@ set(util_sources opendev.c pty.c) -add_library(libc-util OBJECT ${util_sources}) +add_darling_object_library(libc-util ${util_sources}) diff --git a/src/libc/uuid/CMakeLists.txt b/src/libc/uuid/CMakeLists.txt index 1d45b94d6..8758d878a 100644 --- a/src/libc/uuid/CMakeLists.txt +++ b/src/libc/uuid/CMakeLists.txt @@ -16,4 +16,4 @@ set(uuid_sources uuidsrc/unpack.c uuidsrc/unparse.c) -add_library(libc-uuid OBJECT ${uuid_sources}) +add_darling_object_library(libc-uuid ${uuid_sources}) diff --git a/src/libc/x86_64/CMakeLists.txt b/src/libc/x86_64/CMakeLists.txt index e82950596..93aaad488 100644 --- a/src/libc/x86_64/CMakeLists.txt +++ b/src/libc/x86_64/CMakeLists.txt @@ -7,14 +7,15 @@ add_definitions(-DPRIVATE) #set(CMAKE_C_FLAGS "-I${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_C_FLAGS} -include ${CMAKE_CURRENT_SOURCE_DIR}/../../duct/include/commpage.h -include ${DARLING_TOP_DIRECTORY}/platform-include/sys/time.h") -set(x86_64_sources - gen/mcount.S - string/strcpy.S - string/strlen.S - string/strncpy.S - string/strnlen.S -) - +if (TARGET_x86_64) + set(x86_64_sources + gen/mcount.S + string/strcpy.S + string/strlen.S + string/strncpy.S + string/strnlen.S + ) +endif (TARGET_x86_64) add_library(libc-x86_64 OBJECT ${x86_64_sources}) diff --git a/src/libinfo/darling-resolver/CMakeLists.txt b/src/libinfo/darling-resolver/CMakeLists.txt index 4dcb3951a..b7b8875ba 100644 --- a/src/libinfo/darling-resolver/CMakeLists.txt +++ b/src/libinfo/darling-resolver/CMakeLists.txt @@ -18,4 +18,4 @@ set(dr_sources resolver.c ) -add_library(darling-resolver OBJECT ${dr_sources}) +add_darling_object_library(darling-resolver ${dr_sources}) diff --git a/src/libinfo/dns.subproj/CMakeLists.txt b/src/libinfo/dns.subproj/CMakeLists.txt index d2a184109..a6d4af970 100644 --- a/src/libinfo/dns.subproj/CMakeLists.txt +++ b/src/libinfo/dns.subproj/CMakeLists.txt @@ -15,4 +15,4 @@ set(info-dns_sources res_query.c ) -add_library(info-dns OBJECT ${info-dns_sources}) +add_darling_object_library(info-dns ${info-dns_sources}) diff --git a/src/libinfo/gen.subproj/CMakeLists.txt b/src/libinfo/gen.subproj/CMakeLists.txt index cbabf2bfe..94b28323b 100644 --- a/src/libinfo/gen.subproj/CMakeLists.txt +++ b/src/libinfo/gen.subproj/CMakeLists.txt @@ -23,4 +23,4 @@ set(info-gen_sources vars.c ) -add_library(info-gen OBJECT ${info-gen_sources}) +add_darling_object_library(info-gen ${info-gen_sources}) diff --git a/src/libinfo/lookup.subproj/CMakeLists.txt b/src/libinfo/lookup.subproj/CMakeLists.txt index bf917dadb..ac8d153b0 100644 --- a/src/libinfo/lookup.subproj/CMakeLists.txt +++ b/src/libinfo/lookup.subproj/CMakeLists.txt @@ -30,4 +30,4 @@ set(info-lookup_sources thread_data.c ) -add_library(info-lookup OBJECT ${info-lookup_sources}) +add_darling_object_library(info-lookup ${info-lookup_sources}) diff --git a/src/libinfo/membership.subproj/CMakeLists.txt b/src/libinfo/membership.subproj/CMakeLists.txt index 6230232e7..8729ab2dc 100644 --- a/src/libinfo/membership.subproj/CMakeLists.txt +++ b/src/libinfo/membership.subproj/CMakeLists.txt @@ -18,4 +18,4 @@ set(info-membership_sources membership.c ) -add_library(info-membership OBJECT ${info-membership_sources}) +add_darling_object_library(info-membership ${info-membership_sources}) diff --git a/src/libinfo/nis.subproj/CMakeLists.txt b/src/libinfo/nis.subproj/CMakeLists.txt index 4f1ed10ef..8e6dbd0af 100644 --- a/src/libinfo/nis.subproj/CMakeLists.txt +++ b/src/libinfo/nis.subproj/CMakeLists.txt @@ -19,4 +19,4 @@ set(info-nis_sources setdomainname.c ) -add_library(info-nis OBJECT ${info-nis_sources}) +add_darling_object_library(info-nis ${info-nis_sources}) diff --git a/src/libinfo/rpc.subproj/CMakeLists.txt b/src/libinfo/rpc.subproj/CMakeLists.txt index f30c2ef4d..870a4eb69 100644 --- a/src/libinfo/rpc.subproj/CMakeLists.txt +++ b/src/libinfo/rpc.subproj/CMakeLists.txt @@ -9,4 +9,4 @@ set(info-rpc_sources xdr.c ) -add_library(info-rpc OBJECT ${info-rpc_sources}) +add_darling_object_library(info-rpc ${info-rpc_sources}) diff --git a/src/libinfo/util.subproj/CMakeLists.txt b/src/libinfo/util.subproj/CMakeLists.txt index b1c9f1e3a..86a099232 100644 --- a/src/libinfo/util.subproj/CMakeLists.txt +++ b/src/libinfo/util.subproj/CMakeLists.txt @@ -12,4 +12,4 @@ set(info-util_sources rcmd.c ) -add_library(info-util OBJECT ${info-util_sources}) +add_darling_object_library(info-util ${info-util_sources}) diff --git a/src/libm/CMakeLists.txt b/src/libm/CMakeLists.txt index 6814e68d2..2ea527887 100644 --- a/src/libm/CMakeLists.txt +++ b/src/libm/CMakeLists.txt @@ -150,7 +150,7 @@ SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/darling SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) -add_library(system_m_extra OBJECT Source/Intel/xmm_misc.c Source/Intel/xmm_log.c Source/Intel/fmaxfminfdim.S Source/Intel/nextafter.S Source/Intel/xmm_remainder.c Source/Intel/e_remquol.S) +add_darling_object_library(system_m_extra Source/Intel/xmm_misc.c Source/Intel/xmm_log.c Source/Intel/fmaxfminfdim.S Source/Intel/nextafter.S Source/Intel/xmm_remainder.c Source/Intel/e_remquol.S) set_target_properties(system_m_extra PROPERTIES COMPILE_FLAGS "-UBUILDING_FOR_CARBONCORE_LEGACY -O0 -ggdb") make_fat(system_m_extra) diff --git a/src/ncurses/CMakeLists.txt b/src/ncurses/CMakeLists.txt index 1d059e608..6a98883b0 100644 --- a/src/ncurses/CMakeLists.txt +++ b/src/ncurses/CMakeLists.txt @@ -34,7 +34,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/progs) add_darling_executable(clear progs/clear.c) target_link_libraries(clear ncurses) -add_library(nc_dump_entry OBJECT progs/dump_entry.c) +add_darling_object_library(nc_dump_entry progs/dump_entry.c) add_darling_executable(infocmp progs/infocmp.c $) target_link_libraries(infocmp ncurses) diff --git a/src/xtrace/CMakeLists.txt b/src/xtrace/CMakeLists.txt index 1cc263200..6553311e9 100644 --- a/src/xtrace/CMakeLists.txt +++ b/src/xtrace/CMakeLists.txt @@ -3,8 +3,6 @@ project(xtrace) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostdinc -fno-exceptions -fno-rtti -std=c++11") -include(darling_lib) - set(xtrace_sources xtracelib.c simple.c @@ -13,15 +11,18 @@ set(xtrace_sources bsd_trace.cpp ) -set(DYLIB_INSTALL_NAME "/usr/lib/darling/libxtrace.dylib") -add_darling_library(xtracelib SHARED ${xtrace_sources}) -set_target_properties(xtracelib PROPERTIES OUTPUT_NAME "xtrace") -target_link_libraries(xtracelib system) +if (TARGET_x86_64) + set(DARLING_LIB_x86_64_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") + target_link_libraries(xtracelib system) -install(TARGETS xtracelib DESTINATION libexec/darling/usr/lib/darling) -install(FILES xtrace DESTINATION libexec/darling/usr/bin - PERMISSIONS - OWNER_READ OWNER_WRITE OWNER_EXECUTE - GROUP_READ GROUP_EXECUTE - WORLD_READ WORLD_EXECUTE -) + install(TARGETS xtracelib DESTINATION libexec/darling/usr/lib/darling) + install(FILES xtrace DESTINATION libexec/darling/usr/bin + PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE + ) +endif (TARGET_x86_64)