X-Git-Url: https://git.saurik.com/apple/cf.git/blobdiff_plain/550d04f5fab90f15e10180537c72c4b103fca582..HEAD:/Makefile diff --git a/Makefile b/Makefile index 10a1540..36e39c1 100644 --- a/Makefile +++ b/Makefile @@ -1,436 +1,81 @@ -# Simple makefile for building CoreFoundation on Darwin -# -# These make variables (or environment variables) are used -# if defined: -# SRCROOT path location of root of source hierarchy; -# defaults to ".", but must be set to a -# destination path for installsrc target. -# OBJROOT path location where .o files will be put; -# defaults to "/tmp/CoreFoundation.obj". -# SYMROOT path location where build products will be -# put; defaults to "/tmp/CoreFoundation.sym". -# DSTROOT path location where installed products will -# be put; defaults to "/tmp/CoreFoundation.dst". -# OBJROOT and SYMROOT should not be directories shared with other -# built projects, and should not be the same directory. -# PLATFORM name of platform being built on -# USER name of user building the project -# ARCHS list of archs for which to build -# RC_ARCHS more archs for which to build (build system) -# OTHER_CFLAGS other flags to be passed to compiler -# RC_CFLAGS more flags to be passed to compiler (build system) -# OTHER_LFLAGS other flags to be passed to the link stage -# -CURRENT_PROJECT_VERSION = 299.31 +include MakefileVersion -# First figure out the platform if not specified, so we can use it in the -# rest of this file. Currently defined values: Darwin, Linux, FreeBSD, WIN32 -ifeq "$(PLATFORM)" "" -PLATFORM := $(shell uname) -endif +MIN_MACOSX_VERSION=10.10 +MAX_MACOSX_VERSION=MAC_OS_X_VERSION_10_10 -ifeq "$(PLATFORM)" "Darwin" -PLATFORM_CFLAGS = -D__MACH__=1 -fconstant-cfstrings -endif +OBJECTS = $(patsubst %.c,%.o,$(wildcard *.c)) +OBJECTS += CFBasicHash.o +HFILES = $(wildcard *.h) +INTERMEDIATE_HFILES = $(addprefix $(OBJBASE)/CoreFoundation/,$(HFILES)) -ifeq "$(PLATFORM)" "Linux" -PLATFORM_CFLAGS = -D__LINUX__=1 -endif +PUBLIC_HEADERS=CFArray.h CFBag.h CFBase.h CFBinaryHeap.h CFBitVector.h CFBundle.h CFByteOrder.h CFCalendar.h CFCharacterSet.h CFData.h CFDate.h CFDateFormatter.h CFDictionary.h CFError.h CFLocale.h CFMessagePort.h CFNumber.h CFNumberFormatter.h CFPlugIn.h CFPlugInCOM.h CFPreferences.h CFPropertyList.h CFRunLoop.h CFSet.h CFSocket.h CFStream.h CFString.h CFStringEncodingExt.h CFTimeZone.h CFTree.h CFURL.h CFURLAccess.h CFUUID.h CFUserNotification.h CFXMLNode.h CFXMLParser.h CFAvailability.h CFUtilities.h CoreFoundation.h -ifeq "$(PLATFORM)" "FreeBSD" -PLATFORM_CFLAGS = -D__FREEBSD__=1 -endif +PRIVATE_HEADERS=CFBundlePriv.h CFCharacterSetPriv.h CFError_Private.h CFLogUtilities.h CFPriv.h CFRuntime.h CFStorage.h CFStreamAbstract.h CFStreamPriv.h CFStreamInternal.h CFStringDefaultEncoding.h CFStringEncodingConverter.h CFStringEncodingConverterExt.h CFUniChar.h CFUnicodeDecomposition.h CFUnicodePrecomposition.h ForFoundationOnly.h CFBurstTrie.h CFICULogging.h -ifeq "$(PLATFORM)" "WIN32" -PLATFORM_CFLAGS = -D__WIN32__=1 -OBJROOT = CoreFoundation.obj -SYMROOT = CoreFoundation.sym -DSTROOT = CoreFoundation.dst -endif +MACHINE_TYPE := $(shell uname -p) +unicode_data_file_name = $(if $(or $(findstring i386,$(1)),$(findstring i686,$(1)),$(findstring x86_64,$(1))),CFUnicodeData-L.mapping,CFUnicodeData-B.mapping) -ifndef SRCROOT -SRCROOT = . -endif +OBJBASE_ROOT = CF-Objects +OBJBASE = $(OBJBASE_ROOT)/$(STYLE) +DSTBASE = $(if $(DSTROOT),$(DSTROOT)/System/Library/Frameworks,../CF-Root) -ifndef OBJROOT -OBJROOT = /tmp/CoreFoundation.obj -endif +STYLE=normal +STYLE_CFLAGS=-O2 +STYLE_LFLAGS= +ARCHFLAGS=-arch i386 -arch x86_64 +INSTALLNAME=/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation_$(STYLE) -ifndef SYMROOT -SYMROOT = /tmp/CoreFoundation.sym -endif +CC = /usr/bin/clang -ifndef DSTROOT -DSTROOT = /tmp/CoreFoundation.dst -endif +CFLAGS=-c -x c -pipe -std=gnu99 -Wmost -Wno-trigraphs -Wno-deprecated -mmacosx-version-min=$(MIN_MACOSX_VERSION) -fconstant-cfstrings -fexceptions -DCF_BUILDING_CF=1 -DDEPLOYMENT_TARGET_MACOSX=1 -DMAC_OS_X_VERSION_MAX_ALLOWED=$(MAX_MACOSX_VERSION) -DU_SHOW_DRAFT_API=1 -DU_SHOW_CPLUSPLUS_API=0 -I$(OBJBASE) -DVERSION=$(VERSION) -include CoreFoundation_Prefix.h -SILENT = @ -ifeq "$(PLATFORM)" "WIN32" -CC = gcc -ECHO = echo -MKDIRS = mkdir -p -COPY = cp -COPY_RECUR = cp -r -REMOVE = rm -REMOVE_RECUR = rm -rf -SYMLINK = ln -s -CHMOD = chmod -CHOWN = chown -TAR = tar -STRIP = strip -DLLTOOL = dlltool -else -ifeq "$(PLATFORM)" "Darwin" -CC = /usr/bin/cc -else -CC = /usr/bin/gcc -endif -ECHO = /bin/echo -MKDIRS = /bin/mkdir -p -COPY = /bin/cp -COPY_RECUR = /bin/cp -r -REMOVE = /bin/rm -REMOVE_RECUR = /bin/rm -rf -SYMLINK = /bin/ln -s -CHMOD = /bin/chmod -CHOWN = /usr/sbin/chown -TAR = /usr/bin/tar -STRIP = /usr/bin/strip -endif +LFLAGS=-dynamiclib -mmacosx-version-min=$(MIN_MACOSX_VERSION) -twolevel_namespace -fexceptions -init ___CFInitialize -compatibility_version 150 -current_version $(VERSION) -Wl,-alias_list,SymbolAliases -sectcreate __UNICODE __csbitmaps CFCharacterSetBitmaps.bitmap -sectcreate __UNICODE __properties CFUniCharPropertyDatabase.data -sectcreate __UNICODE __data $(call unicode_data_file_name,$(MACHINE_TYPE)) -segprot __UNICODE r r -ifeq "$(PLATFORM)" "Darwin" -WARNING_FLAGS = -Wno-precomp -Wno-four-char-constants -endif -ifeq "$(PLATFORM)" "Darwin" -ifneq "$(ARCHS)" "" -ARCH_FLAGS = $(foreach A, $(ARCHS), $(addprefix -arch , $(A))) -else -ifneq "$(RC_ARCHS)" "" -ARCH_FLAGS = $(foreach A, $(RC_ARCHS), $(addprefix -arch , $(A))) -else -ARCH_FLAGS = -arch ppc -endif -endif -endif +.PHONY: all install clean +.PRECIOUS: $(OBJBASE)/CoreFoundation/%.h -ifeq "$(PLATFORM)" "FreeBSD" -ARCH_FLAGS = -march=i386 -endif - -ifeq "$(PLATFORM)" "Linux" -ARCH_FLAGS = -endif - -ifeq "$(USER)" "" -USER = unknown -endif - -CFLAGS = -DCF_BUILDING_CF=1 -g -fno-common -pipe $(PLATFORM_CFLAGS) \ - $(WARNING_FLAGS) -I$(SYMROOT)/ProjectHeaders -I. - -ifeq "$(PLATFORM)" "WIN32" -LFLAGS = -lmsvcrt -lnetapi32 -lobjc -lole32 -lws2_32 -else -LFLAGS = -endif - -ifeq "$(wildcard /System/Library/Frameworks)" "" -LIBRARY_STYLE = Library -LIBRARY_EXT = .so -ifeq "$(PLATFORM)" "Linux" -LIBRARY_EXT = .a -endif -ifeq "$(PLATFORM)" "WIN32" -LIBRARY_EXT = .dll -endif -HEADER_INSTALLDIR = /usr/local/include/CoreFoundation -INSTALLDIR = /usr/local/lib -CHARACTERSETS_INSTALLDIR = /usr/local/share/CoreFoundation -else -LIBRARY_STYLE = Framework -INSTALLDIR = /System/Library/Frameworks -FRAMEWORK_DIR = /System/Library/Frameworks/CoreFoundation.framework -CHARACTERSETS_INSTALLDIR = /System/Library/CoreServices -endif - -ifeq "$(PLATFORM)" "Darwin" -CFLAGS += $(ARCH_FLAGS) -F$(SYMROOT) -LFLAGS += $(ARCH_FLAGS) -dynamiclib -dynamic -compatibility_version 150 \ - -current_version $(CURRENT_PROJECT_VERSION) -Wl,-init,___CFInitialize -endif - -ifeq "$(PLATFORM)" "FreeBSD" -LFLAGS += -shared -endif - -ifeq "$(PLATFORM)" "Linux" -LFLAGS += -lpthread -endif - -CFLAGS += $(OTHER_CFLAGS) $(RC_CFLAGS) -LFLAGS += $(OTHER_LFLAGS) - - -SUBPROJECTS = AppServices Base Collections Locale NumberDate Parsing PlugIn \ - RunLoop String StringEncodings URL - -AppServices_PUBHEADERS = CFUserNotification.h -AppServices_SOURCES = CFUserNotification.c -Base_PROJHEADERS = CFPriv.h CFInternal.h ForFoundationOnly.h CFRuntime.h \ - CFUtilities.h -Base_PUBHEADERS = CFBase.h CFByteOrder.h CoreFoundation.h CFUUID.h -Base_SOURCES = CFBase.c CFUtilities.c CFSortFunctions.c \ - CFRuntime.c CFFileUtilities.c CFPlatform.c CFUUID.c uuid.c -Collections_PROJHEADERS = CFStorage.h -Collections_PUBHEADERS = CFArray.h CFBag.h CFBinaryHeap.h CFBitVector.h \ - CFData.h CFDictionary.h CFSet.h CFTree.h -Collections_SOURCES = CFArray.c CFBag.c CFBinaryHeap.c CFBitVector.c \ - CFData.c CFDictionary.c CFSet.c CFStorage.c CFTree.c -Locale_PUBHEADERS = CFLocale.h -NumberDate_PROJHEADERS = -NumberDate_PUBHEADERS = CFDate.h CFNumber.h CFTimeZone.h -NumberDate_SOURCES = CFDate.c CFNumber.c CFTimeZone.c -Parsing_PROJHEADERS = CFXMLInputStream.h -Parsing_PUBHEADERS = CFPropertyList.h CFXMLParser.h CFXMLNode.h -Parsing_SOURCES = CFBinaryPList.c CFPropertyList.c CFXMLParser.c \ - CFXMLInputStream.c CFXMLNode.c CFXMLTree.c -PlugIn_PROJHEADERS = CFBundlePriv.h CFBundle_BinaryTypes.h CFBundle_Internal.h \ - CFPlugIn_Factory.h -PlugIn_PUBHEADERS = CFBundle.h CFPlugIn.h CFPlugInCOM.h -PlugIn_SOURCES = CFBundle.c CFBundle_Resources.c CFPlugIn.c CFPlugIn_Factory.c \ - CFPlugIn_Instance.c CFPlugIn_PlugIn.c -ifeq "$(PLATFORM)" "Darwin" -RunLoop_PROJHEADERS = CFWindowsMessageQueue.h -RunLoop_PUBHEADERS = CFRunLoop.h CFSocket.h CFMachPort.h CFMessagePort.h -RunLoop_SOURCES = CFMachPort.c CFMessagePort.c CFRunLoop.c CFSocket.c \ - CFWindowsMessageQueue.c -endif -ifeq "$(PLATFORM)" "WIN32" -RunLoop_PROJHEADERS = -RunLoop_PUBHEADERS = CFRunLoop.h CFMachPort.h CFMessagePort.h -RunLoop_SOURCES = CFMachPort.c CFMessagePort.c CFRunLoop.c -endif -String_PROJHEADERS = CFCharacterSetPriv.h -String_PUBHEADERS = CFCharacterSet.h CFString.h -String_SOURCES = CFCharacterSet.c CFString.c CFStringEncodings.c \ - CFStringScanner.c CFStringUtilities.c -StringEncodings_PROJHEADERS = CFStringEncodingConverter.h CFUniChar.h \ - CFStringEncodingConverterExt.h CFUniCharPriv.h \ - CFStringEncodingConverterPriv.h CFUnicodeDecomposition.h \ - CFUnicodePrecomposition.h -StringEncodings_PUBHEADERS = -StringEncodings_SOURCES = CFStringEncodingConverter.c CFBuiltinConverters.c \ - CFUnicodeDecomposition.c CFUnicodePrecomposition.c CFUniChar.c -URL_PROJHEADERS = -URL_PUBHEADERS = CFURL.h CFURLAccess.h -URL_SOURCES = CFURL.c CFURLAccess.c - -OTHER_SOURCES = version.c Makefile APPLE_LICENSE PropertyList.dtd - -default: build -all: build -build: prebuild actual-build postbuild - -# These are the main targets: -# build builds the library to OBJROOT and SYMROOT -# installsrc copies the sources to SRCROOT -# installhdrs install only the headers to DSTROOT -# install build, then install the headers and library to DSTROOT -# clean removes build products in OBJROOT and SYMROOT - -installsrc: - $(SILENT) $(ECHO) "Installing source..." -ifeq "$(SRCROOT)" "." - $(SILENT) $(ECHO) "SRCROOT must be defined to be the destination directory; it cannot be '.'" - exit 1 -endif - $(SILENT) $(MKDIRS) $(SRCROOT) - $(SILENT) $(MKDIRS) $(foreach S, $(SUBPROJECTS), $(SRCROOT)/$(S).subproj) - -$(SILENT) $(foreach S, $(SUBPROJECTS), $(COPY) $(foreach F, $($(S)_SOURCES), $(S).subproj/$(F)) $(SRCROOT)/$(S).subproj;) - -$(SILENT) $(foreach S, $(SUBPROJECTS), $(COPY) $(foreach F, $($(S)_PROJHEADERS), $(S).subproj/$(F)) $(SRCROOT)/$(S).subproj;) - -$(SILENT) $(foreach S, $(SUBPROJECTS), $(COPY) $(foreach F, $($(S)_PUBHEADERS), $(S).subproj/$(F)) $(SRCROOT)/$(S).subproj;) - $(SILENT) $(COPY) $(OTHER_SOURCES) $(SRCROOT) - $(SILENT) $(COPY_RECUR) CharacterSets $(SRCROOT) - $(SILENT) $(REMOVE_RECUR) $(SRCROOT)/CharacterSets/CVS - -installhdrs: - $(SILENT) $(ECHO) "Installing headers..." -ifeq "$(LIBRARY_STYLE)" "Framework" - $(SILENT) $(REMOVE) -f $(DSTROOT)/$(FRAMEWORK_DIR)/Headers - $(SILENT) $(REMOVE) -f $(DSTROOT)/$(FRAMEWORK_DIR)/PrivateHeaders - $(SILENT) $(REMOVE) -f $(DSTROOT)/$(FRAMEWORK_DIR)/Versions/Current - $(SILENT) $(MKDIRS) $(DSTROOT)/$(FRAMEWORK_DIR)/Versions/A/Headers - $(SILENT) $(MKDIRS) $(DSTROOT)/$(FRAMEWORK_DIR)/Versions/A/PrivateHeaders - $(SILENT) $(SYMLINK) A $(DSTROOT)/$(FRAMEWORK_DIR)/Versions/Current - $(SILENT) $(SYMLINK) Versions/Current/Headers $(DSTROOT)/$(FRAMEWORK_DIR)/Headers - $(SILENT) $(SYMLINK) Versions/Current/PrivateHeaders $(DSTROOT)/$(FRAMEWORK_DIR)/PrivateHeaders - -$(SILENT) $(CHMOD) +w $(DSTROOT)/$(FRAMEWORK_DIR)/Versions/A/Headers/*.h - -$(SILENT) $(CHMOD) +w $(DSTROOT)/$(FRAMEWORK_DIR)/Versions/A/PrivateHeaders/*.h - $(SILENT) $(COPY) $(foreach S, $(SUBPROJECTS), $(foreach F, $($(S)_PUBHEADERS), $(SRCROOT)/$(S).subproj/$(F))) $(DSTROOT)/$(FRAMEWORK_DIR)/Versions/A/Headers - $(SILENT) $(COPY) Base.subproj/CFPriv.h Base.subproj/CFRuntime.h $(DSTROOT)/$(FRAMEWORK_DIR)/Versions/A/PrivateHeaders - $(SILENT) $(CHOWN) -R root:wheel $(DSTROOT)/$(FRAMEWORK_DIR) - -$(SILENT) $(CHMOD) -w $(DSTROOT)/$(FRAMEWORK_DIR)/Versions/A/Headers/*.h - -$(SILENT) $(CHMOD) -w $(DSTROOT)/$(FRAMEWORK_DIR)/Versions/A/PrivateHeaders/*.h -endif -ifeq "$(LIBRARY_STYLE)" "Library" - $(SILENT) $(MKDIRS) $(DSTROOT)/$(HEADER_INSTALLDIR) - -$(SILENT) $(CHMOD) +w $(DSTROOT)/$(HEADER_INSTALLDIR)/*.h - $(SILENT) $(COPY) $(foreach S, $(SUBPROJECTS), $(foreach F, $($(S)_PUBHEADERS), $(SRCROOT)/$(S).subproj/$(F))) $(DSTROOT)/$(HEADER_INSTALLDIR) - $(SILENT) $(CHMOD) -w $(DSTROOT)/$(HEADER_INSTALLDIR)/*.h -endif - -install: build - $(SILENT) $(ECHO) "Installing..." -ifeq "$(LIBRARY_STYLE)" "Framework" - $(SILENT) $(MKDIRS) $(DSTROOT)/$(FRAMEWORK_DIR) - -$(SILENT) $(CHMOD) -R +w $(DSTROOT)/$(FRAMEWORK_DIR) - $(SILENT) $(REMOVE_RECUR) $(DSTROOT)/$(FRAMEWORK_DIR) - $(SILENT) (cd $(SYMROOT) && $(TAR) -cf - CoreFoundation.framework) | (cd $(DSTROOT)/$(INSTALLDIR) && $(TAR) -xf -) - $(SILENT) $(STRIP) -S $(DSTROOT)/$(FRAMEWORK_DIR)/Versions/A/CoreFoundation - $(SILENT) $(STRIP) -S $(DSTROOT)/$(FRAMEWORK_DIR)/Versions/A/CoreFoundation_debug - $(SILENT) $(STRIP) -S $(DSTROOT)/$(FRAMEWORK_DIR)/Versions/A/CoreFoundation_profile - $(SILENT) $(CHMOD) -R ugo-w $(DSTROOT)/$(FRAMEWORK_DIR) - $(SILENT) $(CHMOD) -R o+rX $(DSTROOT)/$(FRAMEWORK_DIR) - $(SILENT) $(CHOWN) -R root:wheel $(DSTROOT)/$(FRAMEWORK_DIR) -endif -ifeq "$(LIBRARY_STYLE)" "Library" - $(SILENT) $(MKDIRS) $(DSTROOT)/$(INSTALLDIR) - -$(SILENT) $(CHMOD) +w $(DSTROOT)/$(INSTALLDIR) - $(SILENT) $(REMOVE) -f $(DSTROOT)/$(INSTALLDIR)/libCoreFoundation$(LIBRARY_EXT) - $(SILENT) $(REMOVE) -f $(DSTROOT)/$(INSTALLDIR)/libCoreFoundation_debug$(LIBRARY_EXT) - $(SILENT) $(REMOVE) -f $(DSTROOT)/$(INSTALLDIR)/libCoreFoundation_profile$(LIBRARY_EXT) - $(SILENT) $(COPY) $(SYMROOT)/libCoreFoundation$(LIBRARY_EXT) $(DSTROOT)/$(INSTALLDIR)/libCoreFoundation$(LIBRARY_EXT) -ifneq "$(LIBRARY_EXT)" ".a" - $(SILENT) $(COPY) $(SYMROOT)/libCoreFoundation_debug$(LIBRARY_EXT) $(DSTROOT)/$(INSTALLDIR)/libCoreFoundation_debug$(LIBRARY_EXT) - $(SILENT) $(COPY) $(SYMROOT)/libCoreFoundation_profile$(LIBRARY_EXT) $(DSTROOT)/$(INSTALLDIR)/libCoreFoundation_profile$(LIBRARY_EXT) -endif - -$(SILENT) $(CHOWN) root:wheel $(DSTROOT)/$(INSTALLDIR)/libCoreFoundation$(LIBRARY_EXT) - -$(SILENT) $(CHOWN) root:wheel $(DSTROOT)/$(INSTALLDIR)/libCoreFoundation_debug$(LIBRARY_EXT) - -$(SILENT) $(CHOWN) root:wheel $(DSTROOT)/$(INSTALLDIR)/libCoreFoundation_profile$(LIBRARY_EXT) - $(SILENT) $(CHMOD) 755 $(DSTROOT)/$(INSTALLDIR)/libCoreFoundation$(LIBRARY_EXT) -ifneq "$(LIBRARY_EXT)" ".a" - $(SILENT) $(CHMOD) 755 $(DSTROOT)/$(INSTALLDIR)/libCoreFoundation_debug$(LIBRARY_EXT) - $(SILENT) $(CHMOD) 755 $(DSTROOT)/$(INSTALLDIR)/libCoreFoundation_profile$(LIBRARY_EXT) -endif - $(SILENT) $(MKDIRS) $(DSTROOT)/$(HEADER_INSTALLDIR) - -$(SILENT) $(CHMOD) +w $(DSTROOT)/$(HEADER_INSTALLDIR)/*.h - $(SILENT) $(COPY) $(foreach S, $(SUBPROJECTS), $(foreach F, $($(S)_PUBHEADERS), $(SRCROOT)/$(S).subproj/$(F))) $(DSTROOT)/$(HEADER_INSTALLDIR) - $(SILENT) $(CHMOD) -w $(DSTROOT)/$(HEADER_INSTALLDIR)/*.h -endif - $(SILENT) $(MKDIRS) $(DSTROOT)/$(CHARACTERSETS_INSTALLDIR) - -$(SILENT) $(CHMOD) 755 $(DSTROOT)/$(CHARACTERSETS_INSTALLDIR) - $(SILENT) $(MKDIRS) $(DSTROOT)/$(CHARACTERSETS_INSTALLDIR)/CharacterSets - -$(SILENT) $(CHMOD) -R +w $(DSTROOT)/$(CHARACTERSETS_INSTALLDIR)/CharacterSets - $(SILENT) $(REMOVE_RECUR) $(DSTROOT)/$(CHARACTERSETS_INSTALLDIR)/CharacterSets - $(SILENT) $(COPY_RECUR) $(SRCROOT)/CharacterSets $(DSTROOT)/$(CHARACTERSETS_INSTALLDIR) - $(SILENT) $(REMOVE_RECUR) $(DSTROOT)/$(CHARACTERSETS_INSTALLDIR)/CharacterSets/CVS - $(SILENT) $(CHOWN) -R root:wheel $(DSTROOT)/$(CHARACTERSETS_INSTALLDIR)/CharacterSets - $(SILENT) $(CHMOD) 444 $(DSTROOT)/$(CHARACTERSETS_INSTALLDIR)/CharacterSets/* - $(SILENT) $(CHMOD) 755 $(DSTROOT)/$(CHARACTERSETS_INSTALLDIR)/CharacterSets +all: install clean: - $(SILENT) $(ECHO) "Deleting build products..." - $(SILENT) $(REMOVE_RECUR) $(SYMROOT)/ProjectHeaders -ifeq "$(LIBRARY_STYLE)" "Framework" - $(SILENT) $(REMOVE_RECUR) $(SYMROOT)/CoreFoundation.framework -endif -ifeq "$(LIBRARY_STYLE)" "Library" - $(SILENT) $(REMOVE) -f $(SYMROOT)/libCoreFoundation$(LIBRARY_EXT) - $(SILENT) $(REMOVE) -f $(SYMROOT)/libCoreFoundation_debug$(LIBRARY_EXT) - $(SILENT) $(REMOVE) -f $(SYMROOT)/libCoreFoundation_profile$(LIBRARY_EXT) -endif -ifeq "$(PLATFORM)" "WIN32" - $(SILENT) $(REMOVE) -f $(SYMROOT)/CoreFoundation*$(LIBRARY_EXT) - $(SILENT) $(REMOVE) -f $(SYMROOT)/CoreFoundation*.lib -endif - $(SILENT) $(REMOVE) -f $(OBJROOT)/*.o - -prebuild: - $(SILENT) $(ECHO) "Prebuild-setup..." -ifeq "$(LIBRARY_STYLE)" "Framework" - $(SILENT) $(MKDIRS) $(SYMROOT) - $(SILENT) $(REMOVE_RECUR) $(SYMROOT)/ProjectHeaders - $(SILENT) $(MKDIRS) $(SYMROOT)/ProjectHeaders -# $(SILENT) $(REMOVE_RECUR) $(SYMROOT)/CoreFoundation.framework - $(SILENT) $(REMOVE) -f $(SYMROOT)/CoreFoundation.framework/Versions/Current - $(SILENT) $(REMOVE) -f $(SYMROOT)/CoreFoundation.framework/Headers - $(SILENT) $(REMOVE) -f $(SYMROOT)/CoreFoundation.framework/PrivateHeaders - $(SILENT) $(REMOVE) -f $(SYMROOT)/CoreFoundation.framework/Resources - $(SILENT) $(MKDIRS) $(SYMROOT)/CoreFoundation.framework/Versions/A/Headers - $(SILENT) $(MKDIRS) $(SYMROOT)/CoreFoundation.framework/Versions/A/PrivateHeaders - $(SILENT) $(MKDIRS) $(SYMROOT)/CoreFoundation.framework/Versions/A/Resources - $(SILENT) $(SYMLINK) A $(SYMROOT)/CoreFoundation.framework/Versions/Current - $(SILENT) $(SYMLINK) Versions/Current/Headers $(SYMROOT)/CoreFoundation.framework/Headers - $(SILENT) $(SYMLINK) Versions/Current/PrivateHeaders $(SYMROOT)/CoreFoundation.framework/PrivateHeaders - $(SILENT) $(SYMLINK) Versions/Current/Resources $(SYMROOT)/CoreFoundation.framework/Resources - $(SILENT) $(ECHO) "Copying headers..." - $(SILENT) $(COPY) $(foreach S, $(SUBPROJECTS), $(foreach F, $($(S)_PROJHEADERS), $(SRCROOT)/$(S).subproj/$(F))) $(SYMROOT)/ProjectHeaders - $(SILENT) $(COPY) $(foreach S, $(SUBPROJECTS), $(foreach F, $($(S)_PUBHEADERS), $(SRCROOT)/$(S).subproj/$(F))) $(SYMROOT)/CoreFoundation.framework/Versions/A/Headers - $(SILENT) $(COPY) Base.subproj/CFPriv.h Base.subproj/CFRuntime.h $(SYMROOT)/CoreFoundation.framework/Versions/A/PrivateHeaders -endif -ifeq "$(LIBRARY_STYLE)" "Library" - $(SILENT) $(MKDIRS) $(SYMROOT) - $(SILENT) $(REMOVE_RECUR) $(SYMROOT)/ProjectHeaders - $(SILENT) $(MKDIRS) $(SYMROOT)/ProjectHeaders - $(SILENT) $(ECHO) "Copying headers..." - $(SILENT) $(COPY) $(foreach S, $(SUBPROJECTS), $(foreach F, $($(S)_PROJHEADERS), $(SRCROOT)/$(S).subproj/$(F))) $(SYMROOT)/ProjectHeaders - $(SILENT) $(MKDIRS) $(SYMROOT)/ProjectHeaders/CoreFoundation - $(SILENT) $(COPY) $(foreach S, $(SUBPROJECTS), $(foreach F, $($(S)_PUBHEADERS), $(SRCROOT)/$(S).subproj/$(F))) $(SYMROOT)/ProjectHeaders/CoreFoundation -endif - -actual-build: - $(SILENT) $(ECHO) "Building..." - $(SILENT) $(MKDIRS) $(OBJROOT) - $(SILENT) for x in $(foreach S, $(SUBPROJECTS), $(foreach F, $($(S)_SOURCES), $(SRCROOT)/$(S).subproj/$(F))) ; do \ - if [ ! $(OBJROOT)/`basename $$x .c`.opt.o -nt $$x ] ; then \ - $(ECHO) " ..." $$x " (optimized)" ; \ - $(CC) $(CFLAGS) $$x -O -c -o $(OBJROOT)/`basename $$x .c`.opt.o ; \ - fi ; \ - if [ ! $(OBJROOT)/`basename $$x .c`.debug.o -nt $$x ] ; then \ - $(ECHO) " ..." $$x " (debug)" ; \ - $(CC) $(CFLAGS) $$x -DDEBUG -c -o $(OBJROOT)/`basename $$x .c`.debug.o ; \ - fi ; \ - if [ ! $(OBJROOT)/`basename $$x .c`.profile.o -nt $$x ] ; then \ - $(ECHO) " ..." $$x " (profile)" ; \ - $(CC) $(CFLAGS) $$x -DPROFILE -pg -O -c -o $(OBJROOT)/`basename $$x .c`.profile.o ; \ - fi \ - done - $(SILENT) $(CC) $(CFLAGS) $(SRCROOT)/version.c -DVERSION=$(CURRENT_PROJECT_VERSION) -DUSER=$(USER) -O -c -o $(OBJROOT)/version.opt.o - $(SILENT) $(CC) $(CFLAGS) $(SRCROOT)/version.c -DVERSION=$(CURRENT_PROJECT_VERSION) -DUSER=$(USER) -DDEBUG -c -o $(OBJROOT)/version.debug.o - $(SILENT) $(CC) $(CFLAGS) $(SRCROOT)/version.c -DVERSION=$(CURRENT_PROJECT_VERSION) -DUSER=$(USER) -DPROFILE -pg -O -c -o $(OBJROOT)/version.profile.o - $(SILENT) $(ECHO) "Linking..." -ifeq "$(PLATFORM)" "Darwin" - $(SILENT) $(CC) $(LFLAGS) -O -install_name $(FRAMEWORK_DIR)/Versions/A/CoreFoundation -o $(SYMROOT)/CoreFoundation.framework/Versions/A/CoreFoundation $(OBJROOT)/*.opt.o - $(SILENT) $(CC) $(LFLAGS) -install_name $(FRAMEWORK_DIR)/Versions/A/CoreFoundation_debug -o $(SYMROOT)/CoreFoundation.framework/Versions/A/CoreFoundation_debug $(OBJROOT)/*.debug.o - $(SILENT) $(CC) $(LFLAGS) -pg -O -install_name $(FRAMEWORK_DIR)/Versions/A/CoreFoundation_profile -o $(SYMROOT)/CoreFoundation.framework/Versions/A/CoreFoundation_profile $(OBJROOT)/*.profile.o -endif -ifeq "$(PLATFORM)" "Linux" - $(SILENT) $(ECHO) "NOTE: Producing static libraries on Linux" - $(SILENT) ar cr $(SYMROOT)/libCoreFoundation$(LIBRARY_EXT) $(OBJROOT)/*.opt.o - $(SILENT) ar cr $(SYMROOT)/libCoreFoundation_debug$(LIBRARY_EXT) $(OBJROOT)/*.debug.o - $(SILENT) ar cr $(SYMROOT)/libCoreFoundation_profile$(LIBRARY_EXT) $(OBJROOT)/*.profile.o -endif -ifeq "$(PLATFORM)" "FreeBSD" - $(SILENT) $(CC) $(LFLAGS) -O -o $(SYMROOT)/libCoreFoundation$(LIBRARY_EXT) (OBJROOT)/*.opt.o - $(SILENT) $(CC) $(LFLAGS) -o $(SYMROOT)/libCoreFoundation_debug$(LIBRARY_EXT) (OBJROOT)/*.debug.o - $(SILENT) $(CC) $(LFLAGS) -pg -O -o $(SYMROOT)/libCoreFoundation_profile$(LIBRARY_EXT) (OBJROOT)/*.profile.o -endif -ifeq "$(PLATFORM)" "WIN32" - $(SILENT) $(DLLTOOL) -e CoreFoundation -l CoreFoundation.lib $(OBJROOT)/*.opt.o - $(SILENT) $(CC) -mdll $(OBJROOT)/*.opt.o CoreFoundation -o CoreFoundation$(LIBRARY_EXT) $(LFLAGS) - $(SILENT) $(DLLTOOL) -e CoreFoundation_debug -l CoreFoundation_debug.lib $(OBJROOT)/*.debug.o - $(SILENT) $(CC) -mdll $(OBJROOT)/*.debug.o CoreFoundation_debug -o CoreFoundation_debug$(LIBRARY_EXT) $(LFLAGS) - $(SILENT) $(COPY) *.lib $(SYMROOT) - $(SILENT) $(COPY) *.dll $(SYMROOT) - $(SILENT) $(REMOVE) *.dll *.lib CoreFoundation CoreFoundation_debug -endif - $(SILENT) $(ECHO) "Done!" + -/bin/rm -rf $(OBJBASE_ROOT) + +$(OBJBASE)/CoreFoundation: + /bin/mkdir -p $(OBJBASE)/CoreFoundation + +$(OBJBASE)/CoreFoundation/%.h: %.h $(OBJBASE)/CoreFoundation + /bin/cp $< $@ + +$(OBJBASE)/%.o: %.c $(INTERMEDIATE_HFILES) + $(CC) $(STYLE_CFLAGS) $(ARCHFLAGS) $(CFLAGS) $< -o $@ + +$(OBJBASE)/%.o: %.m $(INTERMEDIATE_HFILES) + $(CC) $(STYLE_CFLAGS) $(ARCHFLAGS) $(CFLAGS) $< -o $@ + +$(OBJBASE)/CoreFoundation_$(STYLE): $(addprefix $(OBJBASE)/,$(OBJECTS)) + $(CC) $(STYLE_LFLAGS) -install_name $(INSTALLNAME) $(ARCHFLAGS) $(LFLAGS) $^ -licucore.A -o $(OBJBASE)/CoreFoundation_$(STYLE) + +install: $(OBJBASE)/CoreFoundation_$(STYLE) + /bin/rm -rf $(DSTBASE)/CoreFoundation.framework + /bin/mkdir -p $(DSTBASE)/CoreFoundation.framework/Versions/A/Resources + /bin/mkdir -p $(DSTBASE)/CoreFoundation.framework/Versions/A/Headers + /bin/mkdir -p $(DSTBASE)/CoreFoundation.framework/Versions/A/PrivateHeaders + /bin/ln -sf A $(DSTBASE)/CoreFoundation.framework/Versions/Current + /bin/ln -sf Versions/Current/Resources $(DSTBASE)/CoreFoundation.framework/Resources + /bin/ln -sf Versions/Current/Headers $(DSTBASE)/CoreFoundation.framework/Headers + /bin/ln -sf Versions/Current/PrivateHeaders $(DSTBASE)/CoreFoundation.framework/PrivateHeaders + /bin/ln -sf Versions/Current/CoreFoundation $(DSTBASE)/CoreFoundation.framework/CoreFoundation + /bin/cp Info.plist $(DSTBASE)/CoreFoundation.framework/Versions/A/Resources + /bin/mkdir -p $(DSTBASE)/CoreFoundation.framework/Versions/A/Resources/en.lproj + /bin/cp $(PUBLIC_HEADERS) $(DSTBASE)/CoreFoundation.framework/Versions/A/Headers + /bin/cp $(PRIVATE_HEADERS) $(DSTBASE)/CoreFoundation.framework/Versions/A/PrivateHeaders + #/usr/bin/strip -S -o $(DSTBASE)/CoreFoundation.framework/Versions/A/CoreFoundation $(OBJBASE)/CoreFoundation_$(STYLE) + /bin/cp $(OBJBASE)/CoreFoundation_$(STYLE) $(DSTBASE)/CoreFoundation.framework/Versions/A/CoreFoundation + /usr/bin/dsymutil $(DSTBASE)/CoreFoundation.framework/Versions/A/CoreFoundation -o $(DSTBASE)/CoreFoundation.framework.dSYM + /usr/sbin/chown -RH -f root:wheel $(DSTBASE)/CoreFoundation.framework + /bin/chmod -RH a-w,a+rX $(DSTBASE)/CoreFoundation.framework + /bin/chmod -RH u+w $(DSTBASE) + install_name_tool -id /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation $(DSTBASE)/CoreFoundation.framework/Versions/A/CoreFoundation + @echo "Installing done. The framework is in $(DSTBASE)" -postbuild: -ifeq "$(LIBRARY_STYLE)" "Framework" - -$(SILENT) $(SYMLINK) Versions/Current/CoreFoundation $(SYMROOT)/CoreFoundation.framework/CoreFoundation - -$(SILENT) $(SYMLINK) Versions/Current/CoreFoundation_debug $(SYMROOT)/CoreFoundation.framework/CoreFoundation_debug - -$(SILENT) $(SYMLINK) Versions/Current/CoreFoundation_profile $(SYMROOT)/CoreFoundation.framework/CoreFoundation_profile -endif