]> git.saurik.com Git - apple/cf.git/blobdiff - Makefile
CF-1153.18.tar.gz
[apple/cf.git] / Makefile
index 10a15409a73df8afa265e5c1a748bb48ab31b58d..36e39c1ed5527da112951b421691a13470b2d053 100644 (file)
--- a/Makefile
+++ b/Makefile
-# 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