# # Copyright (c) 2003-2018 Apple Inc. All rights reserved. # # Top level makefile for Build & Integration (B&I). # # This file is used to facilitate checking the mDNSResponder project directly from git and submitting to B&I at Apple. # # The various platform directories contain makefiles or projects specific to that platform. # # B&I builds must respect the following target: # install: # installsrc: # installhdrs: # installapi: # clean: # include $(MAKEFILEPATH)/pb_makefiles/platform.make MVERS = "mDNSResponder-1310.80.1" VER = ifneq ($(strip $(GCC_VERSION)),) VER = -- GCC_VERSION=$(GCC_VERSION) endif echo "VER = $(VER)" projectdir := $(SRCROOT)/mDNSMacOSX buildsettings := OBJROOT=$(OBJROOT) SYMROOT=$(SYMROOT) DSTROOT=$(DSTROOT) MVERS=$(MVERS) SDKROOT=$(SDKROOT) .PHONY: install installSome installEmpty installExtras SystemLibraries installhdrs installapi installsrc java clean # Sanitizer support # Disable Sanitizer instrumentation in LibSystem contributors. See rdar://problem/29952210. UNSUPPORTED_SANITIZER_PROJECTS := mDNSResponderSystemLibraries mDNSResponderSystemLibraries_Sim PROJECT_SUPPORTS_SANITIZERS := 1 ifneq ($(words $(filter $(UNSUPPORTED_SANITIZER_PROJECTS), $(RC_ProjectName))), 0) PROJECT_SUPPORTS_SANITIZERS := 0 endif ifeq ($(RC_ENABLE_ADDRESS_SANITIZATION),1) ifeq ($(PROJECT_SUPPORTS_SANITIZERS),1) $(info Enabling Address Sanitizer) buildsettings += -enableAddressSanitizer YES else $(warning WARNING: Address Sanitizer not supported for project $(RC_ProjectName)) endif endif ifeq ($(RC_ENABLE_THREAD_SANITIZATION),1) ifeq ($(PROJECT_SUPPORTS_SANITIZERS),1) $(info Enabling Thread Sanitizer) buildsettings += -enableThreadSanitizer YES else $(warning WARNING: Thread Sanitizer not supported for project $(RC_ProjectName)) endif endif ifeq ($(RC_ENABLE_UNDEFINED_BEHAVIOR_SANITIZATION),1) ifeq ($(PROJECT_SUPPORTS_SANITIZERS),1) $(info Enabling Undefined Behavior Sanitizer) buildsettings += -enableUndefinedBehaviorSanitizer YES else $(warning WARNING: Undefined Behavior Sanitizer not supported for project $(RC_ProjectName)) endif endif # B&I install build targets # # For the mDNSResponder build alias, the make target used by B&I depends on the platform: # # Platform Make Target # -------- ----------- # osx install # ios installSome # atv installSome # watch installSome # # For the mDNSResponderSystemLibraries and mDNSResponderSystemLibraries_sim build aliases, B&I uses the SystemLibraries # target for all platforms. install: ifeq ($(RC_ProjectName), mDNSResponderServices) ifeq ($(RC_PROJECT_COMPILATION_PLATFORM), osx) cd '$(projectdir)'; xcodebuild install $(buildsettings) -target 'Build Services-macOS' $(VER) else cd '$(projectdir)'; xcodebuild install $(buildsettings) -target 'Build Services' $(VER) endif else ifeq ($(RC_ProjectName), mDNSResponderServices_Sim) mkdir -p $(DSTROOT)/AppleInternal else cd '$(projectdir)'; xcodebuild install $(buildsettings) $(VER) endif installSome: cd '$(projectdir)'; xcodebuild install $(buildsettings) $(VER) installEmpty: mkdir -p $(DSTROOT)/AppleInternal installExtras: ifeq ($(RC_PROJECT_COMPILATION_PLATFORM), osx) cd '$(projectdir)'; xcodebuild install $(buildsettings) -target 'Build Extras-macOS' $(VER) else ifeq ($(RC_PROJECT_COMPILATION_PLATFORM), ios) cd '$(projectdir)'; xcodebuild install $(buildsettings) -target 'Build Extras-iOS' $(VER) else ifeq ($(RC_PROJECT_COMPILATION_PLATFORM), atv) cd '$(projectdir)'; xcodebuild install $(buildsettings) -target 'Build Extras-tvOS' $(VER) else cd '$(projectdir)'; xcodebuild install $(buildsettings) -target 'Build Extras' $(VER) endif SystemLibraries: cd '$(projectdir)'; xcodebuild install $(buildsettings) -target SystemLibraries $(VER) # B&I installhdrs build targets installhdrs:: ifeq ($(RC_ProjectName), mDNSResponderServices) ifeq ($(RC_PROJECT_COMPILATION_PLATFORM), osx) cd '$(projectdir)'; xcodebuild installhdrs $(buildsettings) -target 'Build Services-macOS' $(VER) else cd '$(projectdir)'; xcodebuild installhdrs $(buildsettings) -target 'Build Services' $(VER) endif else ifeq ($(RC_ProjectName), mDNSResponderServices_Sim) mkdir -p $(DSTROOT)/AppleInternal else ifneq ($(findstring SystemLibraries,$(RC_ProjectName)),) cd '$(projectdir)'; xcodebuild installhdrs $(buildsettings) -target SystemLibraries $(VER) endif # B&I installapi build targets installapi: ifeq ($(RC_ProjectName), mDNSResponderServices) ifeq ($(RC_PROJECT_COMPILATION_PLATFORM), osx) cd '$(projectdir)'; xcodebuild installapi $(buildsettings) -target 'Build Services-macOS' $(VER) else cd '$(projectdir)'; xcodebuild installapi $(buildsettings) -target 'Build Services' $(VER) endif else ifeq ($(RC_ProjectName), mDNSResponderServices_Sim) mkdir -p $(DSTROOT)/AppleInternal else ifneq ($(findstring SystemLibraries,$(RC_ProjectName)),) cd '$(projectdir)'; xcodebuild installapi $(buildsettings) -target SystemLibrariesDynamic $(VER) endif # Misc. targets installsrc: ditto . '$(SRCROOT)' rm -rf '$(SRCROOT)/mDNSWindows' '$(SRCROOT)/Clients/FirefoxExtension' java: cd '$(projectdir)'; xcodebuild install $(buildsettings) -target libjdns_sd.jnilib $(VER) clean:: echo clean