1
2#
3# Make rules to build compiler_rt in Apple B&I infrastructure
4#
5
6# set ProjSrcRoot appropriately
7ProjSrcRoot := $(SRCROOT)
8# set ProjObjRoot appropriately
9ifdef OBJROOT
10  ProjObjRoot := $(OBJROOT)
11else
12  ProjObjRoot := $(ProjSrcRoot)
13endif
14
15# Log full compile lines in B&I logs and omit summary lines.
16Verb :=
17Summary := @true
18
19# List of functions needed for each architecture.
20
21# Copies any public headers to DSTROOT.
22installhdrs:
23
24
25# Copies source code to SRCROOT.
26installsrc:
27	cp -r . $(SRCROOT)
28
29
30# Copy results to DSTROOT.
31install:  $(SYMROOT)/usr/local/lib/system/libcompiler_rt.a
32	mkdir -p $(DSTROOT)/usr/local/lib/system
33	cp $(SYMROOT)/usr/local/lib/system/libcompiler_rt.a \
34	   $(DSTROOT)/usr/local/lib/system/libcompiler_rt.a
35	cd $(DSTROOT)/usr/local/lib/system; \
36	ln -s libcompiler_rt.a libcompiler_rt_profile.a; \
37	ln -s libcompiler_rt.a libcompiler_rt_debug.a
38
39
40# Rule to make fat libcompiler_rt.a.
41$(SYMROOT)/usr/local/lib/system/libcompiler_rt.a : $(foreach arch,$(RC_ARCHS), \
42                                                    $(OBJROOT)/$(arch)-pruned.a)
43	mkdir -p $(SYMROOT)/usr/local/lib/system
44	lipo -create $^ -o  $@
45
46
47# Rule to add project info so that "what /usr/lib/libSystem.B.dylib" will work.
48$(OBJROOT)/%-pruned.a : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a
49	mkdir -p $(OBJROOT)/$*.tmp
50	cd $(OBJROOT)/$*.tmp; \
51	/Developer/Makefiles/bin/version.pl $(RC_ProjectName) > $(OBJROOT)/version.c; \
52	gcc -arch $* -c ${OBJROOT}/version.c -o version.o; \
53	ar -x $<; \
54	libtool -static *.o -o $@
55