blob: 0817fd945efab1c6565f529bf5e3d0d2dce02b5e [file] [log] [blame]
Daniel Dunbarb3a69012009-06-26 16:47:03 +00001
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
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000015# Log full compile lines in B&I logs and omit summary lines.
16Verb :=
Daniel Dunbarb3a69012009-06-26 16:47:03 +000017Summary := @true
18
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000019# List of functions needed for each architecture.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000020
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000021# Copies any public headers to DSTROOT.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000022installhdrs:
23
24
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000025# Copies source code to SRCROOT.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000026installsrc:
Daniel Dunbar3c2a7762010-01-18 06:49:42 +000027 cp -r . $(SRCROOT)
Daniel Dunbarb3a69012009-06-26 16:47:03 +000028
29
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000030# Copy results to DSTROOT.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000031install: $(SYMROOT)/usr/local/lib/system/libcompiler_rt.a
Daniel Dunbar3c2a7762010-01-18 06:49:42 +000032 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
Daniel Dunbarb3a69012009-06-26 16:47:03 +000038
39
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000040# Rule to make fat libcompiler_rt.a.
Daniel Dunbar3c2a7762010-01-18 06:49:42 +000041$(SYMROOT)/usr/local/lib/system/libcompiler_rt.a : $(foreach arch,$(RC_ARCHS), \
Daniel Dunbarb3a69012009-06-26 16:47:03 +000042 $(OBJROOT)/$(arch)-pruned.a)
Daniel Dunbar3c2a7762010-01-18 06:49:42 +000043 mkdir -p $(SYMROOT)/usr/local/lib/system
44 lipo -create $^ -o $@
Daniel Dunbarb3a69012009-06-26 16:47:03 +000045
46
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000047# Rule to add project info so that "what /usr/lib/libSystem.B.dylib" will work.
Daniel Dunbar3c2a7762010-01-18 06:49:42 +000048$(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 $@