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 | |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 15 | # We override this with RC_ARCHS because B&I may want to build on an ARCH we |
| 16 | # haven't explicitly defined support for. If all goes well, this will just work |
| 17 | # and the resulting lib will just have generic versions for anything unknown. |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 18 | Archs := $(RC_ARCHS) |
| 19 | |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 20 | # Log full compile lines in B&I logs and omit summary lines. |
| 21 | Verb := |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 22 | Summary := @true |
| 23 | |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 24 | # List of functions needed for each architecture. |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 25 | Funcs_all = absvdi2.o absvsi2.o addvdi3.o addvsi3.o ashldi3.o ashrdi3.o \ |
Nick Kledzik | 92a6cf5 | 2009-09-18 00:09:05 +0000 | [diff] [blame] | 26 | clzdi2.o clzsi2.o cmpdi2.o ctzdi2.o ctzsi2.o \ |
| 27 | divdc3.o divdi3.o divsc3.o ffsdi2.o \ |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 28 | fixdfdi.o fixsfdi.o fixunsdfdi.o fixunsdfsi.o fixunssfdi.o \ |
| 29 | fixunssfsi.o floatdidf.o floatdisf.o floatundidf.o floatundisf.o \ |
| 30 | gcc_personality_v0.o lshrdi3.o moddi3.o muldc3.o muldi3.o \ |
| 31 | mulsc3.o mulvdi3.o mulvsi3.o negdi2.o negvdi2.o negvsi2.o \ |
| 32 | paritydi2.o paritysi2.o popcountdi2.o popcountsi2.o powidf2.o \ |
| 33 | powisf2.o subvdi3.o subvsi3.o ucmpdi2.o udivdi3.o \ |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 34 | udivmoddi4.o umoddi3.o apple_versioning.o eprintf.o |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 35 | Funcs_i386 = divxc3.o fixunsxfdi.o fixunsxfsi.o fixxfdi.o floatdixf.o \ |
Nick Kledzik | 92a6cf5 | 2009-09-18 00:09:05 +0000 | [diff] [blame] | 36 | floatundixf.o mulxc3.o powixf2.o clear_cache.o \ |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 37 | enable_execute_stack.o |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 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 \ |
Nick Kledzik | 92a6cf5 | 2009-09-18 00:09:05 +0000 | [diff] [blame] | 40 | powitf2.o restFP.o saveFP.o trampoline_setup.o \ |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 41 | clear_cache.o enable_execute_stack.o |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 42 | Funcs_x86_64 = absvti2.o addvti3.o ashlti3.o ashrti3.o clzti2.o cmpti2.o \ |
| 43 | ctzti2.o divti3.o divxc3.o ffsti2.o fixdfti.o fixsfti.o \ |
| 44 | fixunsdfti.o fixunssfti.o fixunsxfdi.o fixunsxfsi.o \ |
| 45 | fixunsxfti.o fixxfdi.o fixxfti.o floatdixf.o floattidf.o \ |
| 46 | floattisf.o floattixf.o floatundixf.o floatuntidf.o \ |
| 47 | floatuntisf.o floatuntixf.o lshrti3.o modti3.o multi3.o \ |
| 48 | mulvti3.o mulxc3.o negti2.o negvti2.o parityti2.o \ |
| 49 | popcountti2.o powixf2.o subvti3.o ucmpti2.o udivmodti4.o \ |
Nick Kledzik | 92a6cf5 | 2009-09-18 00:09:05 +0000 | [diff] [blame] | 50 | udivti3.o umodti3.o clear_cache.o enable_execute_stack.o |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 51 | Funcs_armv6 = adddf3vfp.o addsf3vfp.o bswapdi2.o bswapsi2.o divdf3vfp.o \ |
| 52 | divsf3vfp.o eqdf2vfp.o eqsf2vfp.o extendsfdf2vfp.o \ |
| 53 | fixdfsivfp.o fixsfsivfp.o fixunsdfsivfp.o fixunssfsivfp.o \ |
| 54 | floatsidfvfp.o floatsisfvfp.o floatunssidfvfp.o floatunssisfvfp.o \ |
| 55 | gedf2vfp.o gesf2vfp.o gtdf2vfp.o gtsf2vfp.o \ |
| 56 | ledf2vfp.o lesf2vfp.o ltdf2vfp.o ltsf2vfp.o \ |
| 57 | muldf3vfp.o mulsf3vfp.o \ |
| 58 | nedf2vfp.o negdf2vfp.o negsf2vfp.o nesf2vfp.o \ |
| 59 | subdf3vfp.o subsf3vfp.o truncdfsf2vfp.o unorddf2vfp.o unordsf2vfp.o \ |
| 60 | modsi3.o umodsi3.o udivsi3.o divsi3.o switch.o save_restore_d8_d15.o |
Nick Kledzik | 92a6cf5 | 2009-09-18 00:09:05 +0000 | [diff] [blame] | 61 | |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 62 | |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 63 | # Copies any public headers to DSTROOT. |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 64 | installhdrs: |
| 65 | |
| 66 | |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 67 | # Copies source code to SRCROOT. |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 68 | installsrc: |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 69 | cp -r . $(SRCROOT) |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 70 | |
| 71 | |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 72 | # Copy results to DSTROOT. |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 73 | install: $(SYMROOT)/usr/local/lib/system/libcompiler_rt.a |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 74 | mkdir -p $(DSTROOT)/usr/local/lib/system |
| 75 | cp $(SYMROOT)/usr/local/lib/system/libcompiler_rt.a \ |
| 76 | $(DSTROOT)/usr/local/lib/system/libcompiler_rt.a |
| 77 | cd $(DSTROOT)/usr/local/lib/system; \ |
| 78 | ln -s libcompiler_rt.a libcompiler_rt_profile.a; \ |
| 79 | ln -s libcompiler_rt.a libcompiler_rt_debug.a |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 80 | |
| 81 | |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 82 | # Rule to make fat libcompiler_rt.a. |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 83 | $(SYMROOT)/usr/local/lib/system/libcompiler_rt.a : $(foreach arch,$(Archs), \ |
| 84 | $(OBJROOT)/$(arch)-pruned.a) |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 85 | mkdir -p $(SYMROOT)/usr/local/lib/system |
| 86 | lipo -create $^ -o $@ |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 87 | |
| 88 | |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 89 | # Rule to add project info so that "what /usr/lib/libSystem.B.dylib" will work. |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 90 | $(OBJROOT)/%-pruned.a : $(OBJROOT)/Release/%/libcompiler_rt.Optimized.a |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame^] | 91 | mkdir -p $(OBJROOT)/$*.tmp |
| 92 | cd $(OBJROOT)/$*.tmp; \ |
| 93 | /Developer/Makefiles/bin/version.pl $(RC_ProjectName) > $(OBJROOT)/version.c; \ |
| 94 | gcc -arch $* -c ${OBJROOT}/version.c -o version.o; \ |
| 95 | ar -x $< $(Funcs_all) $(Funcs_$*); \ |
| 96 | libtool -static *.o -o $@ |