// pthread kext build options
-ARCHS = $(ARCHS_STANDARD_32_64_BIT)
+SDKROOT = macosx.internal
SUPPORTED_PLATFORMS = macosx iphoneos appletvos watchos
-DYLIB_CURRENT_VERSION = $(RC_ProjectSourceVersion)
+BUILD_VARIANTS = normal development kasan
+
+PTHREAD_VARIANT_ = $(CURRENT_VARIANT)
+PTHREAD_VARIANT_YES = development
+PTHREAD_VARIANT = $(PTHREAD_VARIANT_$(DEBUG))
+
+VALID_ARCHS[sdk=macosx*] = $(NATIVE_ARCH_ACTUAL)
+ARCHS = $(ARCHS_STANDARD_32_64_BIT)
+
INSTALL_PATH = $(SYSTEM_LIBRARY_DIR)/Extensions
+PRODUCT_NAME = pthread
+WRAPPER_EXTENSION = kext
MODULE_NAME = com.apple.kec.pthread
MODULE_START = pthread_start
MODULE_STOP = pthread_stop
MODULE_VERSION = 1.0.0d1
-DEAD_CODE_STRIPPING = NO
+PRODUCT_BUNDLE_IDENTIFIER = ${MODULE_NAME}
INFOPLIST_FILE = kern/pthread-Info.plist
-PRODUCT_NAME = $(TARGET_NAME)
-WRAPPER_EXTENSION = kext
+
ALWAYS_SEARCH_USER_PATHS = NO
SRCROOT_SEARCH_PATHS = $(SRCROOT) $(SRCROOT)/pthread $(SRCROOT)/private
HEADER_SEARCH_PATHS = $(SDKROOT)/System/Library/Frameworks/Kernel.framework/PrivateHeaders $(SDKROOT)/System/Library/Frameworks/Kernel.framework/Headers $(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders $(SDKROOT)/System/Library/Frameworks/System.framework/Headers $(SRCROOT_SEARCH_PATHS)
-GCC_C_LANGUAGE_STANDARD = gnu99
+GCC_C_LANGUAGE_STANDARD = gnu11
CLANG_CXX_LANGUAGE_STANDARD = gnu++0x
CLANG_CXX_LIBRARY = libc++
GCC_PRECOMPILE_PREFIX_HEADER = YES
-GCC_PREPROCESSOR_DEFINITIONS_kext = XNU_KERNEL_PRIVATE MACH_KERNEL_PRIVATE ABSOLUTETIME_SCALAR_TYPE NEEDS_SCHED_CALL_T
-GCC_PREPROCESSOR_DEFINITIONS = $(GCC_PREPROCESSOR_DEFINITIONS_kext)
+CODE_SIGN_IDENTITY = -
+DEBUG_INFORMATION_FORMAT = dwarf-with-dsym
+
+GCC_OPTIMIZATION_LEVEL_normal = s
+GCC_OPTIMIZATION_LEVEL_development = s
+GCC_OPTIMIZATION_LEVEL = $(GCC_OPTIMIZATION_LEVEL_$(PTHREAD_VARIANT))
+
+DEAD_CODE_STRIPPING = NO
+LLVM_LTO_normal = YES
+LLVM_LTO_development = NO
+LLVM_LTO_kasan = NO
+LLVM_LTO = $(LLVM_LTO_$(PTHREAD_VARIANT))
+
+GCC_PREPROCESSOR_DEFINITIONS_kext = XNU_KERNEL_PRIVATE MACH_KERNEL_PRIVATE ABSOLUTETIME_SCALAR_TYPE NEEDS_SCHED_CALL_T __PTHREAD_EXPOSE_INTERNALS__
+GCC_PREPROCESSOR_DEFINITIONS_kext_development = MACH_ASSERT DEBUG
+GCC_PREPROCESSOR_DEFINITIONS = $(GCC_PREPROCESSOR_DEFINITIONS_kext) $(GCC_PREPROCESSOR_DEFINITIONS_kext_$(PTHREAD_VARIANT))
+
+OTHER_CFLAGS_kasan = -DKASAN=1 -fsanitize=address -mllvm -asan-globals-live-support -mllvm -asan-force-dynamic-shadow -fno-inline
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES