/ xcodescripts / libc.xcconfig
libc.xcconfig
  1  #include "<DEVELOPER_DIR>/Makefiles/CoreOS/Xcode/BSD.xcconfig"
  2  
  3  // Standard settings
  4  SUPPORTED_PLATFORMS = macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator iphoneosnano iphonesimulatornano bridgeos
  5  
  6  SDK_INSTALL_VARIANT = $(SDK_INSTALL_VARIANT_$(DRIVERKIT))
  7  SDK_INSTALL_VARIANT_1 = driverkit
  8  SDK_INSTALL_VARIANT_ = default
  9  SDK_INSTALL_ROOT = $(SDK_INSTALL_ROOT_$(SDK_INSTALL_VARIANT))
 10  SDK_INSTALL_ROOT_driverkit = $(DRIVERKITROOT)
 11  SDK_INSTALL_HEADERS_ROOT = $(SDK_INSTALL_HEADERS_ROOT_$(SDK_INSTALL_VARIANT))
 12  SDK_INSTALL_HEADERS_ROOT_driverkit = $(SDK_INSTALL_ROOT)/$(SDK_RUNTIME_HEADERS_PREFIX)
 13  SDK_RUNTIME_HEADERS_PREFIX = Runtime
 14  
 15  SRCROOT_SEARCH_PATHS = $(SRCROOT) $(SRCROOT)/include $(SRCROOT)/gen $(SRCROOT)/locale $(SRCROOT)/locale/FreeBSD $(SRCROOT)/stdtime/FreeBSD $(SRCROOT)/darwin
 16  SYSTEM_FRAMEWORK_HEADERS = $(SDKROOT)/$(SDK_INSTALL_HEADERS_ROOT)/System/Library/Frameworks/System.framework/PrivateHeaders
 17  SDK_SYSTEM_FRAMEWORK_HEADERS = $(SDKROOT)/$(SDK_INSTALL_HEADERS_ROOT)/System/Library/Frameworks/System.framework/Versions/B/PrivateHeaders
 18  HEADER_SEARCH_PATHS = $($(TARGET_NAME)_SEARCH_PATHS) $(DERIVED_FILES_DIR)/dtrace $(SRCROOT_SEARCH_PATHS) $(inherited)
 19  SYSTEM_HEADER_SEARCH_PATHS = $(SYSTEM_FRAMEWORK_HEADERS) $(SDKROOT)/$(SDK_INSTALL_HEADERS_ROOT)/usr/local/include $(SDKROOT)/$(SDK_INSTALL_HEADERS_ROOT)/usr/include
 20  SYSTEM_FRAMEWORK_SEARCH_PATHS = $(SDKROOT)/$(SDK_INSTALL_HEADERS_ROOT)/System/Library/Frameworks
 21  ALWAYS_SEARCH_USER_PATHS = YES
 22  USE_HEADERMAP = NO
 23  BUILD_VARIANTS = normal
 24  GCC_OPTIMIZATION_LEVEL = s
 25  GCC_C_LANGUAGE_STANDARD = gnu11
 26  GCC_ENABLE_OBJC_EXCEPTIONS = YES
 27  GCC_SYMBOLS_PRIVATE_EXTERN = NO
 28  GCC_DYNAMIC_NO_PIC = NO
 29  GCC_THUMB_SUPPORT = YES
 30  GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
 31  
 32  //CLANG_WARN_INT_CONVERSION = YES
 33  //CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES
 34  //GCC_WARN_64_TO_32_BIT_CONVERSION = YES
 35  //GCC_WARN_SHADOW = YES
 36  GCC_WARN_UNINITIALIZED_AUTOS = YES;
 37  GCC_WARN_UNUSED_VARIABLE = YES;
 38  GCC_WARN_ABOUT_RETURN_TYPE = YES;
 39  //WARNING_CFLAGS = -Wall -Wextra
 40  WARNING_CFLAGS = -Wall -Werror -Wno-error=shorten-64-to-32 -Wno-error=incompatible-pointer-types-discards-qualifiers -Wno-nullability-completeness
 41  
 42  COPY_PHASE_STRIP = NO
 43  SKIP_INSTALL = YES
 44  INSTALLHDRS_SCRIPT_PHASE = YES
 45  INSTALLHDRS_COPY_PHASE = YES
 46  VERSIONING_SYSTEM =
 47  VERSION_INFO_PREFIX = __attribute__((visibility("hidden")))
 48  COPY_PHASE_STRIP = NO
 49  STRIP_INSTALLED_PRODUCT = NO
 50  LD_DYLIB_INSTALL_NAME = $(SDK_INSTALL_ROOT)/usr/lib/system/$(EXECUTABLE_NAME)
 51  IS_ZIPPERED = YES
 52  
 53  BUILD_VARIANTS = normal debug
 54  BUILD_ARCHIVES = Platform Base FreeBSD NetBSD TRE vCancelable vDarwinExtsn vDarwinExtsnCancelable vPre1050 vLegacy vInode32 FortifySource
 55  
 56  // clang is desired over llvm-gcc for OSAtomics. However, it isn't capable of building armv6 correctly.
 57  GCC_VERSION = com.apple.compilers.llvm.clang.1_0
 58  GCC_VERSION[arch=armv6] = com.apple.compilers.llvmgcc42
 59  
 60  EXECUTABLE_PREFIX = libsystem_
 61  INSTALL_PATH = $(SDK_INSTALL_ROOT)/usr/lib/system
 62  PUBLIC_HEADERS_FOLDER_PATH = $(SDK_INSTALL_HEADERS_ROOT)/usr/include
 63  PRIVATE_HEADERS_FOLDER_PATH = $(SDK_INSTALL_HEADERS_ROOT)/usr/local/include
 64  
 65  DARWIN_PUBLIC_HEADERS_FOLDER_PATH = $(SDK_INSTALL_HEADERS_ROOT)/usr/include/os
 66  DARWIN_PRIVATE_HEADERS_FOLDER_PATH = $(SDK_INSTALL_HEADERS_ROOT)/usr/local/include/os
 67  
 68  // Simulator
 69  BASE_PREPROCESSOR_MACROS = __LIBC__ __DARWIN_UNIX03=1 __DARWIN_64_BIT_INO_T=1 __DARWIN_NON_CANCELABLE=1 __DARWIN_VERS_1050=1 _FORTIFY_SOURCE=0
 70  OTHER_CFLAGS = -fdollars-in-identifiers -fno-common -fverbose-asm $($(TARGET_NAME)_CFLAGS) $(VARIANT_PREPROCESSOR_MACROS)
 71  OTHER_CFLAGS_debug = -fstack-protector -fno-inline -O0 -DDEBUG=1
 72  SIM_SUFFIX[sdk=*simulator*] = _sim
 73  
 74  GCC_PREPROCESSOR_DEFINITIONS = $(BASE_PREPROCESSOR_MACROS)
 75  
 76  // libsystem_c.dylib linking
 77  CR_LDFLAGS = -lCrashReporterClient
 78  LIBCOMPILER_RT_LDFLAGS = -lcompiler_rt
 79  LIBMALLOC_LDFLAGS = -lsystem_malloc
 80  LIBBLOCKS_LDFLAGS = -lsystem_blocks
 81  LIBC_LDFLAGS = -lsystem_c
 82  LIBDISPATCH_LDFLAGS = -ldispatch
 83  LIBXPC_LDFLAGS = -lxpc
 84  LIBPLATFORM_LDFLAGS = -lsystem$(SIM_SUFFIX)_platform
 85  LIBPTHREAD_LDFLAGS = -lsystem$(SIM_SUFFIX)_pthread
 86  LIBSYSCALL_LDFLAGS = -lsystem$(SIM_SUFFIX)_kernel
 87  LIBM_LDFLAGS = -lsystem_m
 88  LIBDYLD_LDFLAGS = -ldyld
 89  LIBSYSTEM_C_LDFLAGS = -all_load -nostdlib -L$(SDK_INSTALL_ROOT)/usr/lib/system -umbrella System $(CR_LDFLAGS) $(LIBCOMPILER_RT_LDFLAGS) $(LIBDYLD_LDFLAGS) $(LIBSYSCALL_LDFLAGS) $(LIBM_LDFLAGS) $(LIBMALLOC_LDFLAGS) $(LIBPLATFORM_LDFLAGS) $(LIBPTHREAD_LDFLAGS) $(UPWARD_LDFLAGS) $(LIBSYSTEM_C_EXTRA_LDFLAGS_$(CURRENT_ARCH)) -Wl,-interposable_list,$(DERIVED_FILES_DIR)/interposable.list -Wl,-unexported_symbols_list,$(DERIVED_FILES_DIR)/unexport.list -Wl,-alias_list,$(SRCROOT)/xcodescripts/alias.list -Wl,-order_file,$(SRCROOT)/xcodescripts/Libc.order @$(BUILT_PRODUCTS_DIR)/$(CURRENT_VARIANT).linklist
 90  LIBSYSTEM_C_EXTRA_LDFLAGS_i386 = -Wl,-alias_list,$(SRCROOT)/xcodescripts/legacy_alias.list
 91  
 92  
 93  // TODO: Remove upward links - mostly <rdar://problem/13183469>, macho is for assumes.c
 94  UPWARD_LDFLAGS = -Wl,-upward-ldispatch -Wl,-upward-lmacho -Wl,-upward-lsystem_asl -Wl,-upward-lsystem_blocks -Wl,-upward-lsystem_info -Wl,-upward-lsystem_notify -Wl,-upward-lxpc -Wl,-upward-lcorecrypto -Wl,-upward-lsystem_trace $(OTHER_UPWARD_LDFLAGS)
 95  UPWARD_LDFLAGS[sdk=driverkit*] = -Wl,-upward-lmacho -Wl,-upward-lsystem_blocks -Wl,-upward-lcorecrypto
 96  
 97  LIBSYSTEM_DARWIN_LDFLAGS = -all_load -nostdlib -L$(SDK_INSTALL_ROOT)/usr/lib/system -umbrella System $(LIBCOMPILER_RT_LDFLAGS) $(LIBDYLD_LDFLAGS) $(LIBSYSCALL_LDFLAGS) $(LIBM_LDFLAGS) $(LIBMALLOC_LDFLAGS) $(LIBBLOCKS_LDFLAGS) $(LIBPLATFORM_LDFLAGS) $(LIBPTHREAD_LDFLAGS) $(LIBPLATFORM_LDFLAGS) $(LIBC_LDFLAGS) $(LIBDISPATCH_LDFLAGS) $(LIBXPC_LDFLAGS) -lmacho -ldyld -Wl,-upward-lsystem_trace
 98  
 99  // libPlatform.a architectures
100  ARCH_FAMILY = $(ARCH_FAMILY_$(CURRENT_ARCH))
101  ARCH_FAMILY_x86_64 = x86_64
102  ARCH_FAMILY_i386 = i386
103  ARCH_FAMILY_armv6 = arm
104  ARCH_FAMILY_armv7 = arm
105  ARCH_FAMILY_armv7s = arm
106  ARCH_FAMILY_armv7f = arm
107  ARCH_FAMILY_armv7k = arm
108  ARCH_FAMILY_arm64 = arm64
109  
110  // Platform target
111  Platform_INCLUDED_SOURCE_FILE_NAMES = forceLibcToBuild.c $(Platform_INCLUDED_SOURCE_FILE_NAMES_gen)
112  Platform_INCLUDED_SOURCE_FILE_NAMES_gen = $(ARCH_FAMILY)/gen/*.c $(ARCH_FAMILY)/gen/*.s $(ARCH_FAMILY)/gen/*.S
113  
114  // FreeBSD target
115  FreeBSD_CFLAGS = -include $(SRCROOT)/fbsdcompat/_fbsd_compat_.h
116  FreeBSD_SEARCH_PATHS = $(SRCROOT)/fbsdcompat $(SRCROOT)/gdtoa $(SRCROOT)/gdtoa/FreeBSD
117  FreeBSD_EXCLUDED_SOURCE_GDTOA = gdtoa/FreeBSD/machdep* gdtoa-strtopx.c
118  // Include the correct parts of gdtoa per-arch
119  FreeBSD_INCLUDED_SOURCE_FILE_NAMES = $(FreeBSD_INCLUDED_SOURCE_FILE_NAMES_$(ARCH_FAMILY))
120  FreeBSD_INCLUDED_SOURCE_FILE_NAMES_x86_64 = gdtoa-strtopx.c machdep_ldisx.c
121  FreeBSD_INCLUDED_SOURCE_FILE_NAMES_i386 = $(FreeBSD_INCLUDED_SOURCE_FILE_NAMES_x86_64)
122  FreeBSD_INCLUDED_SOURCE_FILE_NAMES_arm = machdep_ldisd.c
123  FreeBSD_INCLUDED_SOURCE_FILE_NAMES_arm64 = $(FreeBSD_INCLUDED_SOURCE_FILE_NAMES_arm)
124  
125  // NetBSD target
126  NetBSD_CFLAGS = -include $(SRCROOT)/nbsdcompat/_nbsd_compat_.h
127  NetBSD_SEARCH_PATHS = $(SRCROOT)/nbsdcompat
128  
129  // TRE target
130  TRE_CFLAGS = -DHAVE_CONFIG_H
131  TRE_SEARCH_PATHS = $(SRCROOT)/regex/TRE $(SRCROOT)/regex/FreeBSD
132  
133  // libc_dyld static library
134  libc_dyld_CFLAGS = -fno-stack-check
135  
136  // Files per architecture to exclude from the non-platform builds (because optimised versions exist in Platform)
137  BASE_INCLUDED_SOURCE_FILE_NAMES = $(BASE_INCLUDED_SOURCE_FILE_NAMES_$(ARCH_FAMILY))
138  BASE_EXCLUDED_SOURCE_FILE_NAMES = $(BASE_EXCLUDED_SOURCE_FILE_NAMES_$(ARCH_FAMILY)) $(BASE_EXCLUDED_SOURCE_FILE_NAMES_$(VARIANT_PLATFORM_NAME))
139  BASE_EXCLUDED_SOURCE_FILE_NAMES_x86_64 = kvm.c nlist.c
140  BASE_EXCLUDED_SOURCE_FILE_NAMES_arm64 = kvm.c nlist.c
141  
142  // Rune support isn't included on iOS but there's no better way to exclude their complication
143  BASE_EXCLUDED_SOURCE_FILE_NAMES_macosx = OSMemoryNotification.c
144  BASE_EXCLUDED_SOURCE_FILE_NAMES_iphoneos = frune.c login.c logout.c mbrune.c runedepreciated.c setinvalidrune.c getmntinfo64.c
145  BASE_EXCLUDED_SOURCE_FILE_NAMES_iphonesimulator = $(BASE_EXCLUDED_SOURCE_FILE_NAMES_iphoneos)
146  BASE_EXCLUDED_SOURCE_FILE_NAMES_appletvos = $(BASE_EXCLUDED_SOURCE_FILE_NAMES_iphoneos)
147  BASE_EXCLUDED_SOURCE_FILE_NAMES_appletvsimulator = $(BASE_EXCLUDED_SOURCE_FILE_NAMES_iphonesimulator)
148  BASE_EXCLUDED_SOURCE_FILE_NAMES_watchos = $(BASE_EXCLUDED_SOURCE_FILE_NAMES_iphoneos)
149  BASE_EXCLUDED_SOURCE_FILE_NAMES_watchsimulator = $(BASE_EXCLUDED_SOURCE_FILE_NAMES_iphonesimulator)
150  BASE_EXCLUDED_SOURCE_FILE_NAMES_bridgeos = $(BASE_EXCLUDED_SOURCE_FILE_NAMES_iphoneos)
151  BASE_EXCLUDED_SOURCE_FILE_NAMES_driverkit = $(BASE_EXCLUDED_SOURCE_FILE_NAMES_macosx) $(BASE_EXCLUDED_SOURCE_FILE_NAMES_iphoneos) getlogin.c setlogin.c logwtmp.c utmpx.c utmpx-darwin.c daemon.c authentication.c pty.c opendev.c fparseln.c psort*.c crypt.c glob.c readpassphrase.c atexit_receipt.c debug_private.c sourcefilter.c inet*.c nsap_addr.c ascii2addr.c addr2ascii.c acl*.c filesec.c chmodx_np.c openx_np.c umaskx_np.c statx_np.c
152  
153  // TODO: Remove these legacy platform names:
154  BASE_EXCLUDED_SOURCE_FILE_NAMES_iphoneosnano = $(BASE_EXCLUDED_SOURCE_FILE_NAMES_watchos)
155  BASE_EXCLUDED_SOURCE_FILE_NAMES_iphonesimulatornano = $(BASE_EXCLUDED_SOURCE_FILE_NAMES_watchsimulator)
156  
157  // Enable installapi
158  SUPPORTS_TEXT_BASED_API = YES
159  TAPI_VERIFY_MODE = Pedantic
160  OTHER_TAPI_FLAGS = --no-infer-include-paths -umbrella System -extra-public-header $(TAPI_PUBLIC_HEADER_PATH) -extra-private-header $(TAPI_PRIVATE_HEADER_PATH)
161  TAPI_PUBLIC_HEADER_PATH = $(TAPI_PUBLIC_HEADER_PATH_$(DEPLOYMENT_LOCATION))
162  TAPI_PUBLIC_HEADER_PATH_NO = $(BUILT_PRODUCTS_DIR)$(PUBLIC_HEADERS_FOLDER_PATH)
163  TAPI_PUBLIC_HEADER_PATH_YES = $(DSTROOT)$(PUBLIC_HEADERS_FOLDER_PATH)
164  TAPI_PRIVATE_HEADER_PATH = $(TAPI_PRIVATE_HEADER_PATH_$(DEPLOYMENT_LOCATION))
165  TAPI_PRIVATE_HEADER_PATH_NO = $(BUILT_PRODUCTS_DIR)$(PRIVATE_HEADERS_FOLDER_PATH)
166  TAPI_PRIVATE_HEADER_PATH_YES = $(DSTROOT)$(PRIVATE_HEADERS_FOLDER_PATH)
167  TAPI_HEADER_SEARCH_PATHS =
168  
169  // TODO: Remove this hack once Marzipan bringup is done
170  VARIANT_PLATFORM_NAME = $(VARIANT_PLATFORM_NAME_$(RC_MARZIPAN))
171  VARIANT_PLATFORM_NAME_YES = macosx
172  VARIANT_PLATFORM_NAME_ = $(VARIANT_PLATFORM_NAME_$(SDK_INSTALL_VARIANT))
173  VARIANT_PLATFORM_NAME_default = $(PLATFORM_NAME)
174  VARIANT_PLATFORM_NAME_driverkit = driverkit