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