Makefile.postamble   [plain text]


include $(CoreOSMakefiles)/ProjectBuilder/Makefile.Postamble.Common

ifeq ($(BUILD_TYPE),normal)
OPTIMIZE_BUILD_LIBS := $(LIBSYSTEM_LIBS) $(GCCLIBS)
endif

# pb_makefiles erroneously omits $(BUILD_TYPE_SUFFIX) from the install name
DYLIB_INSTALL_NAME = $(LIBRARY_PREFIX)$(NAME).$(VERSION_NAME)$(BUILD_TYPE_SUFFIX)$(LIBRARY_EXT)

# The nonversioned suffix link is required by cc -pg, which is a bug in the compiler.
# We can remove those when this is fixed.

override DEBUG_SUFFIX = _debug
PRODUCTS += $(foreach TYPE, DEBUG PROFILE,								\
		$(PRODUCT_DIR)/$(LIBRARY_PREFIX)$(NAME)$($(TYPE)_SUFFIX)$(LIBRARY_EXT)			\
		$(PRODUCT_DIR)/$(LIBRARY_PREFIX)$(NAME).$(VERSION_NAME)$($(TYPE)_SUFFIX)$(LIBRARY_EXT)	\
	     )

SystemFramework = $(NSFRAMEWORKDIR)/System.framework
VersionDir      = Versions/$(VERSION_NAME)

compat-next:
	$(INSTALL_DIRECTORY) "$(DSTROOT)$(SystemFramework)"
	$(INSTALL_DIRECTORY) "$(DSTROOT)$(SystemFramework)/Versions"
	$(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 "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

SLFS_F_PH = /System/Library/Frameworks/System.framework/PrivateHeaders

$(OFILE_DIR)/%.ppc.o %.ppc.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 0xffff8000 \
	    $(OFILE_DIR)/commsym.$(CURRENT_ARCH).o -o $(OFILE_DIR)/$(notdir $@)

$(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 0xBFFF8000 \
	    $(OFILE_DIR)/commsym.$(CURRENT_ARCH).o -o $(OFILE_DIR)/$(notdir $@)

#----------------------------------------------------------------------------

ifeq ($(RC_ARCHS),ppc)
ifeq ($(BUILD_TYPE),normal)
LIBSUFFIX = .a
REMOVESUFFIX = .So
else
ifeq ($(BUILD_TYPE),debug)
LIBSUFFIX = _debug.a
REMOVESUFFIX = .do
else
LIBSUFFIX = _profile.a
REMOVESUFFIX = .po
endif
endif
CNAME = libc$(LIBSUFFIX)
MNAME = libm$(LIBSUFFIX)
REMOVELIBC = _ldtoa err hexfloat syslog vfprintf vfwprintf
REMOVELIBCOBJS = $(addsuffix $(REMOVESUFFIX),$(REMOVELIBC))
REMOVELIBM = fpmacros
REMOVELIBMOBJS = $(addsuffix .o,$(REMOVELIBM))
LIBGCC = $(LIBSYS)/libgcc-ppc.a

$(OFILE_DIR)/libgcc.unexport:
	nm -g -arch $(RC_ARCHS) $(LIBGCC) | grep ' [A-TV-Z] ' | sed 's/^.* [A-Z] //' > $(OFILE_DIR)/libgcc.unexport
	lipo -thin ppc -output $(OFILE_DIR)/$(CNAME) $(LIBSYS)/$(CNAME)
	ar -d $(OFILE_DIR)/$(CNAME) $(REMOVELIBCOBJS)
	ranlib $(OFILE_DIR)/$(CNAME)
	lipo -thin ppc -output $(OFILE_DIR)/$(MNAME) $(LIBSYS)/$(MNAME)
	ar -d $(OFILE_DIR)/$(MNAME) $(REMOVELIBMOBJS)
	ranlib $(OFILE_DIR)/$(MNAME)
endif