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))
STATIC_ARCH_CFLAGS =
DYNAMIC_ARCH_CFLAGS =
else
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) $@