summaryrefslogtreecommitdiff
path: root/src/configure
diff options
context:
space:
mode:
Diffstat (limited to 'src/configure')
-rwxr-xr-xsrc/configure162
1 files changed, 162 insertions, 0 deletions
diff --git a/src/configure b/src/configure
new file mode 100755
index 0000000..83fe4d3
--- /dev/null
+++ b/src/configure
@@ -0,0 +1,162 @@
+#!/bin/sh
+#
+# rhctl
+#
+# Copyright (C) 2009-2014 Christian Pointner <equinox@helsinki.at>
+#
+# This file is part of rhctl.
+#
+# rhctl is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# any later version.
+#
+# rhctl is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with rhctl. If not, see <http://www.gnu.org/licenses/>.
+#
+
+TARGET=`uname -s`
+
+USE_CLANG=0
+
+LUA_LDFLAGS='-lm'
+LUA_DIR=''
+
+print_usage() {
+ echo "configure --help print this"
+ echo " --target=<TARGET> build target i.e. Linux (default: autodetect)"
+ echo " --with-lua=<DIR> use this lua tree instead of system default"
+ echo " --use-clang use clang/llvm as compiler/linker"
+}
+
+for arg
+do
+ case $arg in
+ --target=*)
+ TARGET=${arg#--target=}
+ ;;
+ --use-clang)
+ USE_CLANG=1
+ ;;
+ --with-lua=*)
+ LUA_DIR=${arg#--with-lua=}
+ ;;
+ --help)
+ print_usage
+ exit 0
+ ;;
+ *)
+ echo "Unknown argument: $arg"
+ print_usage
+ exit 1
+ ;;
+ esac
+done
+
+if [ $USE_CLANG -eq 0 ]; then
+ CFLAGS='-g -Wall -O2'
+ LDFLAGS='-g -Wall -O2'
+ COMPILER='gcc'
+else
+ CFLAGS='-g -O2'
+ LDFLAGS='-g -O2'
+ COMPILER='clang'
+fi
+
+rm -f include.mk
+case $TARGET in
+ Linux)
+ echo "Linux specific build options"
+ LUA_LDFLAGS=$LUA_LDFLAGS' -ldl'
+ ;;
+ OpenBSD|FreeBSD|NetBSD)
+ echo "BSD specific build options"
+ CFLAGS=$CFLAGS' -I/usr/local/include'
+ LDFLAGS=$LDFLAGS' -L/usr/local/lib'
+ ;;
+ *)
+ echo "Plattform not supported"
+ exit 1;
+ ;;
+esac
+
+test_lua_version()
+{
+ LUA_VERSION=`cat $1 | grep "#define LUA_VERSION[ ]" | cut -f2- | tr -d '"' | sed -e 's/Lua \([0-9][0-9.]*\)/\1/'`
+ LUA_VERSION_NUM=`cat $1 | grep "#define LUA_VERSION_NUM" | awk '{ print $3 }'`
+ LUA_RELEASE=`cat $1 | grep "#define LUA_RELEASE[ ]" | cut -f2-`
+
+ if [ $LUA_VERSION_NUM -ge 501 ]; then
+ return 1;
+ else
+ return 0;
+ fi
+}
+
+if [ -z "$LUA_DIR" ]; then
+ for prefix in /usr /usr/local; do
+ if [ -e $prefix/include/lua.h ]; then
+ test_lua_version $prefix/include/lua.h
+ if [ $? -eq 1 ]; then
+ echo "using Lua $LUA_VERSION ($LUA_RELEASE) found at $prefix/include"
+ CFLAGS="$CFLAGS -I$prefix/include"
+ LUA_LDFLAGS="$LUA_LDFLAGS -L$prefix/lib -llua"
+ LUA_DIR=found
+ break
+ fi
+ else
+ for dir in `ls -d $prefix/include/lua* 2> /dev/null`; do
+ if [ -e $dir/lua.h ]; then
+ test_lua_version $dir/lua.h
+ if [ $? -eq 1 ]; then
+ echo "using Lua $LUA_VERSION ($LUA_RELEASE) found at $dir"
+ CFLAGS="$CFLAGS -I$dir"
+ if [ -x "$prefix/bin/lua$LUA_VERSION" ]; then
+ LUA_LDFLAGS="$LUA_LDFLAGS -L$prefix/lib -llua$LUA_VERSION"
+ LUA_DIR=found
+ elif [ -x "$prefix/bin/lua-$LUA_VERSION" ]; then
+ LUA_LDFLAGS="$LUA_LDFLAGS -L$prefix/lib -llua-$LUA_VERSION"
+ LUA_DIR=found
+ else
+ echo "ERROR: found lua.h at $dir/lua.h but no matching lua library"
+ return 1
+ fi
+ break
+ fi
+ fi
+ done
+ if [ -n "$LUA_DIR" ]; then
+ break
+ fi
+ fi
+ done
+
+ if [ -z "$LUA_DIR" ]; then
+ echo "ERROR: no suitable lua found .. please install lua 5.1 or higher or use --with-lua"
+ return 1
+ fi
+
+else
+ CFLAGS="$CFLAGS -I$LUA_DIR/include"
+ LUA_LDFLAGS="$LUA_LDFLAGS $LUA_DIR/lib/liblua.a"
+fi
+
+
+cat >> include.mk <<EOF
+# this file was created automatically
+# do not edit this file directly
+# use ./configure instead
+
+TARGET := $TARGET
+CC := $COMPILER
+CFLAGS := $CFLAGS
+LDFLAGS := $LDFLAGS
+LUA_LDFLAGS := $LUA_LDFLAGS
+EOF
+
+exit 0