about summary refs log tree commit diff
path: root/configure
diff options
context:
space:
mode:
authorShiz <hi@shiz.me>2015-06-28 23:08:21 +0200
committerRich Felker <dalias@aerifal.cx>2015-07-06 23:52:16 +0000
commitfb58545f8d1c5fa32122244caeaf3625c12ddc01 (patch)
tree88a3e261fc41fb4e5a23a351d41961d30423c058 /configure
parentf8db6f74b2c74a50c4dec7e30be5215f0e2c37a6 (diff)
downloadmusl-fb58545f8d1c5fa32122244caeaf3625c12ddc01.tar.gz
musl-fb58545f8d1c5fa32122244caeaf3625c12ddc01.tar.xz
musl-fb58545f8d1c5fa32122244caeaf3625c12ddc01.zip
add musl-clang, a wrapper for system clang installs
musl-clang allows the user to compile musl-powered programs using their
already existent clang install, without the need of a special cross compiler.
it achieves this by wrapping around both the system clang install and the
linker and passing them special flags to re-target musl at runtime.
it does only affect invocations done through the special musl-clang wrapper
script, so that the user setup remains fully intact otherwise.

the clang wrapper consists of the compiler frontend wrapper script,
musl-clang, and the linker wrapper script, ld.musl-clang.
musl-clang makes sure clang invokes ld.musl-clang to link objects; neither
script needs to be in PATH for the wrapper to work.
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure13
1 files changed, 12 insertions, 1 deletions
diff --git a/configure b/configure
index 99cb04d1..beed4062 100755
--- a/configure
+++ b/configure
@@ -134,6 +134,7 @@ shared=auto
 static=yes
 wrapper=auto
 gcc_wrapper=no
+clang_wrapper=no
 
 for arg ; do
 case "$arg" in
@@ -158,8 +159,9 @@ case "$arg" in
 --enable-visibility|--enable-visibility=yes) visibility=yes ;;
 --disable-visibility|--enable-visibility=no) visibility=no ;;
 --enable-wrapper|--enable-wrapper=yes) wrapper=detect ;;
---enable-wrapper=all) wrapper=yes ; gcc_wrapper=yes ;;
+--enable-wrapper=all) wrapper=yes ; gcc_wrapper=yes ; clang_wrapper=yes ;;
 --enable-wrapper=gcc) wrapper=yes ; gcc_wrapper=yes ;;
+--enable-wrapper=clang) wrapper=yes ; clang_wrapper=yes ;;
 --disable-wrapper|--enable-wrapper=no) wrapper=no ;;
 --enable-gcc-wrapper|--enable-gcc-wrapper=yes) wrapper=yes ; gcc_wrapper=yes ;;
 --disable-gcc-wrapper|--enable-gcc-wrapper=no) wrapper=no ;;
@@ -230,6 +232,8 @@ cc_ver="$(LC_ALL=C $CC -v 2>&1)"
 cc_family=unknown
 if fnmatch '*gcc\ version*' "$cc_ver" ; then
 cc_family=gcc
+elif fnmatch '*clang\ version*' "$cc_ver" ; then
+cc_family=clang
 fi
 echo "$cc_family"
 
@@ -247,6 +251,9 @@ echo "none"
 elif test "$cc_family" = gcc ; then
 gcc_wrapper=yes
 echo "gcc"
+elif test "$cc_family" = clang ; then
+clang_wrapper=yes
+echo "clang"
 else
 echo "none"
 if test "$wrapper" = detect ; then
@@ -259,6 +266,9 @@ if test "$gcc_wrapper" = yes ; then
 tools="$tools tools/musl-gcc"
 tool_libs="$tool_libs lib/musl-gcc.specs"
 fi
+if test "$clang_wrapper" = yes ; then
+tools="$tools tools/musl-clang tools/ld.musl-clang"
+fi
 
 #
 # Find the target architecture
@@ -600,6 +610,7 @@ EOF
 test "x$static" = xno && echo "STATIC_LIBS ="
 test "x$shared" = xno && echo "SHARED_LIBS ="
 test "x$cc_family" = xgcc && echo 'WRAPCC_GCC = $(CC)'
+test "x$cc_family" = xclang && echo 'WRAPCC_CLANG = $(CC)'
 exec 1>&3 3>&-
 
 printf "done\n"