blob: 7d2ad9e5e195991d47f092143650e6c135bdf3d6 [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
Nick Kledzikafb7b6e2010-04-21 22:46:53 +000015ifeq (,$(SDKROOT))
16 INSTALL_TARGET = install-MacOSX
17else
18 INSTALL_TARGET = install-iPhoneOS
19endif
20
21
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000022# Log full compile lines in B&I logs and omit summary lines.
23Verb :=
Daniel Dunbarb3a69012009-06-26 16:47:03 +000024Summary := @true
25
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000026# List of functions needed for each architecture.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000027
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000028# Copies any public headers to DSTROOT.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000029installhdrs:
30
31
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000032# Copies source code to SRCROOT.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000033installsrc:
Daniel Dunbar3c2a7762010-01-18 06:49:42 +000034 cp -r . $(SRCROOT)
Daniel Dunbarb3a69012009-06-26 16:47:03 +000035
36
Nick Kledzikafb7b6e2010-04-21 22:46:53 +000037install: $(INSTALL_TARGET)
38
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000039# Copy results to DSTROOT.
Nick Kledzikafb7b6e2010-04-21 22:46:53 +000040install-MacOSX : $(SYMROOT)/libcompiler_rt.dylib
Nick Kledzik1f7ee1d2010-03-31 20:38:57 +000041 mkdir -p $(DSTROOT)/usr/lib/system
42 strip -S $(SYMROOT)/libcompiler_rt.dylib \
43 -o $(DSTROOT)/usr/lib/system/libcompiler_rt.dylib
44 cd $(DSTROOT)/usr/lib/system; \
45 ln -s libcompiler_rt.dylib libcompiler_rt_profile.dylib; \
46 ln -s libcompiler_rt.dylib libcompiler_rt_debug.dylib
Daniel Dunbarb3a69012009-06-26 16:47:03 +000047
Nick Kledzik1f7ee1d2010-03-31 20:38:57 +000048# Rule to make each dylib slice
49$(OBJROOT)/libcompiler_rt-%.dylib : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a
50 echo "const char vers[] = \"@(#) $(RC_ProjectName)-$(RC_ProjectSourceVersion)\"; " > $(OBJROOT)/version.c
51 cc $(OBJROOT)/version.c -arch $* -dynamiclib \
52 -install_name /usr/lib/system/libcompiler_rt.dylib \
53 -compatibility_version 1 -current_version $(RC_ProjectSourceVersion) \
54 -nodefaultlibs -lSystem -umbrella System -dead_strip \
55 -Wl,-force_load,$^ -o $@
Daniel Dunbarb3a69012009-06-26 16:47:03 +000056
Nick Kledzik1f7ee1d2010-03-31 20:38:57 +000057# Rule to make fat dylib
58$(SYMROOT)/libcompiler_rt.dylib: $(foreach arch,$(RC_ARCHS), \
Nick Kledzikafb7b6e2010-04-21 22:46:53 +000059 $(OBJROOT)/libcompiler_rt-$(arch).dylib)
60 lipo -create $^ -o $@
61
62
63
64
65# Copy results to DSTROOT.
66install-iPhoneOS: $(SYMROOT)/libcompiler_rt.a $(SYMROOT)/libcompiler_rt-static.a
67 mkdir -p $(DSTROOT)/$(SDKROOT)/usr/local/lib/libgcc
68 cp $(SYMROOT)/libcompiler_rt.a \
69 $(DSTROOT)/$(SDKROOT)/usr/local/lib/libgcc/libcompiler_rt.a
70 mkdir -p $(DSTROOT)/$(SDKROOT)/usr/local/
71 cp $(SYMROOT)/libcompiler_rt-static.a \
72 $(DSTROOT)/$(SDKROOT)/usr/local/lib/libcompiler_rt-static.a
73
74
75# Rule to make fat archive
76$(SYMROOT)/libcompiler_rt.a : $(foreach arch,$(RC_ARCHS), \
77 $(OBJROOT)/darwin_bni/Release/$(arch)/libcompiler_rt.a)
78 lipo -create $^ -o $@
79
80# Rule to make fat archive
81$(SYMROOT)/libcompiler_rt-static.a : $(foreach arch,$(RC_ARCHS), \
82 $(OBJROOT)/darwin_bni/Static/$(arch)/libcompiler_rt.a)
Daniel Dunbar3c2a7762010-01-18 06:49:42 +000083 lipo -create $^ -o $@
Daniel Dunbarb3a69012009-06-26 16:47:03 +000084