aboutsummaryrefslogtreecommitdiff
path: root/examples/D65various-complier-support
diff options
context:
space:
mode:
Diffstat (limited to 'examples/D65various-complier-support')
-rw-r--r--examples/D65various-complier-support73
1 files changed, 73 insertions, 0 deletions
diff --git a/examples/D65various-complier-support b/examples/D65various-complier-support
new file mode 100644
index 0000000..d6c8484
--- /dev/null
+++ b/examples/D65various-complier-support
@@ -0,0 +1,73 @@
+#!/bin/sh
+#
+# pbuilder hook script: choose optional compiler rather than default one
+#
+# Sometimes we want to choose other compiler than default, because of improving
+# code to conform to standard, check compiler quality or so. This script will
+# ease it. Try enable hook script and set "CHOOSE_COMPILER" variables as clang,
+# gcc-*, or other compilers (note: however, now only clang and gcc can works
+# well and others fails to build).
+#
+# i.e.)
+# $ sudo CHOOSE_COMPILER="clang" pbuilder --build foobar_1.0-1.dsc
+# $ sudo CHOOSE_COMPILER="gcc-4.6" pbuilder --build foobar_1.0-1.dsc
+#
+
+set -e
+
+# check whether we are asked to change the compiler.
+case "$CHOOSE_COMPILER" in
+ clang)
+ newcc=/usr/bin/"$CHOOSE_COMPILER"
+ newcxx=/usr/bin/"$CHOOSE_COMPILER"++
+ ;;
+ gcc-*)
+ use_gcc_version=`echo $CHOOSE_COMPILER | sed -e s/gcc-//`
+ gxx_package=g++-"$use_gcc_version"
+ newcc=/usr/bin/"$CHOOSE_COMPILER"
+ newcxx=/usr/bin/g++-"$use_gcc_version"
+ ;;
+ tcc)
+ newcc=/usr/bin/"$CHOOSE_COMPILER"
+ newcxx=/bin/false
+ not_gcc_compat=1
+ ;;
+ pcc)
+ newcc=/usr/bin/"$CHOOSE_COMPILER"
+ newcxx=/bin/false
+ not_gcc_compat=1
+ ;;
+ asn1c)
+ newcc=/usr/bin/"$CHOOSE_COMPILER"
+ newcxx=/bin/false
+ not_gcc_compat=1
+ ;;
+ *)
+ exit 0
+ ;;
+esac
+
+for compiler in $CHOOSE_COMPILER $gxx_package
+do
+ apt-get -y install "$compiler" || {
+ echo >&2 "E: Installing the compiler "$compiler" failed"
+ exit 1
+ }
+done
+
+test -x /usr/bin/"$CHOOSE_COMPILER" || {
+ echo >&2 "E: Package "$CHOOSE_COMPILER" does not contain compiler driver?"
+ exit 1
+}
+
+
+ln -sf "$newcc" /usr/bin/cc
+ln -sf "$newcxx" /usr/bin/c++
+
+if [ x"$not_gcc_compat" = x ]; then
+ (cd /usr/bin; ln -sf "$newcc" gcc; ln -sf "$newcxx" g++)
+else
+ rm -f /usr/bin/gcc /usr/bin/g++
+fi
+
+exit 0