12d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# These are the functions which clang needs when it is targeting a previous
28b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar# version of the OS. The issue is that the backend may use functions which were
38b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar# not present in the libgcc that shipped on the platform. In such cases, we link
48b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar# with a version of the library which contains private_extern definitions of all
58b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar# the extra functions which might be referenced.
68b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
78b790353436e0815e6b94a018c6e6b314cba9042Daniel DunbarDescription := Static runtime libraries for clang/Darwin.
88b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
92f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher# A function that ensures we don't try to build for architectures that we
102f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher# don't have working toolchains for.
112f5efb0238df99509fb8dd53d218065abd8dff8bEric ChristopherCheckArches = \
122f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher  $(shell \
132f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher    result=""; \
142f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher    for arch in $(1); do \
15279a22ab3a2a5c838b7e80d67cbc970b7c12bbd8Daniel Dunbar      if $(CC) -arch $$arch -c \
162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines          -integrated-as \
172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines          $(ProjSrcRoot)/make/platform/clang_darwin_test_input.c \
182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines          -isysroot $(ProjSrcRoot)/SDKs/darwin \
192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines          -o /dev/null > /dev/null 2> /dev/null; then \
202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines        if $(LD) -v 2>&1 | grep "configured to support" \
212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines           | tr ' ' '\n' | grep "^$$arch$$" >/dev/null 2>/dev/null; then \
222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines          result="$$result$$arch "; \
232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines        else \
242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines          printf 1>&2 \
252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines            "warning: clang_darwin.mk: dropping arch '$$arch' from lib '$(2)'"; \
262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines          printf 1>&2 " (ld does not support it)\n"; \
272d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines        fi; \
280e1d0f2dd3349fda967bd5ae098332301d8b70c5Daniel Dunbar      else \
292d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines        printf 1>&2 \
302d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines          "warning: clang_darwin.mk: dropping arch '$$arch' from lib '$(2)'"; \
312d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines        printf 1>&2 " (clang does not support it)\n"; \
3296051e1bd0e4c60a65e8c059a719a4a72b229247Daniel Dunbar      fi; \
332f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher    done; \
342f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher    echo $$result)
352f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher
3621afede01089ae194f0f9658f444aff0496220ddBob WilsonXCRun = \
3721afede01089ae194f0f9658f444aff0496220ddBob Wilson  $(shell \
3821afede01089ae194f0f9658f444aff0496220ddBob Wilson    result=`xcrun -find $(1) 2> /dev/null`; \
390d77f8cb7b8feeb10ea00f2ec64ed300fde260feBill Wendling    if [ "$$?" != "0" ]; then result=$(1); fi; \
4021afede01089ae194f0f9658f444aff0496220ddBob Wilson    echo $$result)
418975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander PotapenkoXCRunSdkPath = \
428975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko  $(shell \
438975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko    result=`xcrun --sdk $(1) --show-sdk-path 2> /dev/null`; \
448975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko    if [ "$$?" != "0" ]; then result=""; fi; \
458975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko    echo $$result)
462f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher###
472f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher
4821afede01089ae194f0f9658f444aff0496220ddBob WilsonCC       := $(call XCRun,clang)
492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesLD       := $(shell $(CC) -print-prog-name=ld)
5021afede01089ae194f0f9658f444aff0496220ddBob WilsonAR       := $(call XCRun,ar)
5121afede01089ae194f0f9658f444aff0496220ddBob WilsonRANLIB   := $(call XCRun,ranlib)
5221afede01089ae194f0f9658f444aff0496220ddBob WilsonSTRIP    := $(call XCRun,strip)
5321afede01089ae194f0f9658f444aff0496220ddBob WilsonLIPO     := $(call XCRun,lipo)
5421afede01089ae194f0f9658f444aff0496220ddBob WilsonDSYMUTIL := $(call XCRun,dsymutil)
55d69211491f42082d7cb2c294007c05704a98a163Daniel Dunbar
564a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel DunbarConfigs :=
578b790353436e0815e6b94a018c6e6b314cba9042Daniel DunbarUniversalArchs :=
588b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
59ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel Dunbar# Configuration solely for providing access to an eprintf symbol, which may
60ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel Dunbar# still be referenced from Darwin system headers. This symbol is only ever
61ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel Dunbar# needed on i386.
62ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel DunbarConfigs += eprintf
630e1d0f2dd3349fda967bd5ae098332301d8b70c5Daniel DunbarUniversalArchs.eprintf := $(call CheckArches,i386,eprintf)
64ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel Dunbar
652d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# Configuration for targeting 10.4. We need a few functions missing from
664a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel Dunbar# libgcc_s.10.4.dylib. We only build x86 slices since clang doesn't really
672d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# support targeting PowerPC.
684a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel DunbarConfigs += 10.4
690e1d0f2dd3349fda967bd5ae098332301d8b70c5Daniel DunbarUniversalArchs.10.4 := $(call CheckArches,i386 x86_64,10.4)
708b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
712d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# Configuration for targeting iOS for a couple of functions that didn't
727bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar# make it into libSystem.
737bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarConfigs += ios
742d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesUniversalArchs.ios := $(call CheckArches,i386 x86_64 x86_64h armv7,ios)
757bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar
762d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# Configuration for targeting OSX. These functions may not be in libSystem
771ace4055f79f304750839d73c46bbcaeb994f1b5Eric Christopher# so we should provide our own.
781ace4055f79f304750839d73c46bbcaeb994f1b5Eric ChristopherConfigs += osx
792d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesUniversalArchs.osx := $(call CheckArches,i386 x86_64 x86_64h,osx)
801ace4055f79f304750839d73c46bbcaeb994f1b5Eric Christopher
81b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar# Configuration for use with kernel/kexts.
82b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarConfigs += cc_kext
832d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesUniversalArchs.cc_kext := $(call CheckArches,armv7 i386 x86_64 x86_64h,cc_kext)
847bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar
857bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar# Configuration for use with kernel/kexts for iOS 5.0 and earlier (which used 
867bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar# a different code generation strategy).
877bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarConfigs += cc_kext_ios5
882d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesUniversalArchs.cc_kext_ios5 := $(call CheckArches,x86_64 x86_64h armv7,cc_kext_ios5)
89b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
9091d9c15ef503507fc5badd4900a5049936be65c1Daniel Dunbar# Configurations which define the profiling support functions.
9191d9c15ef503507fc5badd4900a5049936be65c1Daniel DunbarConfigs += profile_osx
922d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesUniversalArchs.profile_osx := $(call CheckArches,i386 x86_64 x86_64h,profile_osx)
937bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarConfigs += profile_ios
942d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesUniversalArchs.profile_ios := $(call CheckArches,i386 x86_64 x86_64h armv7,profile_ios)
9591d9c15ef503507fc5badd4900a5049936be65c1Daniel Dunbar
96f8328c56b93ccbb11ce2e77e066c25536204d31bDaniel Dunbar# Configurations which define the ASAN support functions.
9778aedd464282595ba2c7bf83ddc4978117925217Daniel DunbarConfigs += asan_osx_dynamic
982d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesUniversalArchs.asan_osx_dynamic := $(call CheckArches,i386 x86_64 x86_64h,asan_osx_dynamic)
9978aedd464282595ba2c7bf83ddc4978117925217Daniel Dunbar
100d5c29a8584d5284ae4cf7e7176efe0692ccde5c0Alexander PotapenkoIOSSIM_SDK_PATH := $(call XCRunSdkPath,iphonesimulator)
101d5c29a8584d5284ae4cf7e7176efe0692ccde5c0Alexander Potapenkoifneq ($(IOSSIM_SDK_PATH),)
1028975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander PotapenkoConfigs += asan_iossim_dynamic
1032d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesUniversalArchs.asan_iossim_dynamic := $(call CheckArches,i386 x86_64 x86_64h,asan_iossim_dynamic)
104d5c29a8584d5284ae4cf7e7176efe0692ccde5c0Alexander Potapenkoendif
1058975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko
1064a4ef702597471bff5e249b8ec9d94d265007895Richard SmithConfigs += ubsan_osx
1072d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesUniversalArchs.ubsan_osx := $(call CheckArches,i386 x86_64 x86_64h,ubsan_osx)
1084a4ef702597471bff5e249b8ec9d94d265007895Richard Smith
109079ed92654d44e30c620788a6acf70188f2272afDaniel Dunbar# Darwin 10.6 has a bug in cctools that makes it unable to use ranlib on our ARM
110087a68b7719e102c2e6c426120b5cb55d0313460Bob Wilson# object files. If we are on that platform, strip out all ARM archs. We still
111079ed92654d44e30c620788a6acf70188f2272afDaniel Dunbar# build the libraries themselves so that Clang can find them where it expects
112079ed92654d44e30c620788a6acf70188f2272afDaniel Dunbar# them, even though they might not have an expected slice.
1132b26c909424953af8fa443d075e27e68c1571be4Bob Wilsonifneq ($(shell test -x /usr/bin/sw_vers && sw_vers -productVersion | grep 10.6),)
114079ed92654d44e30c620788a6acf70188f2272afDaniel DunbarUniversalArchs.ios := $(filter-out armv7, $(UniversalArchs.ios))
115079ed92654d44e30c620788a6acf70188f2272afDaniel DunbarUniversalArchs.cc_kext := $(filter-out armv7, $(UniversalArchs.cc_kext))
116079ed92654d44e30c620788a6acf70188f2272afDaniel DunbarUniversalArchs.cc_kext_ios5 := $(filter-out armv7, $(UniversalArchs.cc_kext_ios5))
117079ed92654d44e30c620788a6acf70188f2272afDaniel DunbarUniversalArchs.profile_ios := $(filter-out armv7, $(UniversalArchs.profile_ios))
118079ed92654d44e30c620788a6acf70188f2272afDaniel Dunbarendif
119004c4340248841aefe5a23d1d20556ac801c871dBob Wilson
1208ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar# If RC_SUPPORTED_ARCHS is defined, treat it as a list of the architectures we
1218ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar# are intended to support and limit what we try to build to that.
1228ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar#
1238ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar# We make sure to remove empty configs if we end up dropping all the requested
1248ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar# archs for a particular config.
1258ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbarifneq ($(RC_SUPPORTED_ARCHS),)
1268ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar$(foreach config,$(Configs),\
1278ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar  $(call Set,UniversalArchs.$(config),\
1288ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar	$(filter $(RC_SUPPORTED_ARCHS),$(UniversalArchs.$(config))))\
1298ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar  $(if $(UniversalArchs.$(config)),,\
1308ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar	$(call Set,Configs,$(filter-out $(config),$(Configs)))))
1318ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbarendif
1328ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar
133b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar###
134b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
135d5feee3db8cf84a5789b728e223988f207b5ecbbDaniel Dunbar# Forcibly strip off any -arch, as that totally breaks our universal support.
136d5feee3db8cf84a5789b728e223988f207b5ecbbDaniel Dunbaroverride CC := $(subst -arch ,-arch_,$(CC))
137d5feee3db8cf84a5789b728e223988f207b5ecbbDaniel Dunbaroverride CC := $(patsubst -arch_%,,$(CC))
138d5feee3db8cf84a5789b728e223988f207b5ecbbDaniel Dunbar
139e512f7ffd8b7e6636b4a5cb66b2968b2c3608ff5Daniel DunbarCFLAGS := -Wall -Werror -O3 -fomit-frame-pointer
1408b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
14156026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar# Always set deployment target arguments for every build, these libraries should
14256026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar# never depend on the environmental overrides. We simply set them to minimum
14356026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar# supported deployment target -- nothing in the compiler-rt libraries should
14456026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar# actually depend on the deployment target.
145469846b9252d2790bfc7d86927a780cf76c52c01Daniel DunbarOSX_DEPLOYMENT_ARGS := -mmacosx-version-min=10.4
1461d38069f4842973df02525c7bf77a5cbed3b03aaBob WilsonIOS_DEPLOYMENT_ARGS := -mios-version-min=1.0
1471d38069f4842973df02525c7bf77a5cbed3b03aaBob WilsonIOS6_DEPLOYMENT_ARGS := -mios-version-min=6.0
1481d38069f4842973df02525c7bf77a5cbed3b03aaBob WilsonIOSSIM_DEPLOYMENT_ARGS := -mios-simulator-version-min=1.0
14956026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar
15091354d7be8b43a5008f8bc5bb53b8e396afb3d20Daniel Dunbar# Use our stub SDK as the sysroot to support more portable building.
15191354d7be8b43a5008f8bc5bb53b8e396afb3d20Daniel DunbarOSX_DEPLOYMENT_ARGS += -isysroot $(ProjSrcRoot)/SDKs/darwin
1527bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarIOS_DEPLOYMENT_ARGS += -isysroot $(ProjSrcRoot)/SDKs/darwin
1537bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarIOS6_DEPLOYMENT_ARGS += -isysroot $(ProjSrcRoot)/SDKs/darwin
1547bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarIOSSIM_DEPLOYMENT_ARGS += -isysroot $(ProjSrcRoot)/SDKs/darwin
15556026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar
156469846b9252d2790bfc7d86927a780cf76c52c01Daniel DunbarCFLAGS.eprintf		:= $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
157469846b9252d2790bfc7d86927a780cf76c52c01Daniel DunbarCFLAGS.10.4		:= $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
158f8328c56b93ccbb11ce2e77e066c25536204d31bDaniel Dunbar# FIXME: We can't build ASAN with our stub SDK yet.
15978aedd464282595ba2c7bf83ddc4978117925217Daniel DunbarCFLAGS.asan_osx_dynamic := \
160742c1135a0ae9c5c9c5b0751cd0766c7d9f38d57Alexey Samsonov	$(CFLAGS) -mmacosx-version-min=10.6 -fno-builtin \
161a225736903b1bef1a232067429368e536f610266Alexey Samsonov	-gline-tables-only \
1622d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines	-DMAC_INTERPOSE_FUNCTIONS=1
163f8328c56b93ccbb11ce2e77e066c25536204d31bDaniel Dunbar
1648975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander PotapenkoCFLAGS.asan_iossim_dynamic := \
1658975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko	$(CFLAGS) -mios-simulator-version-min=7.0 \
1668975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko        -isysroot $(IOSSIM_SDK_PATH) \
1678975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko        -fno-builtin \
1688975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko	-gline-tables-only \
1692d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines	-DMAC_INTERPOSE_FUNCTIONS=1
1708975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko
1712d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesCFLAGS.ubsan_osx := $(CFLAGS) -mmacosx-version-min=10.6 -fno-builtin
1724a4ef702597471bff5e249b8ec9d94d265007895Richard Smith
1737bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarCFLAGS.ios.i386		:= $(CFLAGS) $(IOSSIM_DEPLOYMENT_ARGS)
1747bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarCFLAGS.ios.x86_64	:= $(CFLAGS) $(IOSSIM_DEPLOYMENT_ARGS)
1752d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesCFLAGS.ios.x86_64h	:= $(CFLAGS) $(IOSSIM_DEPLOYMENT_ARGS)
1767bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarCFLAGS.ios.armv7	:= $(CFLAGS) $(IOS_DEPLOYMENT_ARGS)
1777bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarCFLAGS.ios.armv7k	:= $(CFLAGS) $(IOS_DEPLOYMENT_ARGS)
1787bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarCFLAGS.ios.armv7s	:= $(CFLAGS) $(IOS_DEPLOYMENT_ARGS)
179469846b9252d2790bfc7d86927a780cf76c52c01Daniel DunbarCFLAGS.osx.i386		:= $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
180469846b9252d2790bfc7d86927a780cf76c52c01Daniel DunbarCFLAGS.osx.x86_64	:= $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
1812d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesCFLAGS.osx.x86_64h	:= $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
182469846b9252d2790bfc7d86927a780cf76c52c01Daniel DunbarCFLAGS.cc_kext.i386	:= $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
183469846b9252d2790bfc7d86927a780cf76c52c01Daniel DunbarCFLAGS.cc_kext.x86_64	:= $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
1842d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesCFLAGS.cc_kext.x86_64h	:= $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
1857bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarCFLAGS.cc_kext.armv7	:= $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS)
1867bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarCFLAGS.cc_kext.armv7k	:= $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS)
1877bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarCFLAGS.cc_kext.armv7s	:= $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS)
1887bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarCFLAGS.cc_kext_ios5.armv7  := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS)
1897bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarCFLAGS.cc_kext_ios5.armv7k := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS)
1907bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarCFLAGS.cc_kext_ios5.armv7s := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS)
1912d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesCFLAGS.profile_osx.i386    := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
1922d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesCFLAGS.profile_osx.x86_64  := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
1932d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesCFLAGS.profile_osx.x86_64h := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
1942d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesCFLAGS.profile_ios.i386    := $(CFLAGS) $(IOSSIM_DEPLOYMENT_ARGS)
1952d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesCFLAGS.profile_ios.x86_64  := $(CFLAGS) $(IOSSIM_DEPLOYMENT_ARGS)
1962d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesCFLAGS.profile_ios.x86_64h := $(CFLAGS) $(IOSSIM_DEPLOYMENT_ARGS)
1975ab0e47ce6eaaaddd743d3fdaf255ef16f11a685Chandler CarruthCFLAGS.profile_ios.armv7  := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS)
1985ab0e47ce6eaaaddd743d3fdaf255ef16f11a685Chandler CarruthCFLAGS.profile_ios.armv7k := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS)
1995ab0e47ce6eaaaddd743d3fdaf255ef16f11a685Chandler CarruthCFLAGS.profile_ios.armv7s := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS)
20056026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar
20178aedd464282595ba2c7bf83ddc4978117925217Daniel Dunbar# Configure the asan_osx_dynamic library to be built shared.
20278aedd464282595ba2c7bf83ddc4978117925217Daniel DunbarSHARED_LIBRARY.asan_osx_dynamic := 1
203d2e32e323cca83b666ecd124ebfd1720232d0928Alexander PotapenkoLDFLAGS.asan_osx_dynamic := -lstdc++ -undefined dynamic_lookup
20478aedd464282595ba2c7bf83ddc4978117925217Daniel Dunbar
2058975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko# Configure the asan_iossim_dynamic library to be built shared.
2068975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander PotapenkoSHARED_LIBRARY.asan_iossim_dynamic := 1
2078975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko# configure+make uses Clang, so we're using isysroot instead of --sysroot
2088975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko# or -Wl,-syslibroot.
2098975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander PotapenkoLDFLAGS.asan_iossim_dynamic := -undefined dynamic_lookup \
2108975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko  -Wl,-ios_simulator_version_min,7.0.0 \
2118975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko  -mios-simulator-version-min=7.0 -isysroot $(IOSSIM_SDK_PATH)
2128975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko
213ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel DunbarFUNCTIONS.eprintf := eprintf
2144a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel DunbarFUNCTIONS.10.4 := eprintf floatundidf floatundisf floatundixf
215d0dbbc4c9ac73e7a7de8a90408a4982819e1811bDaniel Dunbar
2167bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarFUNCTIONS.ios	    := divmodsi4 udivmodsi4 mulosi4 mulodi4 muloti4
2177bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar# On x86, the divmod functions reference divsi.
2182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesFUNCTIONS.ios.i386    := $(FUNCTIONS.ios) \
2192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines                         divsi3 udivsi3
2202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesFUNCTIONS.ios.x86_64  := $(FUNCTIONS.ios.i386)
2212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesFUNCTIONS.ios.x86_64h := $(FUNCTIONS.ios.x86_64)
2227bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar
2231ace4055f79f304750839d73c46bbcaeb994f1b5Eric ChristopherFUNCTIONS.osx	:= mulosi4 mulodi4 muloti4
2241ace4055f79f304750839d73c46bbcaeb994f1b5Eric Christopher
2252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesFUNCTIONS.profile_osx := GCDAProfiling InstrProfiling InstrProfilingBuffer \
2262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines                         InstrProfilingFile InstrProfilingPlatformDarwin \
2272d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines                         InstrProfilingRuntime
2282d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesFUNCTIONS.profile_ios := $(FUNCTIONS.profile_osx)
22991d9c15ef503507fc5badd4900a5049936be65c1Daniel Dunbar
2302d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesFUNCTIONS.asan_osx_dynamic := $(AsanFunctions) $(AsanCXXFunctions) \
2312d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines                              $(InterceptionFunctions) \
23278aedd464282595ba2c7bf83ddc4978117925217Daniel Dunbar                              $(SanitizerCommonFunctions) \
23378aedd464282595ba2c7bf83ddc4978117925217Daniel Dunbar	                      $(AsanDynamicFunctions)
234f8328c56b93ccbb11ce2e77e066c25536204d31bDaniel Dunbar
2352d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesFUNCTIONS.asan_iossim_dynamic := $(AsanFunctions) $(AsanCXXFunctions) \
2362d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines                                 $(InterceptionFunctions) \
2378975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko                                 $(SanitizerCommonFunctions) \
2388975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko	                         $(AsanDynamicFunctions)
2398975fa7ba8b508ba2d56c75e4f910da78ad3eee4Alexander Potapenko
2403f814987cee8310083cb4a5cfb1a3850f9a067a1Richard SmithFUNCTIONS.ubsan_osx := $(UbsanFunctions) $(UbsanCXXFunctions) \
2413f814987cee8310083cb4a5cfb1a3850f9a067a1Richard Smith                       $(SanitizerCommonFunctions)
2424a4ef702597471bff5e249b8ec9d94d265007895Richard Smith
243b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarCCKEXT_COMMON_FUNCTIONS := \
244b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	absvdi2 \
245b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	absvsi2 \
246b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	addvdi3 \
247b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	addvsi3 \
248b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ashldi3 \
249b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ashrdi3 \
250b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	bswapdi2 \
251b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	bswapsi2 \
252b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	clzdi2 \
253b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	clzsi2 \
254b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	cmpdi2 \
255b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ctzdi2 \
256b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ctzsi2 \
257b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divdc3 \
258b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divdi3 \
259b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divsc3 \
2604c45b931fde3005c8b253ebf7e18035b88e05f52Daniel Dunbar	divmodsi4 \
2614c45b931fde3005c8b253ebf7e18035b88e05f52Daniel Dunbar	udivmodsi4 \
262b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	do_global_dtors \
263b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	eprintf \
264b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ffsdi2 \
265b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixdfdi \
266b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixsfdi \
267b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsdfdi \
268b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsdfsi \
269b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunssfdi \
270b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunssfsi \
271b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatdidf \
272b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatdisf \
273b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatundidf \
274b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatundisf \
275b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	gcc_bcmp \
276b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	lshrdi3 \
277b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	moddi3 \
278b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	muldc3 \
279b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	muldi3 \
280b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulsc3 \
281b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulvdi3 \
282b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulvsi3 \
283b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negdi2 \
284b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negvdi2 \
285b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negvsi2 \
286b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	paritydi2 \
287b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	paritysi2 \
288b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	popcountdi2 \
289b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	popcountsi2 \
290b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	powidf2 \
291b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	powisf2 \
292b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	subvdi3 \
293b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	subvsi3 \
294b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ucmpdi2 \
295b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udiv_w_sdiv \
296b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udivdi3 \
297b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udivmoddi4 \
298b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	umoddi3
299b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
300ed9b014382e7af5d62358dd7cddc58598b050fd5Daniel DunbarCCKEXT_ARM_FUNCTIONS := $(CCKEXT_COMMON_FUNCTIONS) \
301b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	adddf3 \
302b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	addsf3 \
303b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_cdcmpeq \
304b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_cdrcmple \
305b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_cfcmpeq \
306b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_cfrcmple \
307b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmpeq \
308b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmpge \
309b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmpgt \
310b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmple \
311b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmplt \
312b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_drsub \
313b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmpeq \
314b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmpge \
315b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmpgt \
316b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmple \
317b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmplt \
318b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_frsub \
319b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_idivmod \
320b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_uidivmod \
321b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	cmpdf2 \
322b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	cmpsf2 \
323b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	div0 \
324b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divdf3 \
325b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divsf3 \
326b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divsi3 \
327b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	extendsfdf2 \
328b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ffssi2 \
329b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixdfsi \
330b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixsfsi \
331b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatsidf \
332b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatsisf \
333b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatunsidf \
334b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatunsisf \
335358b3fd9c3fbdba1e0b8f5ed2aa4a4bfe62375ebDaniel Dunbar	comparedf2 \
336358b3fd9c3fbdba1e0b8f5ed2aa4a4bfe62375ebDaniel Dunbar	comparesf2 \
337b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	modsi3 \
338b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	muldf3 \
339b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulsf3 \
340b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negdf2 \
341b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negsf2 \
342b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	subdf3 \
343b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	subsf3 \
344b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	switch16 \
345b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	switch32 \
346b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	switch8 \
347b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	switchu8 \
348b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	truncdfsf2 \
349b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udivsi3 \
350b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	umodsi3 \
351b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	unorddf2 \
352b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	unordsf2
353b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
3547bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarCCKEXT_ARMVFP_FUNCTIONS := $(CCKEXT_ARM_FUNCTIONS) \
3557bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	adddf3vfp \
3567bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	addsf3vfp \
3577bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	divdf3vfp \
3587bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	divsf3vfp \
3597bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	eqdf2vfp \
3607bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	eqsf2vfp \
3617bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	extendsfdf2vfp \
3627bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	fixdfsivfp \
3637bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	fixsfsivfp \
3647bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	fixunsdfsivfp \
3657bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	fixunssfsivfp \
3667bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	floatsidfvfp \
3677bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	floatsisfvfp \
3687bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	floatunssidfvfp \
3697bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	floatunssisfvfp \
3707bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	gedf2vfp \
3717bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	gesf2vfp \
3727bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	gtdf2vfp \
3737bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	gtsf2vfp \
3747bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	ledf2vfp \
3757bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	lesf2vfp \
3767bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	ltdf2vfp \
3777bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	ltsf2vfp \
3787bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	muldf3vfp \
3797bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	mulsf3vfp \
3807bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	nedf2vfp \
3817bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	nesf2vfp \
3827bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	subdf3vfp \
3837bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	subsf3vfp \
3847bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	truncdfsf2vfp \
3857bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	unorddf2vfp \
3867bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	unordsf2vfp
3877bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar
3887bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarFUNCTIONS.cc_kext.armv7 := $(CCKEXT_ARMVFP_FUNCTIONS)
3897bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarFUNCTIONS.cc_kext.armv7k := $(CCKEXT_ARMVFP_FUNCTIONS)
3907bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarFUNCTIONS.cc_kext.armv7s := $(CCKEXT_ARMVFP_FUNCTIONS)
3917bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarFUNCTIONS.cc_kext_ios5.armv7 := $(CCKEXT_ARMVFP_FUNCTIONS)
3927bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarFUNCTIONS.cc_kext_ios5.armv7k := $(CCKEXT_ARMVFP_FUNCTIONS)
3937bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarFUNCTIONS.cc_kext_ios5.armv7s := $(CCKEXT_ARMVFP_FUNCTIONS)
3947bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar
395b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarCCKEXT_X86_FUNCTIONS := $(CCKEXT_COMMON_FUNCTIONS) \
396b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divxc3 \
397b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsxfdi \
398b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsxfsi \
399b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixxfdi \
400b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatdixf \
401b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatundixf \
402b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulxc3 \
403b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	powixf2
404b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
405b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.i386 := $(CCKEXT_X86_FUNCTIONS) \
406b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ffssi2 \
407b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.eax \
408b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.ebp \
409b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.ebx \
410b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.ecx \
411b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.edi \
412b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.edx \
413b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.esi
414b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
415b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.x86_64 := $(CCKEXT_X86_FUNCTIONS) \
416b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	absvti2 \
417b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	addvti3 \
418b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ashlti3 \
419b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ashrti3 \
420b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	clzti2 \
421b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	cmpti2 \
422b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ctzti2 \
423b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divti3 \
424b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ffsti2 \
425b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixdfti \
426b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixsfti \
427b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsdfti \
428b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunssfti \
429b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsxfti \
430b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixxfti \
431b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floattidf \
432b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floattisf \
433b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floattixf \
434b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatuntidf \
435b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatuntisf \
436b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatuntixf \
437b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	lshrti3 \
438b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	modti3 \
439b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	multi3 \
440b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulvti3 \
441b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negti2 \
442b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negvti2 \
443b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	parityti2 \
444b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	popcountti2 \
445b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	subvti3 \
446b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ucmpti2 \
447b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udivmodti4 \
448b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udivti3 \
449b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	umodti3
450b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
4512d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesFUNCTIONS.cc_kext.x86_64h := $(FUNCTIONS.cc_kext.x86_64)
4522d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines
453b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar# FIXME: Currently, compiler-rt is missing implementations for a number of the
454b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar# functions that need to go into libcc_kext.a. Filter them out for now.
455b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarCCKEXT_MISSING_FUNCTIONS := \
456f442f2622541ce54aea208fbe2ea5b79a104a481Daniel Dunbar	cmpdf2 cmpsf2 div0 \
457f442f2622541ce54aea208fbe2ea5b79a104a481Daniel Dunbar	ffssi2 \
458ce750fdaab5c9c1d013817ad949c9109eb3f2af2Daniel Dunbar	udiv_w_sdiv unorddf2 unordsf2 bswapdi2 \
459b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	bswapsi2 \
460b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	gcc_bcmp \
461b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	do_global_dtors \
462b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.eax i686.get_pc_thunk.ebp i686.get_pc_thunk.ebx \
463b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.ecx i686.get_pc_thunk.edi i686.get_pc_thunk.edx \
464b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.esi \
465b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_cdcmpeq aeabi_cdrcmple aeabi_cfcmpeq aeabi_cfrcmple aeabi_dcmpeq \
466b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmpge aeabi_dcmpgt aeabi_dcmple aeabi_dcmplt aeabi_drsub aeabi_fcmpeq \
467b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmpge aeabi_fcmpgt aeabi_fcmple aeabi_fcmplt aeabi_frsub aeabi_idivmod \
468b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_uidivmod
469b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
4707bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarFUNCTIONS.cc_kext.armv7 := \
4717bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	$(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.armv7))
4727bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarFUNCTIONS.cc_kext.armv7k := \
4737bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	$(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.armv7k))
4747bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarFUNCTIONS.cc_kext.armv7s := \
4757bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	$(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.armv7s))
4767bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarFUNCTIONS.cc_kext_ios5.armv7 := \
4777bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	$(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext_ios5.armv7))
4787bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarFUNCTIONS.cc_kext_ios5.armv7k := \
4797bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	$(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext_ios5.armv7k))
4807bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarFUNCTIONS.cc_kext_ios5.armv7s := \
4817bba84ad33054a703634b090a846f6b35861e30dDaniel Dunbar	$(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext_ios5.armv7s))
482b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.i386 := \
483b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	$(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.i386))
484b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.x86_64 := \
485b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	$(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.x86_64))
4862d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesFUNCTIONS.cc_kext.x86_64h := \
4872d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines	$(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.x86_64h))
488b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
489d3d22631ca0b314f0564a9bcfe96dd2d6ca85fa6Daniel DunbarKERNEL_USE.cc_kext := 1
4907bba84ad33054a703634b090a846f6b35861e30dDaniel DunbarKERNEL_USE.cc_kext_ios5 := 1
491d3d22631ca0b314f0564a9bcfe96dd2d6ca85fa6Daniel Dunbar
4928b790353436e0815e6b94a018c6e6b314cba9042Daniel DunbarVISIBILITY_HIDDEN := 1
493a69eb9a1a0b111a4776a9bd727f4d551ec308261Evgeniy Stepanov
494a69eb9a1a0b111a4776a9bd727f4d551ec308261Evgeniy StepanovSHARED_LIBRARY_SUFFIX := dylib
495