/ CMakeLists.txt
CMakeLists.txt
1 project(libplatform) 2 3 cmake_minimum_required(VERSION 3.13) 4 5 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc -Wno-error=int-conversion") 6 # -Wl,-alias_list,${CMAKE_CURRENT_SOURCE_DIR}/xcodeconfig/libplatform.aliases 7 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-no_arch_warnings -Wl,-bind_at_load") 8 9 add_definitions(-DPRIVATE) 10 11 include_directories(BEFORE 12 ${CMAKE_CURRENT_SOURCE_DIR}/include 13 ${CMAKE_CURRENT_SOURCE_DIR}/private 14 ${CMAKE_CURRENT_SOURCE_DIR}/internal 15 ${CMAKE_CURRENT_SOURCE_DIR}/os/resolver 16 ) 17 18 if (TARGET_x86_64 OR TARGET_ARM64) 19 if (TARGET_x86_64) 20 set(platform_64bit_sources 21 src/setjmp/x86_64/_setjmp.S 22 src/setjmp/x86_64/setjmp.S 23 src/setjmp/x86_64/_sigtramp.S 24 src/ucontext/x86_64/_ctx_start.S 25 src/ucontext/x86_64/getcontext.S 26 src/ucontext/x86_64/_setcontext.S 27 src/cachecontrol/x86_64/cache.S 28 src/atomics/x86_64/pfz.S 29 src/atomics/x86_64/OSAtomic.S 30 ) 31 elseif (TARGET_ARM64) 32 set(platform_64bit_sources 33 src/cachecontrol/arm64/cache.S 34 src/setjmp/arm64/setjmp.S 35 ) 36 endif () 37 add_darling_object_library(platform_64bit ${platform_64bit_sources}) 38 set_target_properties(platform_64bit PROPERTIES COMPILE_FLAGS "-arch ${APPLE_ARCH_64BIT}") 39 else (NO_ARCH_64BIT_SPECIFIC_CODE) 40 add_darling_object_library(platform_64bit empty.c) 41 endif () 42 43 if (TARGET_i386) 44 if (TARGET_i386) 45 set(platform_32bit_sources 46 src/setjmp/i386/_setjmp.S 47 src/setjmp/i386/setjmp.S 48 src/setjmp/i386/_sigtramp.S 49 src/ucontext/i386/_ctx_start.S 50 src/ucontext/i386/getcontext.S 51 src/ucontext/i386/_setcontext.S 52 src/atomics/i386/pfz.S 53 src/atomics/i386/OSAtomic.S 54 src/cachecontrol/i386/cache.S 55 ) 56 endif () 57 add_darling_object_library(platform_32bit ${platform_32bit_sources}) 58 set_target_properties(platform_32bit PROPERTIES COMPILE_FLAGS "-arch ${APPLE_ARCH_32BIT}") 59 else (NO_ARCH_32BIT_SPECIFIC_CODE) 60 add_darling_object_library(platform_32bit empty.c) 61 endif () 62 63 set(platform_sources 64 src/init.c 65 src/force_libplatform_to_build.c 66 src/atomics/init.c 67 src/atomics/common/MKGetTimeBaseInfo.c 68 src/cachecontrol/generic/cache.c 69 #src/introspection/introspection.c 70 src/os/alloc_once.c 71 src/os/atomic.c 72 src/os/lock.c 73 src/os/semaphore.c 74 src/setjmp/generic/setjmperr.c 75 src/setjmp/generic/sigaction.c 76 src/setjmp/generic/sigtramp.c 77 src/simple/asl.c 78 src/simple/getenv.c 79 src/simple/string_io.c 80 src/string/generic/bzero.c 81 src/string/generic/ffsll.c 82 src/string/generic/flsll.c 83 src/string/generic/memccpy.c 84 src/string/generic/memchr.c 85 src/string/generic/memcmp.c 86 src/string/generic/memmove.c 87 src/string/generic/memset_pattern.c 88 src/string/generic/strchr.c 89 src/string/generic/strcmp.c 90 src/string/generic/strcpy.c 91 src/string/generic/strlcat.c 92 src/string/generic/strlcpy.c 93 src/string/generic/strlen.c 94 src/string/generic/strncmp.c 95 src/string/generic/strncpy.c 96 src/string/generic/strnlen.c 97 src/string/generic/strstr.c 98 src/ucontext/generic/getmcontext.c 99 src/ucontext/generic/makecontext.c 100 src/ucontext/generic/setcontext.c 101 src/ucontext/generic/swapcontext.c 102 ) 103 104 set(DYLIB_INSTALL_NAME "/usr/lib/system/libsystem_platform.dylib") 105 add_circular(platform FAT 106 SOURCES ${platform_sources} 107 OBJECTS $<TARGET_OBJECTS:platform_32bit> $<TARGET_OBJECTS:platform_64bit> 108 LINK_FLAGS "-Wl,-alias_list,${CMAKE_CURRENT_SOURCE_DIR}/xcodeconfig/libplatform.aliases" 109 SIBLINGS system_kernel compiler_rt system_c system_dyld 110 ) 111 set_target_properties(platform PROPERTIES OUTPUT_NAME "system_platform") 112 #make_fat(platform) 113 #set_property(TARGET platform APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-alias_list,${CMAKE_CURRENT_SOURCE_DIR}/xcodeconfig/libplatform.aliases") 114 115 #target_link_libraries(platform PRIVATE system_kernel compiler_rt) 116 117 if (BUILD_TARGET_32BIT) 118 add_darling_static_library(platform_static32 SOURCES ${platform_sources} $<TARGET_OBJECTS:platform_32bit>) 119 set_target_properties(platform_static32 PROPERTIES COMPILE_FLAGS "-arch ${APPLE_ARCH_32BIT} -DVARIANT_STATIC -fvisibility=hidden") 120 add_dependencies(platform_static32 ranlib ${APPLE_TARGET_TRIPLET_PRIMARY}-ar lipo) 121 endif (BUILD_TARGET_32BIT) 122 123 if (BUILD_TARGET_64BIT) 124 add_darling_static_library(platform_static64 SOURCES ${platform_sources} $<TARGET_OBJECTS:platform_64bit>) 125 set_target_properties(platform_static64 PROPERTIES COMPILE_OPTIONS "-arch;${APPLE_ARCH_64BIT};-DVARIANT_STATIC;-fvisibility=hidden") 126 add_dependencies(platform_static64 ranlib ${APPLE_TARGET_TRIPLET_PRIMARY}-ar lipo) 127 endif (BUILD_TARGET_64BIT) 128 129 install(TARGETS platform DESTINATION libexec/darling/usr/lib/system)