]> git.saurik.com Git - apple/cf.git/blobdiff - Makefile
CF-635.21.tar.gz
[apple/cf.git] / Makefile
index 16e7baee9341cbec8069b0a4f671abbc593c6701..db97d3335619363969d36d829f2a5285b3dbdd5e 100644 (file)
--- a/Makefile
+++ b/Makefile
-#
-# Define sets of files to build, other info specific to this project.
-#
-
-NAME = CoreFoundation
-
-SUBPROJECTS = AppServices Base Collections Locale NumberDate Parsing PlugIn Preferences \
-               RunLoop Stream String StringEncodings URL
-
-AppServices_PUBHEADERS = CFUserNotification.h
-AppServices_SOURCES = CFUserNotification.c
-Base_PROJHEADERS = CFInternal.h ForFoundationOnly.h auto_stubs.h CFRuntime.h CFUtilities.h
-Base_PRIVHEADERS = CFPriv.h CFRuntime.h CFUtilities.h CFUtilitiesPriv.h
-Base_PUBHEADERS = CFBase.h CFByteOrder.h CoreFoundation.h CFUUID.h
-Base_SOURCES = CFBase.c CFUtilities.c CFSortFunctions.c CFSystemDirectories.c \
-               CFRuntime.c CFFileUtilities.c CFPlatform.c CFUUID.c uuid.c
-Collections_PRIVHEADERS = CFStorage.h
-Collections_PUBHEADERS = CFArray.h CFBag.h CFBinaryHeap.h CFBitVector.h \
-               CFData.h CFDictionary.h CFSet.h CFStorage.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_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 = CFBundle_BinaryTypes.h CFBundle_Internal.h CFPlugIn_Factory.h
-PlugIn_PRIVHEADERS = CFBundlePriv.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
-Preferences_PUBHEADERS = CFPreferences.h
-Preferences_SOURCES = CFApplicationPreferences.c CFPreferences.c CFXMLPreferencesDomain.c
-RunLoop_PUBHEADERS = CFMachPort.h CFMessagePort.h CFRunLoop.h CFSocket.h
-RunLoop_PRIVHEADERS = CFRunLoopPriv.h
-RunLoop_SOURCES = CFMachPort.c CFMessagePort.c CFRunLoop.c CFSocket.c
-ifeq "$(PLATFORM)" "CYGWIN"
-RunLoop_PUBHEADERS += CFWindowsMessageQueue.h
-RunLoop_SOURCES += CFWindowsMessageQueue.c 
-endif
-Stream_PRIVHEADERS = CFStreamPriv.h CFStreamAbstract.h
-Stream_PUBHEADERS = CFStream.h
-Stream_SOURCES = CFStream.c CFConcreteStreams.c CFSocketStream.c
-String_PRIVHEADERS = CFCharacterSetPriv.h CFStringDefaultEncoding.h
-String_PUBHEADERS = CFCharacterSet.h CFString.h CFStringEncodingExt.h
-String_SOURCES = CFCharacterSet.c CFString.c CFStringEncodings.c \
-               CFStringScanner.c CFStringUtilities.c
-StringEncodings_PROJHEADERS = CFUniCharPriv.h CFStringEncodingConverterPriv.h
-StringEncodings_PRIVHEADERS = CFUniChar.h CFStringEncodingConverter.h \
-               CFUnicodeDecomposition.h CFUnicodePrecomposition.h \
-               CFStringEncodingConverterExt.h
-StringEncodings_SOURCES = CFStringEncodingConverter.c CFBuiltinConverters.c \
-               CFUnicodeDecomposition.c CFUnicodePrecomposition.c CFUniChar.c
-URL_PUBHEADERS = CFURL.h CFURLAccess.h
-URL_SOURCES = CFURL.c CFURLAccess.c
-
-OTHER_SOURCES = version.c Makefile APPLE_LICENSE PropertyList.dtd
-
-# These are the actual vars that are used by framework.make
-PUBLIC_HFILES = $(foreach S, $(SUBPROJECTS), $(foreach F, $($(S)_PUBHEADERS), $(SRCROOT)/$(S).subproj/$(F)))
-PRIVATE_HFILES = $(foreach S, $(SUBPROJECTS), $(foreach F, $($(S)_PRIVHEADERS), $(SRCROOT)/$(S).subproj/$(F)))
-PROJECT_HFILES = $(foreach S, $(SUBPROJECTS), $(foreach F, $($(S)_PROJHEADERS), $(SRCROOT)/$(S).subproj/$(F)))
-CFILES = $(foreach S, $(SUBPROJECTS), $(foreach F, $($(S)_SOURCES), $(SRCROOT)/$(S).subproj/$(F)))
-
-
--include nonOpenSource.make
-
-include framework.make
-
-
-#
-# Misc additional options
-#
-
-CURRENT_PROJECT_VERSION = 368.26
-
-# common items all build styles should be defining
-CFLAGS += -DCF_BUILDING_CF=1
-CPPFLAGS += -DCF_BUILDING_CF=1
-
-# base addr is set to come before CFNetwork - use the rebase MS command to see the sizes
-# more info at http://msdn.microsoft.com/library/en-us/tools/tools/rebase.asp
-ifeq "$(PLATFORM)" "CYGWIN"
-C_WARNING_FLAGS += -Wno-endif-labels
-CPP_WARNING_FLAGS += -Wno-endif-labels
-LIBS += -lole32 -lws2_32
-LFLAGS += -Wl,--image-base=0x66000000
-endif
-
-ifeq "$(PLATFORM)" "Darwin"
-CFLAGS += -F/System/Library/Frameworks/CoreServices.framework/Frameworks
-CPPFLAGS += -F/System/Library/Frameworks/CoreServices.framework/Frameworks
-LIBS += -licucore -lobjc
-LFLAGS += -compatibility_version 150 -current_version $(CURRENT_PROJECT_VERSION) -Wl,-init,___CFInitialize
-endif
-
-ifeq "$(PLATFORM)" "FreeBSD"
-LFLAGS += -shared
-endif
-
-ifeq "$(PLATFORM)" "Linux"
-LIBS += -lpthread
-endif
-
-ifeq "$(LIBRARY_STYLE)" "Library"
-CHARACTERSETS_INSTALLDIR = /usr/local/share/$(NAME)
-else
-CHARACTERSETS_INSTALLDIR = /System/Library/CoreServices
-endif
-
-#
-# Additional steps we add to predefined targets
-#
-
-install_after::
-       $(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
-
-prebuild_after::
-ifeq "$(LIBRARY_STYLE)" "Library"
-       $(SILENT) $(COPY_RECUR) CharacterSets $(RESOURCE_DIR)
-       $(SILENT) $(REMOVE_RECUR) $(RESOURCE_DIR)/CharacterSets/CVS
-ifneq "$(PLATFORM)" "Darwin"
-# All other platforms need the compatibility headers
-       $(SILENT) $(COPY) OSXCompatibilityHeaders/*.h $(PUBLIC_HEADER_DIR)/.. #*/
-       $(SILENT) $(MKDIRS) $(PUBLIC_HEADER_DIR)/../GNUCompatibility
-       $(SILENT) $(COPY) OSXCompatibilityHeaders/GNUCompatibility/*.h $(PUBLIC_HEADER_DIR)/../GNUCompatibility #*/
-endif
-endif
-
-ifeq "$(LIBRARY_STYLE)" "Library"
-clean_after::
-       $(REMOVE_RECUR) -f $(RESOURCE_DIR)/CharacterSets
-endif
-
-compile-after::
-       $(SILENT) $(CC) $(CFLAGS) $(SRCROOT)/version.c -DVERSION=$(CURRENT_PROJECT_VERSION) -DUSER=$(USER) -c -o $(OFILE_DIR)/version.o
-
-test:
-       cd Tests; $(MAKE) test SYMROOT=$(SYMROOT) USE_OBJC=NO
+
+include MakefileVersion
+
+MIN_MACOSX_VERSION=10.7
+MAX_MACOSX_VERSION=MAC_OS_X_VERSION_10_7
+
+OBJECTS = $(patsubst %.c,%.o,$(wildcard *.c))
+OBJECTS += CFBasicHash.o
+HFILES = $(wildcard *.h)
+INTERMEDIATE_HFILES = $(addprefix $(OBJBASE)/CoreFoundation/,$(HFILES))
+
+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 CoreFoundation.h
+
+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
+
+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)
+
+OBJBASE_ROOT = CF-Objects
+OBJBASE = $(OBJBASE_ROOT)/$(STYLE)
+DSTBASE = $(if $(DSTROOT),$(DSTROOT)/System/Library/Frameworks,../CF-Root)
+
+STYLE=normal
+STYLE_CFLAGS=-O2
+STYLE_LFLAGS=
+ARCHFLAGS=-arch i386 -arch x86_64
+INSTALLNAME=/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation_$(STYLE)
+
+CC = /usr/bin/llvm-gcc
+
+CFLAGS=-c -x c -pipe -std=gnu99 -Wmost -Wno-trigraphs -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
+
+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
+
+
+.PHONY: all install clean
+.PRECIOUS: $(OBJBASE)/CoreFoundation/%.h
+
+all: install
+
+clean:
+       -/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)"
+