#!/bin/sh

# Par Julien MOREAU	( jmoreau@bigfoot.com )

nbps=1				# Nombre de paramètres souhaités (sans option)
nom_cmde=`basename $0`		# Nom de la commande
usage="Usage: $nom_cmde [-e <extension>] <filename> [...]"	# Message d'aide
usage=$usage"\n\tCompile des programmes C ou C++ suivant leur extension."

options="-Wall"			# Options de compilation
ext_exec="out"			# Extension des exécutable par défaut
if [ "$1" = "-e" ] ; then ext_exec="$2" ; shift 2 ; fi
if test -n "$ext_exec" ; then ext_exec=".$ext_exec" ; fi

if [ $# -lt $nbps ] ; then	# Si le nombre de paramètres est incorrecte,
	echo $usage 1>&2 ; exit 2	# Affichage aide puis arrêt.
fi

for fichier in $* ; do
	if test ! -r $fichier ; then # Si le fichier n'est pas un lisible
		echo "Fichier \"$fichier\" illisible ou inexistant !" 1>&2
		continue
	fi
	fic=`basename $fichier`
	base=`echo $fic|cut -d'.' -f1`
	ext=`echo $fic|cut -d'.' -f2`
	if test -z "$ext" ; then
		echo "$fic: Ce fichier n'a pas d'extension !" 1>&2 ; exit 3
	fi
	if test "$ext" = "java" ; then
		compilateur="javac"
	else
		for extcpp in c cc cpp C CC CPP ; do
			if test $extcpp = $ext ; then
				compilateur="gcc"
			fi
		done
	fi
	if test -z "$compilateur" ; then
		echo "$fic: Je ne connais pas cette extension !" 1>&2
		continue
	fi
done

if test -z "$compilateur" ; then
	echo "Je ne sais pas quelle compilateur utiliser." 1>&2
	exit 1
fi
nom_exec="$base$ext_exec"

echo "$compilateur $options $* -o $nom_exec"
$compilateur $options $* -o "$nom_exec" ; ret=$?

if [ $ret -eq 0 ] ; then
	echo "strip $nom_exec" ; strip "$nom_exec" ; ret=$?
	if [ $ret -eq 0 ] ; then
		echo "chmod a+x $nom_exec" ; chmod a+x "$nom_exec"
		echo "Quels arguments voulez-vous lui passer ?"
		echo "Tapper exit pour sortir : \c" ; read args
		if test "$args" != "exit" ; then
			echo "Exécution : $nom_exec $args\n"
			"$nom_exec" $args ; ret=$?
		fi
	fi
fi

exit $ret

