1OFLAG = -Os 2CFLAGS = $(OFLAG) -Wall $(RC_NONARCH_CFLAGS) 3 4SRCROOT = . 5SYMROOT = . 6OBJROOT = . 7 8PAX = /bin/pax -rw 9MKDIR = /bin/mkdir -p 10CHMOD = /bin/chmod 11LIPO = /usr/bin/lipo 12 13ifeq (,$(RC_ARCHS)) 14 # build for the local arch only 15 ARCH_CFLAGS = 16else 17 # assume the toolchain supports static compilation for all request archs 18 ARCH_CFLAGS = $(patsubst %,-arch %,$(RC_ARCHS)) 19endif 20 21# v1 = MacOSX 10.4 and earlier, iPhone n/a 22# v2 = MacOSX 10.5 and later, iPhone 2.0 or later 23# v3 = MacOSX 10.6 and later, iPhone 2.0 or later 24 25ifeq (,$(RC_PURPLE)) 26 OS_MIN_V1 = -mmacosx-version-min=10.4 27 OS_MIN_V2 = -mmacosx-version-min=10.5 28 OS_MIN_V3 = -mmacosx-version-min=10.6 29 INSTALL_TARGET = install_macosx 30else 31 OS_MIN_V2 = -miphoneos-version-min=2.0 32 OS_MIN_V3 = -miphoneos-version-min=2.0 33 INSTALL_TARGET = install_iphone 34endif 35 36USRLIBDIR = /usr/lib 37LOCLIBDIR = /usr/local/lib 38DSTDIRS = $(DSTROOT)$(USRLIBDIR) $(DSTROOT)$(LOCLIBDIR) 39 40INSTALLSRC_FILES = Makefile crt.c icplusplus.c lazy_dylib_loader.c start.s dyld_glue.s lazy_dylib_helper.s 41 42INTERMEDIATE_FILES = $(SYMROOT)/crt1.v1.o $(SYMROOT)/crt1.v2.o $(SYMROOT)/crt1.v3.o \ 43 $(SYMROOT)/gcrt1.o $(SYMROOT)/crt0.o \ 44 $(SYMROOT)/dylib1.v1.o $(SYMROOT)/dylib1.v2.o \ 45 $(SYMROOT)/bundle1.v1.o \ 46 $(SYMROOT)/lazydylib1.o 47 48# default target for development builds 49all: $(INTERMEDIATE_FILES) 50 51 52$(SYMROOT)/crt1.v1.o: start.s crt.c dyld_glue.s 53 $(CC) -r $(ARCH_CFLAGS) -Os $(OS_MIN_V1) -mdynamic-no-pic -nostdlib -keep_private_externs $^ -o $@ -DCRT -DOLD_LIBSYSTEM_SUPPORT 54 55$(SYMROOT)/crt1.v2.o: start.s crt.c dyld_glue.s 56 $(CC) -r $(ARCH_CFLAGS) -Os $(OS_MIN_V2) -nostdlib -keep_private_externs $^ -o $@ -DCRT 57 58$(SYMROOT)/crt1.v3.o: start.s crt.c 59 $(CC) -r $(ARCH_CFLAGS) -Os $(OS_MIN_V3) -nostdlib -keep_private_externs $^ -o $@ -DADD_PROGRAM_VARS 60 61 62$(SYMROOT)/gcrt1.o: start.s crt.c dyld_glue.s 63 $(CC) -r $(ARCH_CFLAGS) -Os $(OS_MIN_V1) -nostdlib -keep_private_externs $^ -o $@ -DGCRT -DOLD_LIBSYSTEM_SUPPORT 64 65 66$(SYMROOT)/crt0.o: start.s crt.c 67 $(CC) -r $(ARCH_CFLAGS) -Os -static -nostdlib -keep_private_externs $^ -o $@ 68 69 70$(SYMROOT)/dylib1.v1.o: dyld_glue.s icplusplus.c 71 $(CC) -r $(ARCH_CFLAGS) -Os $(OS_MIN_V1) -nostdlib -keep_private_externs $^ -o $@ -DCFM_GLUE 72 73$(SYMROOT)/dylib1.v2.o: dyld_glue.s 74 $(CC) -r $(ARCH_CFLAGS) -Os $(OS_MIN_V2) -nostdlib -keep_private_externs $^ -o $@ -DCFM_GLUE 75 76 77$(SYMROOT)/bundle1.v1.o: dyld_glue.s 78 $(CC) -r $(ARCH_CFLAGS) -Os $(OS_MIN_V1) -nostdlib -keep_private_externs $^ -o $@ 79 80 81 82$(SYMROOT)/lazydylib1.o: lazy_dylib_helper.s lazy_dylib_loader.c 83 $(CC) -r $(ARCH_CFLAGS) -Os -nostdlib -keep_private_externs $^ -o $@ 84 85clean: 86 rm -f $(OBJROOT)/*.o $(SYMROOT)/*.o 87 88 89install: all $(DSTDIRS) $(INSTALL_TARGET) 90 91 92install_iphone: 93 cp $(SYMROOT)/crt1.v2.o $(DSTROOT)$(USRLIBDIR)/crt1.o 94 cp $(SYMROOT)/dylib1.v2.o $(DSTROOT)$(USRLIBDIR)/dylib1.o 95 cp $(SYMROOT)/bundle1.v2o $(DSTROOT)$(USRLIBDIR)/bundle1.o 96 cp $(SYMROOT)/lazydylib1.o $(DSTROOT)$(USRLIBDIR)/lazydylib1.o 97 cp $(SYMROOT)/gcrt1.o $(DSTROOT)$(USRLIBDIR)/gcrt1.o 98 cp $(SYMROOT)/crt0.o $(DSTROOT)$(LOCLIBDIR)/crt0.o 99 100 101install_macosx: 102 cp $(SYMROOT)/crt1.v3.o $(DSTROOT)$(USRLIBDIR)/crt1.10.6.o 103 cp $(SYMROOT)/crt1.v2.o $(DSTROOT)$(USRLIBDIR)/crt1.10.5.o 104 cp $(SYMROOT)/crt1.v1.o $(DSTROOT)$(USRLIBDIR)/crt1.o 105 cp $(SYMROOT)/gcrt1.o $(DSTROOT)$(USRLIBDIR)/gcrt1.o 106 cp $(SYMROOT)/dylib1.v2.o $(DSTROOT)$(USRLIBDIR)/dylib1.10.5.o 107 cp $(SYMROOT)/dylib1.v1.o $(DSTROOT)$(USRLIBDIR)/dylib1.o 108 cp $(SYMROOT)/bundle1.v1.o $(DSTROOT)$(USRLIBDIR)/bundle1.o 109 cp $(SYMROOT)/lazydylib1.o $(DSTROOT)$(USRLIBDIR)/lazydylib1.o 110 cp $(SYMROOT)/crt0.o $(DSTROOT)$(LOCLIBDIR)/crt0.o 111 112installhdrs: 113 114installsrc: 115 $(MKDIR) $(SRCROOT) 116 $(CHMOD) 755 $(SRCROOT) 117 $(PAX) $(INSTALLSRC_FILES) $(SRCROOT) 118 $(CHMOD) 444 $(SRCROOT)/* 119 120$(OJBROOT) $(SYMROOT) $(DSTDIRS): 121 $(MKDIR) $@ 122 123