diff options
author | Shiz <hi@shiz.me> | 2015-06-28 23:08:21 +0200 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2015-07-06 23:52:16 +0000 |
commit | fb58545f8d1c5fa32122244caeaf3625c12ddc01 (patch) | |
tree | 88a3e261fc41fb4e5a23a351d41961d30423c058 /configure | |
parent | f8db6f74b2c74a50c4dec7e30be5215f0e2c37a6 (diff) | |
download | musl-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-x | configure | 13 |
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" |