blob: 8b4bddd5565218697ace1cca2e8d2b463b3b3883 [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# 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 Dunbarb3a69012009-06-26 16:47:03 +000018Archs := $(RC_ARCHS)
19
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000020# Log full compile lines in B&I logs and omit summary lines.
21Verb :=
Daniel Dunbarb3a69012009-06-26 16:47:03 +000022Summary := @true
23
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000024# List of functions needed for each architecture.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000025Funcs_all = absvdi2.o absvsi2.o addvdi3.o addvsi3.o ashldi3.o ashrdi3.o \
Nick Kledzik92a6cf52009-09-18 00:09:05 +000026 clzdi2.o clzsi2.o cmpdi2.o ctzdi2.o ctzsi2.o \
27 divdc3.o divdi3.o divsc3.o ffsdi2.o \
Daniel Dunbarb3a69012009-06-26 16:47:03 +000028 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 Dunbar557a6ea2010-01-13 16:13:01 +000034 udivmoddi4.o umoddi3.o apple_versioning.o eprintf.o
Daniel Dunbarb3a69012009-06-26 16:47:03 +000035Funcs_i386 = divxc3.o fixunsxfdi.o fixunsxfsi.o fixxfdi.o floatdixf.o \
Nick Kledzik92a6cf52009-09-18 00:09:05 +000036 floatundixf.o mulxc3.o powixf2.o clear_cache.o \
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000037 enable_execute_stack.o
Daniel Dunbarb3a69012009-06-26 16:47:03 +000038Funcs_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 Kledzik92a6cf52009-09-18 00:09:05 +000040 powitf2.o restFP.o saveFP.o trampoline_setup.o \
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000041 clear_cache.o enable_execute_stack.o
Daniel Dunbarb3a69012009-06-26 16:47:03 +000042Funcs_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 Kledzik92a6cf52009-09-18 00:09:05 +000050 udivti3.o umodti3.o clear_cache.o enable_execute_stack.o
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000051Funcs_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 Kledzik92a6cf52009-09-18 00:09:05 +000061
Daniel Dunbarb3a69012009-06-26 16:47:03 +000062
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000063# Copies any public headers to DSTROOT.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000064installhdrs:
65
66
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000067# Copies source code to SRCROOT.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000068installsrc:
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000069 cp -r . $(SRCROOT)
Daniel Dunbarb3a69012009-06-26 16:47:03 +000070
71
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000072# Copy results to DSTROOT.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000073install: $(SYMROOT)/usr/local/lib/system/libcompiler_rt.a
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000074 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 Dunbarb3a69012009-06-26 16:47:03 +000080
81
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000082# Rule to make fat libcompiler_rt.a.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000083$(SYMROOT)/usr/local/lib/system/libcompiler_rt.a : $(foreach arch,$(Archs), \
84 $(OBJROOT)/$(arch)-pruned.a)
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000085 mkdir -p $(SYMROOT)/usr/local/lib/system
86 lipo -create $^ -o $@
Daniel Dunbarb3a69012009-06-26 16:47:03 +000087
88
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000089# Rule to add project info so that "what /usr/lib/libSystem.B.dylib" will work.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000090$(OBJROOT)/%-pruned.a : $(OBJROOT)/Release/%/libcompiler_rt.Optimized.a
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000091 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 $@