summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-10-28 15:15:09 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-10-28 15:15:09 +0000
commitacd4dc4149f1493eedc1f9e2029db97fa4209023 (patch)
treeb3d6db7e4ca0c7a3ee692d7747e964357486c368
parentd3c494f9093407e954f3af36ee43961d9de0ffde (diff)
build: fix build on Mac OS X 10.9
Add a wrapper around the clang gcc emulation to fix -print-file-name=<lib> Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38560 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--include/toplevel.mk11
-rwxr-xr-xscripts/clang-gcc-wrapper12
2 files changed, 21 insertions, 2 deletions
diff --git a/include/toplevel.mk b/include/toplevel.mk
index a623be9f2e..23d70ac81a 100644
--- a/include/toplevel.mk
+++ b/include/toplevel.mk
@@ -43,6 +43,13 @@ unexport LPATH
# make sure that a predefined CFLAGS variable does not disturb packages
export CFLAGS=
+ifneq ($(shell $(HOSTCC) 2>&1 | grep clang),)
+ export HOSTCC_REAL?=$(HOSTCC)
+ export HOSTCC_WRAPPER:=$(TOPDIR)/scripts/clang-gcc-wrapper
+else
+ export HOSTCC_WRAPPER:=$(HOSTCC)
+endif
+
ifeq ($(FORCE),)
.config scripts/config/conf scripts/config/mconf: tmp/.prereq-build
endif
@@ -74,12 +81,12 @@ prepare-tmpinfo: FORCE
fi
scripts/config/mconf:
- @$(_SINGLE)$(SUBMAKE) -s -C scripts/config all CC="$(HOSTCC)"
+ @$(_SINGLE)$(SUBMAKE) -s -C scripts/config all CC="$(HOSTCC_WRAPPER)"
$(eval $(call rdep,scripts/config,scripts/config/mconf))
scripts/config/conf:
- @$(_SINGLE)$(SUBMAKE) -s -C scripts/config conf CC="$(HOSTCC)"
+ @$(_SINGLE)$(SUBMAKE) -s -C scripts/config conf CC="$(HOSTCC_WRAPPER)"
config: scripts/config/conf prepare-tmpinfo FORCE
$< Config.in
diff --git a/scripts/clang-gcc-wrapper b/scripts/clang-gcc-wrapper
new file mode 100755
index 0000000000..9e668418a9
--- /dev/null
+++ b/scripts/clang-gcc-wrapper
@@ -0,0 +1,12 @@
+#!/bin/sh
+_cc="${HOSTCC_REAL:-gcc}"
+case "$1" in
+ -print-file-name=*)
+ dirs="$($_cc -print-search-dirs | grep -m1 libraries | sed -e 's,:, ,' -e 's,.* =,,')"
+ dirs="$dirs /usr/lib /usr/local/lib"
+ find $dirs -name "${1#*=}" | head -n1
+ ;;
+ *)
+ exec $_cc "$@"
+ ;;
+esac