view configure @ 5:c0223d75444d

Fill the .hgignore with compiled files.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Mon, 23 Feb 2015 00:27:48 +0100
parents f362b20de51e
children
line wrap: on
line source

#!/bin/sh

#----------------- Fichiers et librairies -----------

TARGET='dspad_server'

#FILESdspad='dspad.c ds.c uinput.c service.c'
FILESdspad_server=`ls *.c`
LDFLAGSdspad_server=''

#----------------- Options de compilation -----------

INCDIR='.'
CCFLAGS='-I$(INCDIR) -D_REENTRANT -g'

#------- Options de compilation  propres au systeme -----------

systeme=`uname`

if test $systeme = "IRIX"
then

#---- SGI - IRIX ----

CCFLAGS='-fullwarn '$CCFLAGS

LDFLAGS='-Wl,-woff,15,-woff,84,-woff,85'

DEPOPT='-M'

CCC='cc'

elif test $systeme = "Linux"
then

#---- Linux ----

CCFLAGS='-W -Wall -Werror '$CCFLAGS
#CCFLAGS=$CCFLAGS' -pedantic'

LDFLAGS=''

DEPOPT='-MM'

CCC='cc'

else echo "System $systeme inconnu"
     exit 1
fi

#----------------- L'option -e de echo existe ?  ----------------

recho=`echo -e`

if test "$recho" = "-e"
then echoOptionForTab=''    # echo "\t" permet d'afficher tab
else echoOptionForTab='-e'  # echo -e "\t" permet d'afficher tab
fi

#----------------- Nom du fichier genere ------------------------

makefile=Makefile

#----------------- Extension des fichiers -----------------------

extension=".c"

#----------------- Au moins une cible existe ? ------------------

if test -z "$TARGET"
then echo
     echo "Attention, aucune cible (TARGET) n'est indiquee !"
     exit 1;
fi

#----------------- INCDIR (ou trouver les .h) ? -----------------
if test -z "$INCDIR"
then echo
     echo "Attention, INCDIR non indique, par defaut : INCDIR='.'"
     INCDIR='.'
fi

#-------- Il ne faut pas de cible avec extension .c  -----------

error=0
for i in $TARGET
do
     if test $i != `basename $i $extension`
     then echo "Attention, la cible $i est un fichier source !!"
          error=1
     fi
done
if test $error -ne 0
then exit 1
fi

#--- Pour chaque cible,
#--- il faut verifier si la variable FILEScible est vide ---
#---                            ET
#--- il faut verifier la variable FILEScible n'est composee que de .c ---
printFilesList()
{
 #nbEspaces=`expr index $1 =`
     strLocal=`expr $1 : '\(.*\)='`
     nbEspaces=`expr length $strLocal`
     nbEspaces=`expr $nbEspaces + 1`

 strLocalEspaces=" "
 iLocal=0

 while test $iLocal -ne $nbEspaces
 do
    strLocalEspaces=$strLocalEspaces" "
    iLocal=`expr $iLocal + 1`
 done

 echo $1
 shift
 while test $# -ne 0
 do
   echo "$strLocalEspaces"$1           # Il faut mettre les "" !!
   shift
 done
}                 # Fin de printFilesList()

for i in $TARGET
do
     echo "--------------- FILES$i ---------------"

     findFileList="echo \$`echo FILES$i`"
     fileList=`eval $findFileList`

     if test -z "$fileList"
     then echo "Attention, FILES$i est vide => FILES$i=$i$extension"
          com="FILES$i=$i$extension"
          eval $com
     fi

     findFileList="echo \$`echo FILES$i`"
     fileList=`eval $findFileList`

     realFileList=""
     for j in $fileList
     do
        if test $j = `basename $j $extension`
        then echo "Attention, dans FILES$i, $j est ignore (!= $extension)... "
        else
             if test -z "$realFileList"
             then realFileList=$j
             else realFileList=$realFileList" "$j
             fi
        fi
     done
     if test -z "$realFileList"
     then
          echo "... Donc , FILES$i est vide => FILES$i=$i$extension"
          realFileList="$i$extension"
     fi

     echo
     com="FILES$i=\"$realFileList\""
     printFilesList $com                # Avant : echo $com
     echo
     echo "---------------------------------------"
     eval $com
done

#-------- Pour generer les dependances, il faut des fichiers ! --------------

sourceList=`ls *$extension`

if test -z "$sourceList"
then echo "Il n'y a aucun source ($extension) dans le repertoire courant"
     exit 1
fi

#----------------- generation automatique  -------------------
putFilesListInMakefile()
{
 strLocal=""
 for iLocal in $1
 do
     strLocal=$strLocal" "$iLocal
 done
 set $strLocal
 echo -n $1                                                       >> $makefile
 shift
 while test $# -ne 0
 do
   echo " \\"                                                     >> $makefile
   echo $echoOptionForTab -n "\t$1"                               >> $makefile
   shift
 done
 echo                                                             >> $makefile
}                 # Fin de printFilesList()

if test -f $makefile
then make -f $makefile clear
fi
rm -f $makefile

echo
echo "============= GENERATION D'UN FICHIER $makefile ============"
echo
echo Generation pour $systeme
echo


echo "#----- Fichier genere automatiquement sous `uname` ------"  >> $makefile
echo "#----- `date`"                                              >> $makefile
echo                                                              >> $makefile

echo "#-----"                                                     >> $makefile
echo "INCDIR=$INCDIR"                                             >> $makefile
echo "CCFLAGS=$CCFLAGS"                                           >> $makefile
echo "LDFLAGS=$LDFLAGS"                                           >> $makefile
echo "DEPOPT=$DEPOPT"                                             >> $makefile
echo "CCC=$CCC"                                                   >> $makefile
echo "#-----"                                                     >> $makefile
echo                                                              >> $makefile

echo "#-------------  Appli  --------------"                      >> $makefile
echo                                                              >> $makefile


putFilesListInMakefile "TARGET=$TARGET"
echo                                                              >> $makefile

for i in $TARGET
do
    findFileList="echo \$`echo FILES$i`"
    fileList=`eval $findFileList`

    putFilesListInMakefile "FILES$i=$fileList"                    >> $makefile
    echo                                                          >> $makefile
    findFalgList="echo \$`echo LDFLAGS$i`"
    falgList=`eval $findFalgList`
    echo "LDFLAGS$i=\$(LDFLAGS) $falgList"                        >> $makefile
    echo                                                          >> $makefile
done

for i in $TARGET
do
    echo "OBJECTS$i=\$(FILES$i:$extension=.o)"                    >> $makefile
    echo                                                          >> $makefile
done

echo "#-------------  Appli  --------------"                      >> $makefile
echo                                                              >> $makefile

echo "all: \$(TARGET)"                                            >> $makefile
echo                                                              >> $makefile

echo "#-------------  Appli  --------------"                      >> $makefile
echo                                                              >> $makefile

for i in $TARGET
do

cat << !                                                          >> $makefile
$i : \$(OBJECTS$i)
	\$(CCC) \$(OBJECTS$i) \\
		-o $i \$(LDFLAGS$i)
!

done

echo "#------------------------------------"                      >> $makefile
echo                                                              >> $makefile

cat << !                                                          >> $makefile
.c.o :
	\$(CCC) \$(CCFLAGS) -c \$< \\
		-o \$*.o

dep :
	@echo "======== Mise a jour des dependances : .depend ========"
	@rm -f .depend
	@for i in *$extension ; do \\
	echo \$\$i ; \\
	\$(CCC) \$(DEPOPT) \$(CCFLAGS) \$\$i > .tmpdepend ; \\
	OBJNAME=\`echo \$\$i | sed -e s%\\\\\\$extension%.o% \` ; \\
	cat .tmpdepend | \\
	sed -e s%\`basename \$\$i $extension\`\\\\\.o%\$\$OBJNAME% \
        >> .depend ; \\
	echo  >> .depend ; \\
	done
	@rm -f .tmpdepend

CLEANING=rm -f *.o core a.out \$(TARGET) .depend
CONSEIL=echo Penser a faire : make -f $makefile dep

clear :
	@\$(CLEANING)
	@echo
	@\$(CONSEIL)
	@echo
clean :
	\$(CLEANING)
	@echo
	@\$(CONSEIL)
	@echo

sinclude .depend

!

echo
echo "Et execution de : make -f $makefile dep"
echo
make -f $makefile dep