Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame^] | 1 | |
| 2 | # |
| 3 | # Make rules to build compiler_rt in Apple B&I infrastructure |
| 4 | # |
| 5 | |
| 6 | # set ProjSrcRoot appropriately |
| 7 | ProjSrcRoot := $(SRCROOT) |
| 8 | # set ProjObjRoot appropriately |
| 9 | ifdef OBJROOT |
| 10 | ProjObjRoot := $(OBJROOT) |
| 11 | else |
| 12 | ProjObjRoot := $(ProjSrcRoot) |
| 13 | endif |
| 14 | |
| 15 | # We override this with RC_ARCHS because B&I may want to build on an |
| 16 | # ARCH we haven't explicitly defined support for. If all goes well, |
| 17 | # this will just work and the resulting lib will just have generic |
| 18 | # versions for anything unknown. |
| 19 | Archs := $(RC_ARCHS) |
| 20 | |
| 21 | # log full compile lines in B&I logs and omit summary lines |
| 22 | Verb := |
| 23 | Summary := @true |
| 24 | |
| 25 | # list of functions needed for each architecture |
| 26 | Funcs_all = absvdi2.o absvsi2.o addvdi3.o addvsi3.o ashldi3.o ashrdi3.o \ |
| 27 | clear_cache.o clzdi2.o clzsi2.o cmpdi2.o ctzdi2.o ctzsi2.o \ |
| 28 | divdc3.o divdi3.o divsc3.o enable_execute_stack.o ffsdi2.o \ |
| 29 | fixdfdi.o fixsfdi.o fixunsdfdi.o fixunsdfsi.o fixunssfdi.o \ |
| 30 | fixunssfsi.o floatdidf.o floatdisf.o floatundidf.o floatundisf.o \ |
| 31 | gcc_personality_v0.o lshrdi3.o moddi3.o muldc3.o muldi3.o \ |
| 32 | mulsc3.o mulvdi3.o mulvsi3.o negdi2.o negvdi2.o negvsi2.o \ |
| 33 | paritydi2.o paritysi2.o popcountdi2.o popcountsi2.o powidf2.o \ |
| 34 | powisf2.o subvdi3.o subvsi3.o ucmpdi2.o udivdi3.o \ |
| 35 | udivmoddi4.o umoddi3.o apple_versioning.o eprintf.o |
| 36 | Funcs_i386 = divxc3.o fixunsxfdi.o fixunsxfsi.o fixxfdi.o floatdixf.o \ |
| 37 | floatundixf.o mulxc3.o powixf2.o |
| 38 | Funcs_ppc = divtc3.o fixtfdi.o fixunstfdi.o floatditf.o floatunditf.o \ |
| 39 | gcc_qadd.o gcc_qdiv.o gcc_qmul.o gcc_qsub.o multc3.o \ |
| 40 | powitf2.o restFP.o saveFP.o trampoline_setup.o |
| 41 | Funcs_x86_64 = absvti2.o addvti3.o ashlti3.o ashrti3.o clzti2.o cmpti2.o \ |
| 42 | ctzti2.o divti3.o divxc3.o ffsti2.o fixdfti.o fixsfti.o \ |
| 43 | fixunsdfti.o fixunssfti.o fixunsxfdi.o fixunsxfsi.o \ |
| 44 | fixunsxfti.o fixxfdi.o fixxfti.o floatdixf.o floattidf.o \ |
| 45 | floattisf.o floattixf.o floatundixf.o floatuntidf.o \ |
| 46 | floatuntisf.o floatuntixf.o lshrti3.o modti3.o multi3.o \ |
| 47 | mulvti3.o mulxc3.o negti2.o negvti2.o parityti2.o \ |
| 48 | popcountti2.o powixf2.o subvti3.o ucmpti2.o udivmodti4.o \ |
| 49 | udivti3.o umodti3.o |
| 50 | |
| 51 | # copies any public headers to DSTROOT |
| 52 | installhdrs: |
| 53 | |
| 54 | |
| 55 | # copies source code to SRCROOT |
| 56 | installsrc: |
| 57 | cp -r . $(SRCROOT) |
| 58 | |
| 59 | |
| 60 | # copy results to DSTROOT |
| 61 | install: $(SYMROOT)/usr/local/lib/system/libcompiler_rt.a |
| 62 | mkdir -p $(DSTROOT)/usr/local/lib/system |
| 63 | cp $(SYMROOT)/usr/local/lib/system/libcompiler_rt.a \ |
| 64 | $(DSTROOT)/usr/local/lib/system/libcompiler_rt.a |
| 65 | cd $(DSTROOT)/usr/local/lib/system; \ |
| 66 | ln -s libcompiler_rt.a libcompiler_rt_profile.a; \ |
| 67 | ln -s libcompiler_rt.a libcompiler_rt_debug.a |
| 68 | |
| 69 | |
| 70 | # rule to make fat libcompiler_rt.a |
| 71 | $(SYMROOT)/usr/local/lib/system/libcompiler_rt.a : $(foreach arch,$(Archs), \ |
| 72 | $(OBJROOT)/$(arch)-pruned.a) |
| 73 | mkdir -p $(SYMROOT)/usr/local/lib/system |
| 74 | lipo -create $^ -o $@ |
| 75 | |
| 76 | |
| 77 | # rule to make filter each architecture of libcompiler_rt.a |
| 78 | # adds project info so that "what /usr/lib/libSystem.B.dylib" will work |
| 79 | $(OBJROOT)/%-pruned.a : $(OBJROOT)/Release/%/libcompiler_rt.Optimized.a |
| 80 | mkdir -p $(OBJROOT)/$*.tmp |
| 81 | cd $(OBJROOT)/$*.tmp; \ |
| 82 | /Developer/Makefiles/bin/version.pl $(RC_ProjectName) > $(OBJROOT)/version.c; \ |
| 83 | gcc -arch $* -c ${OBJROOT}/version.c -o version.o; \ |
| 84 | ar -x $< $(Funcs_all) $(Funcs_$*); \ |
| 85 | libtool -static *.o -o $@ |