[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: icecream/client
From: Luboš Luňák <l.lunak () kde ! org>
Date: 2012-07-08 9:00:04
Message-ID: 20120708090004.71E8FAC7A9 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1304578 by lunakl:
make it possible to also include clang in the build env
M +71 -23 icecc-create-env
--- trunk/icecream/client/icecc-create-env #1304577:1304578
@@ -11,6 +11,12 @@
is_darwin=1
fi
+usage ()
+{
+ echo "usage: $0 <gcc_path> <g++_path>"
+ echo "usage: $0 [<gcc_path>|] [<g++_path>|] <clang_path> <clang++_path>"
+}
+
is_contained ()
{
case " $target_files " in
@@ -71,6 +77,24 @@
fi
}
+check_compiler ()
+{
+ added_cc=$1
+ added_cxx=$2
+ if test -z "$added_cc" || test -z "$added_cxx"; then
+ usage
+ exit 1
+ fi
+ if ! test -x "$added_cc" ; then
+ echo "'$added_cc' is no executable."
+ exit 1
+ fi
+ if ! test -x "$added_cxx" ; then
+ echo "'$added_cxx' is no executable."
+ exit 1
+ fi
+}
+
# backward compat
if test "$1" = "--respect-path"; then
shift
@@ -79,38 +103,33 @@
added_gcc=$1
shift
added_gxx=$1
+shift
-if test -z "$added_gcc" || test -z "$added_gxx"; then
- echo "usage: $0 <gcc_path> <g++_path>"
- exit 1
+if test -n "$added_gcc" || test -n "$added_gxx"; then
+ gcc=1
+ check_compiler "$added_gcc" "$added_gxx"
fi
-if ! test -x "$added_gcc" ; then
- echo "'$added_gcc' is no executable."
- exit 1
+added_clang=$1
+shift
+added_clangxx=$1
+shift
+
+if test -n "$added_clang" || test -n "$added_clangxx"; then
+ clang=1
+ check_compiler "$added_clang" "$added_clangxx"
fi
-if ! test -x "$added_gxx" ; then
- echo "'$added_gcc' is no executable."
+if test -z "$gcc" && test -z "$clang"; then
+ usage
exit 1
fi
+tempdir=`mktemp -d /tmp/iceccenvXXXXXX`
+
+if test -n "$gcc"; then
add_file $added_gcc /usr/bin/gcc
add_file $added_gxx /usr/bin/g++
-add_file /usr/bin/as
-
-if test "$is_darwin" = 1; then
- # add dynamic linker
- add_file /usr/lib/dyld
- real_file=`/usr/bin/gcc --version | head -n 1 2>&1 | cut -d" " -f1`
- add_file /usr/bin/$real_file
- real_file=`/usr/bin/g++ --version | head -n 1 2>&1 | cut -d" " -f1`
- add_file /usr/bin/$real_file
- real_file=`/usr/bin/as -micha -- < /dev/null 2>&1 | cut -d: -f1`
- add_file $real_file
-fi
-
-
add_file `$added_gcc -print-prog-name=cc1` /usr/bin/cc1
add_file `$added_gxx -print-prog-name=cc1plus` /usr/bin/cc1plus
specfile=`$added_gcc -print-file-name=specs`
@@ -127,7 +146,37 @@
if test -n "$plugin" && test "$plugin" != "$plugin_name" && test -e "$plugin"; then
add_file "$plugin" "$plugin"
fi
+fi
+if test -n "$clang"; then
+ add_file $added_clang /usr/bin/clang
+ add_file $added_clangxx /usr/bin/clang++
+ # clang requires /tmp
+ mkdir "$tempdir"/tmp/
+ chmod 1777 "$tempdir"/tmp/
+ touch "$tempdir"/tmp/dummy
+ add_file "$tempdir"/tmp/dummy /tmp/tmpfile
+ # clang always uses its internal .h files
+ clangincludes=$(dirname $($added_clang -print-file-name=include/limits.h))
+ for file in $clangincludes/*; do
+ file=$(readlink -e $file)
+ add_file "$file" "$file"
+ done
+fi
+
+add_file /usr/bin/as
+
+if test "$is_darwin" = 1; then
+ # add dynamic linker
+ add_file /usr/lib/dyld
+ real_file=`/usr/bin/gcc --version | head -n 1 2>&1 | cut -d" " -f1`
+ add_file /usr/bin/$real_file
+ real_file=`/usr/bin/g++ --version | head -n 1 2>&1 | cut -d" " -f1`
+ add_file /usr/bin/$real_file
+ real_file=`/usr/bin/as -micha -- < /dev/null 2>&1 | cut -d: -f1`
+ add_file $real_file
+fi
+
# for ldconfig -r to work, ld.so.conf must not contain relative paths
# in include directives. Make them absolute.
tmp_ld_so_conf=`mktemp /tmp/icecc_ld_so_confXXXXXX`
@@ -139,7 +188,6 @@
done </etc/ld.so.conf >$tmp_ld_so_conf
add_file $tmp_ld_so_conf /etc/ld.so.conf
-tempdir=`mktemp -d /tmp/iceccenvXXXXXX`
# special case for weird multilib setups
for dir in /lib /lib64 /usr/lib /usr/lib64; do
test -L $dir && cp -p $dir $tempdir$dir
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic