Loading...
#include "base.xcconfig"

LIBSYSTEM_LIBS[sdk=*simulator*]     = -Wl,-no_warn_unused_dylibs -Wl,-upward-lsystem_sim_platform -Wl,-upward-lsystem_malloc -Wl,-upward-lsystem_c -Wl,-upward-lsystem_sim_pthread -Wl,-upward-lxpc -Wl,-upward-lsystem_blocks -Wl,-upward-lsystem_sim_kernel -Wl,-upward-ldispatch
LIBSYSTEM_LIBS[sdk=embedded*]       = -Wl,-no_warn_unused_dylibs -Wl,-upward-lsystem_platform     -Wl,-upward-lsystem_malloc -Wl,-upward-lsystem_c -Wl,-upward-lsystem_pthread     -Wl,-upward-lxpc -Wl,-upward-lsystem_blocks -Wl,-upward-lsystem_kernel     -Wl,-upward-ldispatch -Wl,-upward-lcompiler_rt
LIBSYSTEM_LIBS[sdk=macosx*]         = -Wl,-no_warn_unused_dylibs -Wl,-upward-lsystem_platform     -Wl,-upward-lsystem_malloc -Wl,-upward-lsystem_c -Wl,-upward-lsystem_pthread     -Wl,-upward-lxpc -Wl,-upward-lsystem_blocks -Wl,-upward-lsystem_kernel     -Wl,-upward-ldispatch -Wl,-upward-lcompiler_rt
LIBSYSTEM_LIBS[sdk=driverkit*]      = -Wl,-no_warn_unused_dylibs -Wl,-upward-lsystem_platform     -Wl,-upward-lsystem_malloc -Wl,-upward-lsystem_c -Wl,-upward-lsystem_pthread                                                 -Wl,-upward-lsystem_kernel
LIBSYSTEM_LIBS[sdk=exclavekit*]     = -Wl,-no_warn_unused_dylibs -Wl,-upward-llibc -Wl,-upward-lsystem_malloc

INSTALL_PATH = $(SYSTEM_PREFIX)/usr/lib/system

// Disable building the _asan variant for dyld on ExclaveKit
BUILD_VARIANTS[sdk=exclavekit*] = normal

GCC_PREPROCESSOR_DEFINITIONS_Release          =
GCC_PREPROCESSOR_DEFINITIONS_Debug            = DEBUG=1
GCC_PREPROCESSOR_DEFINITIONS                  = $(GCC_PREPROCESSOR_DEFINITIONS_$(CONFIGURATION)) BUILDING_LIBDYLD=1
GCC_PREPROCESSOR_DEFINITIONS[sdk=exclavekit*] = $(GCC_PREPROCESSOR_DEFINITIONS_$(CONFIGURATION)) BUILDING_LIBDYLD=1 L4_CONFIG_PLAT_EVP=1

SYSTEM_HEADER_SEARCH_PATHS                  =
SYSTEM_HEADER_SEARCH_PATHS[sdk=exclavekit*] = $(SDKROOT)$(SYSTEM_PREFIX)/usr/local/standalone/cL4/include

// We don't have many symbols in libdyld.dylib, so mark them up manually with __attribute__((section())) and avoid the SDK dirty data file
// FIXME: We force DATA_CONST for now to ensure ld64 generates split seg v2 on x86_64
DIRTY = -Wl,-dirty_data_list,${SRCROOT}/configs/libdyld.dirty -Wl,-data_const

// FIXME: -Wl,-unexported_symbol is a hack to deal with C++20 comparison visbility, we can probably fix it better
OTHER_LDFLAGS = -Wl,-no_inits -nostdlib -lCrashReporterClient $(LIBSYSTEM_LIBS) -umbrella System -L$(SDKROOT)/$(DRIVERKITROOT)/usr/lib/system $(EXTRA_SECTIONS) -Wl,-unexported_symbol,__ZNSt3* $(DIRTY)
OTHER_LDFLAGS[sdk=exclavekit*] = -Wl,-no_inits -nostdlib $(LIBSYSTEM_LIBS) -umbrella System -L$(SDKROOT)/$(SYSTEM_PREFIX)/usr/lib/system $(EXTRA_SECTIONS) -Wl,-unexported_symbol,__ZNSt3* $(DIRTY)

PRIVATE_TAPI_FLAGS                  = -extra-private-header ${SRCROOT}/include/mach-o/dyld_priv.h -extra-private-header ./include/mach-o/dyld_introspection.h -extra-private-header ./include/mach-o/dyld_process_info.h  -extra-private-header ./include/mach-o/utils_priv.h
PRIVATE_TAPI_FLAGS[sdk=*simulator*] = -extra-private-header ./include/dlfcn_private.h -extra-private-header ${SRCROOT}/include/mach-o/dyld_priv.h -extra-private-header ./include/mach-o/dyld_process_info.h -extra-private-header ./include/mach-o/dyld_introspection.h  -extra-private-header ./include/mach-o/utils_priv.h
PRIVATE_TAPI_FLAGS[sdk=embedded*]   = -extra-private-header ./include/dlfcn_private.h -extra-private-header ${SRCROOT}/include/mach-o/dyld_priv.h -extra-private-header ./include/mach-o/dyld_introspection.h -extra-private-header ./include/mach-o/dyld_process_info.h  -extra-private-header ./include/mach-o/utils_priv.h
PRIVATE_TAPI_FLAGS[sdk=macosx*]     = -extra-private-header ./include/dlfcn_private.h -extra-private-header ${SRCROOT}/include/mach-o/dyld_priv.h -extra-private-header ./include/mach-o/dyld_introspection.h -extra-private-header ./include/mach-o/dyld_process_info.h  -extra-private-header ./include/mach-o/utils_priv.h
PRIVATE_TAPI_FLAGS[sdk=driverkit*]  = -extra-private-header ./include/dlfcn_private.h -extra-private-header ${SRCROOT}/include/mach-o/dyld_priv.h
PRIVATE_TAPI_FLAGS[sdk=exclavekit*] = -extra-private-header ./include/dlfcn_private.h -extra-private-header ${SRCROOT}/include/mach-o/dyld_priv.h

OTHER_TAPI_FLAGS = -extra-public-header ./include/mach-o/dyld.h  -extra-public-header ./include/mach-o/utils.h -extra-public-header ./include/dlfcn.h $(PRIVATE_TAPI_FLAGS) -ObjC++ -std=c++20 -umbrella System
OTHER_TAPI_FLAGS[sdk=driverkit*] = -extra-public-header ./include/mach-o/dyld.h -extra-public-header ./include/dlfcn.h $(PRIVATE_TAPI_FLAGS) -ObjC++ -std=c++20 -umbrella System
OTHER_TAPI_FLAGS[sdk=exclavekit*] = -extra-public-header ./include/mach-o/dyld.h -extra-public-header ./include/dlfcn.h $(PRIVATE_TAPI_FLAGS) -ObjC++ -std=c++20 -umbrella System