diff --git a/include/toplevel.mk b/include/toplevel.mk
index a623be9f2e69c3592ebe70275f8ffbdb15167c6c..23d70ac81a1d3d092ab68bbc2a3aa16644d0241d 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 0000000000000000000000000000000000000000..9e668418a9148f3e18e92c7ba56b7df13b8ce93b
--- /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