-# 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