aboutsummaryrefslogtreecommitdiff
path: root/configure
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2016-07-09 16:12:17 +0200
committerKarel Kočí <cynerd@email.cz>2016-07-09 16:16:29 +0200
commitc0c651208b8ca374bd9aa2fc7705a6b85160e11b (patch)
tree5ff155e9226e3248d9267d081d1584ff46d32f69 /configure
parente0fb161f1cfa3da9ddfe7f6fe5a82d0273cd34f1 (diff)
downloadgeml-c0c651208b8ca374bd9aa2fc7705a6b85160e11b.tar.gz
geml-c0c651208b8ca374bd9aa2fc7705a6b85160e11b.tar.bz2
geml-c0c651208b8ca374bd9aa2fc7705a6b85160e11b.zip
Add Makefile and configure script
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure190
1 files changed, 190 insertions, 0 deletions
diff --git a/configure b/configure
new file mode 100755
index 0000000..1cf35d3
--- /dev/null
+++ b/configure
@@ -0,0 +1,190 @@
+#!/bin/sh
+# vim:ft=sh:ts=4:sw=4:expandtab
+
+# Configured variables #####################################################
+# Described in following format:
+# name:initial value:type:if exported to makefile:if exported to C header
+# Where type can be just a string (in C in "") or plain. None implies plain.
+CNFS="SGP_VERSION:0.1:string:F:T
+SGP_CONTACT:cynerd@email.cz:string:F:T
+PREFIX:/usr/local:string:T:F
+MOD_LUA:true::T:F
+MOD_PYTHON:true::T:F
+DEBUG:false::T:F
+CFLAGS:::T:F
+LFLAGS:::T:F"
+############################################################################
+
+print_help() {
+ echo "Usage: ./configure [OPTION]..."
+ echo "SGP configuration script. Execute this script to configure project"
+ echo "and prepare it for building."
+ echo
+ echo " --help, -h Give this help list"
+ echo " --prefix=PATH Set PATH as installation prefix."
+ echo " In default /usr/local"
+ echo " --debug, -d Enable development features."
+ echo " --release, -r Disable development features for project."
+ echo " --dep-check Force depencency check for this machine."
+ echo
+ echo " --mod-lua-enable, --mod-lua-disable"
+ echo " Set if Lua module should be compiled. In default is enabled."
+ echo " --mod-python-enable, --mod-python-disable"
+ echo " Set if Python module should be compiled. In default is enabled."
+ echo
+ echo "Environment variables:"
+ echo " CROSS_COMPILE Prefix for compilation tools."
+ echo
+ echo "SGP version $SGP_VERSION"
+ echo "Report bugs to <$SGP_CONTACT>."
+}
+
+CONFIG_FILE=.config
+CONFIGURED_FILE=.configured # TODO
+
+# TODO support for values with escaped colons
+# Load default configuration
+eval `echo "$CNFS" | grep -o -E '^[^:]*:[^:]*' | sed 's/:/=/'`
+
+# Load existing configuration
+if [ -f "$CONFIG_FILE" ]; then
+ source ./"$CONFIG_FILE"
+fi
+
+# Requested operation.
+# c - Configure, default configuration behavior
+# m - Prints output for Makefile
+# h - Prints C header file (machine validation is skipped)
+OP=c
+
+# Parse arguments
+while [ "$#" -gt 0 ]; do
+ case $1 in
+ -h|-?|--help)
+ print_help
+ exit 0
+ ;;
+ --prefix=*)
+ # TODO
+ ;;
+ -d|--debug)
+ DEBUG=True
+ ;;
+ -r|--release)
+ DEBUG=False
+ ;;
+ --mod-lua-enable)
+ MOD_LUA=true
+ ;;
+ --mod-lua-disable)
+ MOD_LUA=false
+ ;;
+ --mod-python-enable)
+ MOD_PYTHON=true
+ ;;
+ --mod-python-disable)
+ MOD_PYTHON=false
+ ;;
+ --op-makefile)
+ OP=m
+ ;;
+ --op-h)
+ OP=h
+ ;;
+ *)
+ echo Unknown option $1 1>&2
+ exit 2
+ ;;
+ esac
+ shift
+done
+
+# Basically save configuration to file
+configure() {
+ echo "# SGP configuration file" > "$CONFIG_FILE"
+ echo "# Please do not edit this file directly." >> "$CONFIG_FILE"
+ echo "$CNFS" | while read L; do
+ NAME=`echo "$L" | grep -o -E '^[^:]*'`
+ eval "VALUE=\$$NAME"
+ echo "$NAME=$VALUE" >> "$CONFIG_FILE"
+ done
+ echo "Configuration written to \"$CONFIG_FILE\""
+}
+
+# Generate Makefile and configure them if they doesn't exists in PWD
+doext() {
+ if [ -f "Makefile" ] || [ -f configure ]; then
+ return
+ fi
+ SGPDIR=`dirname "$0"`
+
+ echo "# This is external Makefile for SGP." > Makefile
+ echo "export CROSS_COMPILE=$CROSS_COMPILE" >> Makefile
+ echo >> Makefile
+ echo "SGP_PATH = $SGPDIR" >> Makefile
+ echo >> Makefile
+ echo "MAKEARGS := -C \"\$(SGP_PATH)\"" >> Makefile
+ echo "MAKEARGS += O=\"\$(shell pwd)\"" >> Makefile
+ echo >> Makefile
+ echo "MAKEFLAGS += --no-print-directory" >> Makefile
+ echo >> Makefile
+ echo "Q = @" >> Makefile
+ echo ".PHONY: all \$(MAKECMDGOALS)" >> Makefile
+ echo "all \$(MAKECMDGOALS):" >> Makefile
+ echo " \$(Q)\$(MAKE) \$(MAKEARGS) \$@" >> Makefile
+
+ echo Created local Makefile
+
+ echo "# This is external configure script for SGP." > configure
+ echo "SGP_PATH=$SGPDIR" >> configure
+ echo "\$SGP_PATH/configure \$@" >> configure
+ chmod +x configure
+
+ echo Created local configure script
+}
+
+makefile() {
+ echo "$CNFS" | while read L; do
+ if [ `echo $L | awk -F ':' '{ print $4 }'` != "T" ]; then
+ continue
+ fi
+ NAME=`echo "$L" | grep -o -E '^[^:]*'`
+ eval "VALUE=\$$NAME"
+ echo "$NAME = $VALUE"
+ done
+}
+
+cheader() {
+ echo "$CNFS" | while read L; do
+ if [ `echo $L | awk -F ':' '{ print $5 }'` != "T" ]; then
+ continue
+ fi
+ NAME=`echo "$L" | grep -o -E '^[^:]*'`
+ eval "VALUE=\$$NAME"
+ if [ "`echo $L | awk -F ':' '{ print $3 }'`" = "string" ]; then
+ echo "#define $NAME \"$VALUE\""
+ else
+ echo "#define $NAME $VALUE"
+ fi
+ done
+}
+
+validate() {
+ echo -n
+ # TODO check dependencies and programs
+}
+
+case $OP in
+ c)
+ validate
+ doext
+ configure
+ ;;
+ m)
+ validate
+ makefile
+ ;;
+ h)
+ cheader
+ ;;
+esac