forked from OSchip/llvm-project
108 lines
3.5 KiB
Makefile
108 lines
3.5 KiB
Makefile
|
|
#
|
|
# Make rules to build compiler_rt in Apple B&I infrastructure
|
|
#
|
|
|
|
# set ProjSrcRoot appropriately
|
|
ProjSrcRoot := $(SRCROOT)
|
|
# set ProjObjRoot appropriately
|
|
ifdef OBJROOT
|
|
ProjObjRoot := $(OBJROOT)
|
|
else
|
|
ProjObjRoot := $(ProjSrcRoot)
|
|
endif
|
|
|
|
ifeq (,$(SDKROOT))
|
|
INSTALL_TARGET = install-MacOSX
|
|
LD_OTHER_FLAGS =
|
|
else
|
|
INSTALL_TARGET = install-iOS
|
|
CFLAGS.Release.armv6 := $(CFLAGS) -Wall -Os -fomit-frame-pointer -g -isysroot $(SDKROOT)
|
|
CFLAGS.Release.armv7 := $(CFLAGS) -Wall -Os -fomit-frame-pointer -g -isysroot $(SDKROOT)
|
|
CFLAGS.Static.armv6 := $(CFLAGS) -Wall -Os -fomit-frame-pointer -g -isysroot $(SDKROOT) -static
|
|
CFLAGS.Static.armv7 := $(CFLAGS) -Wall -Os -fomit-frame-pointer -g -isysroot $(SDKROOT) -static
|
|
LD_OTHER_FLAGS = -Wl,-alias_list,$(SRCROOT)/lib/arm/softfloat-alias.list -isysroot $(SDKROOT)
|
|
endif
|
|
|
|
|
|
# Log full compile lines in B&I logs and omit summary lines.
|
|
Verb :=
|
|
Summary := @true
|
|
|
|
# List of functions needed for each architecture.
|
|
|
|
# Copies any public headers to DSTROOT.
|
|
installhdrs:
|
|
|
|
|
|
# Copies source code to SRCROOT.
|
|
installsrc:
|
|
cp -r . $(SRCROOT)
|
|
|
|
|
|
install: $(INSTALL_TARGET)
|
|
|
|
# Copy results to DSTROOT.
|
|
install-MacOSX : $(SYMROOT)/libcompiler_rt.dylib \
|
|
$(SYMROOT)/libcompiler_rt-dyld.a
|
|
mkdir -p $(DSTROOT)/usr/local/lib/dyld
|
|
cp $(SYMROOT)/libcompiler_rt-dyld.a \
|
|
$(DSTROOT)/usr/local/lib/dyld/libcompiler_rt.a
|
|
mkdir -p $(DSTROOT)/usr/lib/system
|
|
strip -S $(SYMROOT)/libcompiler_rt.dylib \
|
|
-o $(DSTROOT)/usr/lib/system/libcompiler_rt.dylib
|
|
cd $(DSTROOT)/usr/lib/system; \
|
|
ln -s libcompiler_rt.dylib libcompiler_rt_profile.dylib; \
|
|
ln -s libcompiler_rt.dylib libcompiler_rt_debug.dylib
|
|
|
|
# Rule to make each dylib slice
|
|
$(OBJROOT)/libcompiler_rt-%.dylib : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a
|
|
echo "const char vers[] = \"@(#) $(RC_ProjectName)-$(RC_ProjectSourceVersion)\"; " > $(OBJROOT)/version.c
|
|
$(CC.Release) $(OBJROOT)/version.c -arch $* -dynamiclib \
|
|
-install_name /usr/lib/system/libcompiler_rt.dylib \
|
|
-compatibility_version 1 -current_version $(RC_ProjectSourceVersion) \
|
|
-nodefaultlibs -lSystem -umbrella System -dead_strip \
|
|
$(LD_OTHER_FLAGS) -Wl,-force_load,$^ -o $@
|
|
|
|
# Rule to make fat dylib
|
|
$(SYMROOT)/libcompiler_rt.dylib: $(foreach arch,$(RC_ARCHS), \
|
|
$(OBJROOT)/libcompiler_rt-$(arch).dylib)
|
|
lipo -create $^ -o $@
|
|
|
|
|
|
|
|
|
|
# Copy results to DSTROOT.
|
|
install-iOS: $(SYMROOT)/libcompiler_rt-static.a \
|
|
$(SYMROOT)/libcompiler_rt-dyld.a \
|
|
$(SYMROOT)/libcompiler_rt.dylib
|
|
mkdir -p $(DSTROOT)/usr/local/lib
|
|
cp $(SYMROOT)/libcompiler_rt-static.a \
|
|
$(DSTROOT)/usr/local/lib/libcompiler_rt-static.a
|
|
mkdir -p $(DSTROOT)/usr/local/lib/dyld
|
|
cp $(SYMROOT)/libcompiler_rt-dyld.a \
|
|
$(DSTROOT)/usr/local/lib/dyld/libcompiler_rt.a
|
|
mkdir -p $(DSTROOT)/usr/lib/system
|
|
strip -S $(SYMROOT)/libcompiler_rt.dylib \
|
|
-o $(DSTROOT)/usr/lib/system/libcompiler_rt.dylib
|
|
|
|
|
|
# Rule to make fat archive
|
|
$(SYMROOT)/libcompiler_rt-static.a : $(foreach arch,$(RC_ARCHS), \
|
|
$(OBJROOT)/darwin_bni/Static/$(arch)/libcompiler_rt.a)
|
|
lipo -create $^ -o $@
|
|
|
|
# rule to make each archive slice for dyld
|
|
$(OBJROOT)/libcompiler_rt-dyld-%.a : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a
|
|
cp $^ $@
|
|
ar -d $@ apple_versioning.o
|
|
ar -d $@ gcc_personality_v0.o
|
|
ar -d $@ eprintf.o
|
|
ranlib $@
|
|
|
|
# rule to make make archive for dyld
|
|
$(SYMROOT)/libcompiler_rt-dyld.a : $(foreach arch,$(RC_ARCHS), \
|
|
$(OBJROOT)/libcompiler_rt-dyld-$(arch).a)
|
|
lipo -create $^ -o $@
|
|
|