]> git.saurik.com Git - apple/libsystem.git/blobdiff - Makefile.postamble
Libsystem-88.tar.gz
[apple/libsystem.git] / Makefile.postamble
index 6b88b1a1606324c4edf596a928246bb9622a3bfe..979edc555c314a132293ec58513632296de6f27c 100644 (file)
@@ -1,14 +1,19 @@
 include $(CoreOSMakefiles)/ProjectBuilder/Makefile.Postamble.Common
 
+CC = $(GCC) # override
+# gcc-3.5 doesn't support -precomp-trustfile (3689986), which
+# pb_makefiles/flags.make sets, so we overwrite PRECOMP_CFLAGS
+PRECOMP_CFLAGS =
+
 ifeq "$(BUILD_TYPE)" "normal"
-LIBS += -lcc_noc++
+LIBS += $(GCCLIBS)
 else
 LIBS = 
 endif
 
 LIBS := $(foreach LIB,                                                 \
                  $(filter $(BSD_LIBS), $(subst -l,,$(LIBS))),          \
-                 $(NEXT_ROOT)/usr/local/lib/system/lib$(LIB).a)        \
+                 $(LIBSYS)/lib$(LIB).a)        \
        $(filter-out $(addprefix -l, $(BSD_LIBS)), $(LIBS))
 
 # pb_makefiles erroneously omits $(BUILD_TYPE_SUFFIX) from the install name
@@ -24,23 +29,52 @@ PRODUCTS += $(foreach TYPE, DEBUG PROFILE,                                                          \
             )
 
 SystemFramework = $(NSFRAMEWORKDIR)/System.framework
-VersionDir      = /Versions/$(VERSION_NAME)
+VersionDir      = Versions/$(VERSION_NAME)
 
 compat-next:
        $(INSTALL_DIRECTORY) "$(DSTROOT)$(SystemFramework)"
        $(INSTALL_DIRECTORY) "$(DSTROOT)$(SystemFramework)/Versions"
-       $(INSTALL_DIRECTORY) "$(DSTROOT)$(SystemFramework)/Versions/B"
-       for suffix in "" $(DEBUG_SUFFIX) $(PROFILE_SUFFIX); do                                                  \
-         $(LN) -fs                                                                                             \
-               $$(relpath                                                                                      \
-                   "$(DSTROOT)$(SystemFramework)$(VersionDir)"                                                 \
-                   "$(DSTROOT)$(INSTALLDIR)/$(LIBRARY_PREFIX)$(NAME).$(VERSION_NAME)$${suffix}$(LIBRARY_EXT)") \
-               "$(DSTROOT)$(SystemFramework)$(VersionDir)/System$${suffix}";                                   \
-         $(LN) -fs ".$(VersionDir)/System$${suffix}" "$(DSTROOT)$(SystemFramework)";                           \
+       $(INSTALL_DIRECTORY) "$(DSTROOT)$(SystemFramework)/$(VersionDir)"
+       $(LN) -fs "$(VERSION_NAME)" "$(DSTROOT)$(SystemFramework)/Versions/Current"
+       for suffix in "" $(DEBUG_SUFFIX) $(PROFILE_SUFFIX); do                                                          \
+               $(LN) -fs "Versions/Current/$(NAME)$${suffix}" "$(DSTROOT)$(SystemFramework)/$(NAME)$${suffix}" ;       \
+               $(LN) -fs "../../../../../..$(INSTALLDIR)/$(LIBRARY_PREFIX)$(NAME).$(VERSION_NAME)$${suffix}$(LIBRARY_EXT)" \
+                       "$(DSTROOT)$(SystemFramework)/$(VersionDir)/$(NAME)$${suffix}"                          ;       \
        done
-       $(LN) -fs ".$(VersionDir)/PrivateHeaders" "$(DSTROOT)$(SystemFramework)"
+       $(LN) -fs "Versions/Current/PrivateHeaders" "$(DSTROOT)$(SystemFramework)"
 
 compat-bsd:
        for lib in $(BSD_LIBS) ; do             \
          $(LN) -fs libSystem.dylib "$(DSTROOT)$(INSTALLDIR)/lib$${lib}.dylib"; \
        done
+
+copy_plist:
+       $(MKDIR) $(DSTROOT)$(SystemFramework)/$(VersionDir)/Resources
+       $(LN) -fs Versions/Current/Resources $(DSTROOT)$(SystemFramework)/Resources
+       $(RM) -f $(DSTROOT)$(SystemFramework)/$(VersionDir)/Resources/Info.plist
+       $(CP) $(SRCROOT)/Info.plist $(DSTROOT)$(SystemFramework)/$(VersionDir)/Resources
+       $(CHMOD) 444 $(DSTROOT)$(SystemFramework)/$(VersionDir)/Resources/Info.plist
+
+.PHONY: comm-page-symbols
+comm-page-symbols: spinlock_stub.o spinlocktry_stub.o spinunlock_stub.o CommPageSymbols.o
+
+.SUFFIXES: .st
+
+SEG1ADDR_i386 = 0xffff0000
+SEG1ADDR_ppc = 0xffff8000
+SEG1ADDR_ppc64 = 0xffffffffffff8000
+SLFS_F_PH = /System/Library/Frameworks/System.framework/PrivateHeaders
+
+$(OFILE_DIR)/%.ppc.o %.ppc.o $(OFILE_DIR)/%.ppc64.o %.ppc64.o $(OFILE_DIR)/%.i386.o %.i386.o: %.st
+       $(CC) -arch $(CURRENT_ARCH) -x assembler-with-cpp \
+           -I$(SLFS_F_PH)/$(CURRENT_ARCH) \
+           $(ALL_CFLAGS) -c -o $(OFILE_DIR)/commsym.$(CURRENT_ARCH).o $<
+       ld -arch $(CURRENT_ARCH) -r -seg1addr $(SEG1ADDR_$(CURRENT_ARCH)) \
+           $(OFILE_DIR)/commsym.$(CURRENT_ARCH).o -o $(OFILE_DIR)/$(notdir $@)
+
+#-------------------------------------------------------------------------
+
+LIBGCC = $(shell $(CC) -arch $(RC_ARCHS) -print-file-name=libgcc.a)
+
+$(OFILE_DIR)/libgcc.unexport:
+       nm -g -arch $(RC_ARCHS) $(LIBGCC) | grep ' [A-TV-Z] ' | sed 's/^.* [A-Z] //' > $(OFILE_DIR)/libgcc.unexport