]> AND Private Git Repository - blast.git/commitdiff
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
1st commit of all files
authorStéphane Domas <sdomas@prodigy.iut-bm.univ-fcomte.fr>
Wed, 26 Apr 2017 12:22:54 +0000 (14:22 +0200)
committerStéphane Domas <sdomas@prodigy.iut-bm.univ-fcomte.fr>
Wed, 26 Apr 2017 12:22:54 +0000 (14:22 +0200)
configure [new file with mode: 0755]

diff --git a/configure b/configure
new file mode 100755 (executable)
index 0000000..81b7283
--- /dev/null
+++ b/configure
@@ -0,0 +1,168 @@
+#!/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
+
+
+