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