#!/bin/bash function do_help() { printf "Options: --help (-h) Display this message --prefix Path to install MOOG --bindir Path to install MOOG binaries (default: PREFIX/bin) --datadir Path to install MOOG data files (default: PREFIX/share/moog) --with-x11 Path to X11 library --with-sm Path to SuperMongo libraries\n" } FC=${FC:-gfortran} if [[ ! -f "$(which $FC 2>/dev/null)" ]]; then echo "$FC could not be found" >&2 exit 1 fi with_x11="/usr/X11/lib" with_sm="/usr/local/sm" fflags=(-Wall -Wextra -ff2c -fdefault-double-8 -fdefault-real-8) gcc_version=$($FC --version | head -n 1 | awk -F' ' '{ print $4 }') gcc_major="${gcc_version%%\.*}" # Handle GCC 10 requirements if (( $gcc_major >= 10 )); then fflags+=(--allow-argument-mismatch) fi # Generate new argv list, with elements split on '=' argv=() for x in $@; do if [[ "$x" =~ .*=.* ]]; then key="${x%=*}" value="${x#*=}" argv+=($key) argv+=($value) else argv+=($x) fi done # Parse arguments i=0 nargs=${#argv[@]} while [[ $i < $nargs ]]; do key="${argv[$i]}" value="${argv[$i+1]}" case "$key" in --help|-h) do_help exit 0 ;; --prefix) prefix="$value" (( i++ )) ;; --bindir) bindir="$value" (( i++ )) ;; --datadir) datadir="$value" (( i++ )) ;; --with-x11) with_x11="$value" (( i++ )) ;; --with-sm) with_sm="$value" (( i++ )) ;; esac (( i++ )) done # Assign default paths if not modified by the user [[ -z "${prefix}" ]] && prefix="/usr/local" [[ -z "${bindir}" ]] && bindir="${prefix}/bin" [[ -z "${datadir}" ]] && datadir="${prefix}/share/moog" # Convert fortran flag array to string fflags="${fflags[@]}" # Populate templates sed "s|@PREFIX@|${prefix}|g;\ s|@BINDIR@|${bindir}|g;\ s|@DATADIR@|${datadir}|g;\ s|@FFLAGS@|${fflags}|g;\ s|@WITH_X11@|${with_x11}|g;\ s|@WITH_SM@|${with_sm}|g;\ s|@FC@|${FC}|g;\ " Makefile.in > Makefile sed "s|@MOOGPATH_DEFAULT@|${datadir}/|" Moog.f.in > Moog.f # Dump printf " Configured with: GCC version ........... $gcc_version Fortran compiler ...... $FC Installation prefix ... $prefix X11 library ........... $with_x11 SuperMongo library .... $with_sm Run 'make' to compile Run 'make install' to install "