OFLAG = -O CFLAGS = $(OFLAG) -g -Wall $(RC_NONARCH_CFLAGS) ifneq (,$(findstring ppc, $(RC_ARCHS))) CFLAGS += -mlong-branch endif IFLAGS = -S -S -c -m 444 SRCROOT = . SYMROOT = . OBJROOT = . USRLIBDIR = /usr/lib LOCLIBDIR = /usr/local/lib DSTDIRS = $(DSTROOT)$(USRLIBDIR) $(DSTROOT)$(LOCLIBDIR) DYLD = $(NEXT_ROOT)/usr/lib/dyld CC = /usr/bin/gcc-3.5 ifneq "$(wildcard /bin/pax)" "" PAX = /bin/pax -rw else PAX = /bin/cp -p endif ifneq "$(wildcard /bin/mkdirs)" "" MKDIR = /bin/mkdirs else MKDIR = /bin/mkdir -p endif CHMOD = /bin/chmod INSTALL = /usr/bin/install ifeq (,$(RC_ARCHS)) # build for the local arch only STATIC_ARCH_CFLAGS = DYNAMIC_ARCH_CFLAGS = else # assume the toolchain supports static compilation for all request archs STATIC_ARCH_CFLAGS = $(patsubst %,-arch %,$(RC_ARCHS)) DYNAMIC_ARCH_CFLAGS = $(patsubst %,-arch %,$(RC_ARCHS)) endif CFILES = crt.c icplusplus.c SFILES = start.s dyld.s dylib.s bundle1.s INSTALLSRC_FILES = $(CFILES) $(SFILES) Makefile PB.project notes USRLIB_INSTALL_FILES = crt1.o gcrt1.o dylib1.o bundle1.o LOCLIB_INSTALL_FILES = crt0.o gcrt0.o pscrt0.o pscrt1.o all: $(USRLIB_INSTALL_FILES) $(LOCLIB_INSTALL_FILES) crt0.o: sstart.o xcrt0.o sdyld.o $(CC) $(CFLAGS) $(STATIC_ARCH_CFLAGS) \ -r -static -nostdlib \ $(OBJROOT)/sstart.o $(OBJROOT)/xcrt0.o \ $(OBJROOT)/sdyld.o \ -o $(SYMROOT)/crt0.o sstart.o: start.s $(CC) -static -DCRT0 $(STATIC_ARCH_CFLAGS) \ -c -o $(OBJROOT)/sstart.o $(SRCROOT)/start.s xcrt0.o: crt.c $(CC) -static -DCRT0 $(CFLAGS) $(STATIC_ARCH_CFLAGS) \ -c -o $(OBJROOT)/xcrt0.o $(SRCROOT)/crt.c sdyld.o: dyld.s $(CC) -static -DCRT0 $(STATIC_ARCH_CFLAGS) \ -c -o $(OBJROOT)/sdyld.o $(SRCROOT)/dyld.s gcrt0.o: sstart.o xgcrt0.o sdyld.o $(CC) $(CFLAGS) $(STATIC_ARCH_CFLAGS) \ -r -static -nostdlib \ $(OBJROOT)/sstart.o $(OBJROOT)/xgcrt0.o \ $(OBJROOT)/sdyld.o \ -o $(SYMROOT)/gcrt0.o xgcrt0.o: crt.c $(CC) -static -DCRT0 -DGCRT $(CFLAGS) $(STATIC_ARCH_CFLAGS) \ -c -o $(OBJROOT)/xgcrt0.o $(SRCROOT)/crt.c pscrt0.o: sstart.o xpscrt0.o sdyld.o $(CC) $(CFLAGS) $(STATIC_ARCH_CFLAGS) \ -r -static -nostdlib \ $(OBJROOT)/sstart.o $(OBJROOT)/xpscrt0.o \ $(OBJROOT)/sdyld.o \ -o $(SYMROOT)/pscrt0.o xpscrt0.o: crt.c $(CC) -static -DCRT0 -DPOSTSCRIPT $(CFLAGS) $(STATIC_ARCH_CFLAGS) \ -c -o $(OBJROOT)/xpscrt0.o $(SRCROOT)/crt.c crt1.o: dstart.o xcrt1.o ddyld.o $(CC) $(CFLAGS) $(DYNAMIC_ARCH_CFLAGS) $(DYLD) -arch_errors_fatal \ -r -dynamic -nostdlib -keep_private_externs \ $(OBJROOT)/dstart.o $(OBJROOT)/xcrt1.o \ $(OBJROOT)/ddyld.o \ -o $(SYMROOT)/crt1.o dstart.o: start.s $(CC) -dynamic -DCRT1 $(DYNAMIC_ARCH_CFLAGS) \ -c -o $(OBJROOT)/dstart.o $(SRCROOT)/start.s xcrt1.o: crt.c $(CC) -dynamic -DCRT1 $(CFLAGS) $(DYNAMIC_ARCH_CFLAGS) \ -c -o $(OBJROOT)/xcrt1.o $(SRCROOT)/crt.c ddyld.o: dyld.s $(CC) -dynamic -DCRT1 $(DYNAMIC_ARCH_CFLAGS) \ -c -o $(OBJROOT)/ddyld.o $(SRCROOT)/dyld.s gcrt1.o: dstart.o xgcrt1.o ddyld.o $(CC) $(CFLAGS) $(DYNAMIC_ARCH_CFLAGS) $(DYLD) -arch_errors_fatal \ -r -dynamic -nostdlib -keep_private_externs \ $(OBJROOT)/dstart.o $(OBJROOT)/xgcrt1.o $(OBJROOT)/ddyld.o \ -o $(SYMROOT)/gcrt1.o xgcrt1.o: crt.c $(CC) -dynamic -DCRT1 -DGCRT $(CFLAGS) $(DYNAMIC_ARCH_CFLAGS) \ -c -o $(OBJROOT)/xgcrt1.o $(SRCROOT)/crt.c pscrt1.o: dstart.o xpscrt1.o ddyld.o $(CC) $(CFLAGS) $(DYNAMIC_ARCH_CFLAGS) $(DYLD) -arch_errors_fatal \ -r -dynamic -nostdlib -keep_private_externs \ $(OBJROOT)/dstart.o $(OBJROOT)/xpscrt1.o $(OBJROOT)/ddyld.o \ -o $(SYMROOT)/pscrt1.o xpscrt1.o: crt.c $(CC) -dynamic -DCRT1 -DPOSTSCRIPT $(CFLAGS) $(DYNAMIC_ARCH_CFLAGS) \ -c -o $(OBJROOT)/xpscrt1.o $(SRCROOT)/crt.c dylib1.o: dylib.o icplusplus.o $(CC) $(CFLAGS) $(DYNAMIC_ARCH_CFLAGS) \ -r -dynamic -nostdlib -keep_private_externs \ $(OBJROOT)/dylib.o $(OBJROOT)/icplusplus.o \ -o $(SYMROOT)/dylib1.o dylib.o: dylib.s $(CC) -dynamic $(DYNAMIC_ARCH_CFLAGS) \ -c -o $(OBJROOT)/dylib.o $(SRCROOT)/dylib.s icplusplus.o: icplusplus.c $(CC) -dynamic $(CFLAGS) $(DYNAMIC_ARCH_CFLAGS) \ -c -o $(OBJROOT)/icplusplus.o $(SRCROOT)/icplusplus.c bundle1.o: bundle1.s $(CC) -dynamic $(CFLAGS) $(DYNAMIC_ARCH_CFLAGS) \ -c -o $(SYMROOT)/bundle1.o $(SRCROOT)/bundle1.s clean: rm -f $(OBJROOT)/sstart.o $(OBJROOT)/dstart.o \ $(OBJROOT)/sdyld.o $(OBJROOT)/ddyld.o rm -f $(OBJROOT)/xcrt0.o \ $(OBJROOT)/xgcrt0.o \ $(OBJROOT)/xpscrt0.o \ $(OBJROOT)/xcrt1.o \ $(OBJROOT)/xgcrt1.o \ $(OBJROOT)/xpscrt1.o rm -f $(SYMROOT)/crt0.o \ $(SYMROOT)/gcrt0.o \ $(SYMROOT)/pscrt0.o \ $(SYMROOT)/crt1.o \ $(SYMROOT)/gcrt1.o \ $(SYMROOT)/pscrt1.o rm -f $(OBJROOT)/dylib.o \ $(OBJROOT)/icplusplus.o rm -f $(SYMROOT)/dylib1.o $(SYMROOT)/bundle1.o install: all $(DSTDIRS) for obj in $(USRLIB_INSTALL_FILES); do \ (set -x; \ $(INSTALL) $(IFLAGS) $(SYMROOT)/$${obj} $(DSTROOT)$(USRLIBDIR)/$${obj}; \ ) \ done for obj in $(LOCLIB_INSTALL_FILES); do \ (set -x; \ $(INSTALL) $(IFLAGS) $(SYMROOT)/$${obj} $(DSTROOT)$(LOCLIBDIR)/$${obj}; \ ) \ done installhdrs: installsrc: $(MKDIR) $(SRCROOT) $(CHMOD) 755 $(SRCROOT) $(PAX) $(INSTALLSRC_FILES) $(SRCROOT) $(CHMOD) 444 $(SRCROOT)/* $(OJBROOT) $(SYMROOT) $(DSTDIRS): $(MKDIR) $@