--- /dev/null
+#!/bin/bash
+
+############################## IMPORTANT NOTE ###################################
+#
+# This script allows to produce an executable for linux or windows
+# using respectively gcc or cross-compilation tools from mingw
+# For the latter, it should be noticed that it is only possible
+# to produce 32bits executable for windows.
+# Supposing that the host runs a 64bits debian, it implies to install:
+# - binutils-mingw-w64-i686
+# - g++-mingw-w64-i686
+# - gcc-mingw-w64-i686
+# Since includes and libs are the same for windows or Linux Qt, it also
+# implies to get a copy of a windows 32bits Qt installation. By default,
+# this copy is supposed to be placed in /usr/local/qt5-win32 (for qt v5)
+#
+##################################################################################
+
+# setting defaults for linux
+os_lin=lin
+arch_lin=64
+qtver_lin=5
+qtpath_lin=/usr/include/x86_64-linux-gnu/qt5
+
+# setting defaults for win
+os_win=win
+arch_win=32
+qtver_win=5
+qtpath_win=/usr/local/qt5-win32
+
+os=""
+arch=""
+qtver=""
+# NOTE : qtpath corresponds to the Qt includes path under Linux,
+# and to the path of a copy of Qt installation root directory under Windows
+qtpath=""
+# default application name : void
+appname=""
+# default application version : 0.1
+appver=0.1
+# default : compile with no debug informations
+debug=""
+
+usage() {
+ echo "configure [-b|--debug] [-d|--defaults win|lin] [-a|--arch 32|64] [-o|--os win|lin] [-q|--qtver 4|5] [-p|--pathqt path] [-v|--appver vernum ] appname"
+ echo " -b|--debug: generate makefile so that compilations are done with -g option"
+ echo " -d|--defaults: using defaults for windows (win) or linux (lin)"
+ echo " for win, equivalent to -o win -a 32 -q 5 -p /usr/local/qt5-win32"
+ echo " for lin, equivalent to -o lin -a 64 -q 5 -p /usr/include/x86_64-linux-gnu/qt5"
+ echo " -a|--arch: define target architecture 32 (default for windows) or 64 bits (default for linux)"
+ echo " -o|--os: define target os, i.e. windows or linux"
+ echo " -q|--qtver: define qt version, i.e. 4 or 5"
+ echo " -o|--qtpath: define includes path for linux, or for windows, the path of the copy of qt windows installation"
+ echo " -v|--appver: define application version, e.g 0.2"
+ echo " appname: define the application name, i.e. executable name will be appname under linux or appname.exe under windows"
+ echo
+ echo " note that depending on where -d is placed, it may override or maybe overidden by other parameters"
+ exit 1;
+}
+
+#getting parameters
+while [ ! .$1 = . ] ; do
+ case "$1" in
+ -h|--help)
+ usage;;
+ -b|--debug)
+ debug="-g"; shift 1;;
+ -d|--defaults)
+ case "$2" in
+ win*) os=$os_win; arch=$arch_win; qtver=$qtver_win; qtpath=$qtpath_win; shift 2;;
+ lin*) os=$os_lin; arch=$arch_lin; qtver=$qtver_lin; qtpath=$qtpath_lin; shift 2;;
+ esac ;;
+ -a|--arch)
+ case "$2" in
+ 32) arch=32; shift 2;;
+ 64) arch=64; shift 2;;
+ *) arch="" ; shift 2 ;;
+ esac ;;
+ -o|--os)
+ case "$2" in
+ win*) os=win; shift 2;;
+ *) os=lin; shift 2;; # default is linux
+ esac ;;
+ -q|--qtver)
+ case "$2" in
+ 4) qtver=4; shift 2;;
+ *) qtver=5; shift 2;; # default is v5
+ esac ;;
+ -p|--pathqt)
+ case "$2" in
+ /*) qtpath=$2; shift 2;;
+ *) qtpath=""; shift 2;;
+ esac ;;
+ -v|--appver)
+ appver=$2; shift 2;;
+ --) shift ; break ;;
+ *) if [ .$appname = . ]; then
+ appname=$1; shift
+ else
+ echo "$1 is not a valid option or appname already set. Aborting !" ; exit 1
+ fi;;
+ esac
+done
+
+if [ .$appname = . ]; then
+ if [ ! .$1 = . ]; then
+ appname=$1
+ else
+ echo "Application name is not defined. Aborting !" ; exit 1
+ fi
+fi
+
+echo "application name : $appname"
+
+if [ "$os" = "" ]; then
+ os=$os_lin
+fi
+if [ "$arch" = "" ]; then
+ if [ $os = lin ]; then
+ arch=$arch_lin
+ elif [ $os = win ]; then
+ arch=$arch_win
+ fi
+fi
+if [ "$qtver" = "" ]; then
+ if [ $os = lin ]; then
+ qtver=$qtver_lin
+ elif [ $os = win ]; then
+ qtver=$qtver_win
+ fi
+fi
+if [ "$qtpath" = "" ]; then
+ if [ $os = lin ]; then
+ qtpath=$qtpath_lin
+ elif [ $os = win ]; then
+ qtpath=$qtpath_win
+ fi
+fi
+
+if [ -f Makefile ]; then
+ echo "Removing existing makefile"
+ rm Makefile
+fi
+
+if [ $os = lin ]; then
+ echo "creating makefile for building linux ($arch bits) version $appver of $appname"
+else
+ echo "creating makefile for building windows ($arch bits) version $appver of $appname"
+fi
+
+mkdir -p build/${os}${arch}
+
+# get the app. name in capitals
+appdef=$(echo $appname | tr [a-z] [A-Z])
+
+# generate the real Makefile
+# 1 - search/replace
+cat Makefile.in | sed "s|@@APPNAME@@|${appname}|g;s|@@APPDEF@@|${appdef}|g;s|@@APPVER@@|${appver}|g;s|@@OS@@|${os}|g;s|@@ARCH@@|${arch}|g;s|@@QTVER@@|${qtver}|g;s|@@QTPATH@@|${qtpath}|g;s|@@DEBUG@@|${debug}|g" > Makefile
+# 2 - adding includes dependencies to Makefile
+for src in *.cpp; do
+ gcc -MM $src | sed 's!^\(.*\):!$(BUILDPATH)/\1:!' | cat >> Makefile
+done
+
+# generate the real installation script for linux
+cat install.sh.in | sed "s|@@APPNAME@@|${appname}|g" > install.sh
+
+
+