diff options
Diffstat (limited to 'src/configure')
-rwxr-xr-x | src/configure | 162 |
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 |