| [2720] | 1 | #!/bin/csh 
 | 
|---|
 | 2 | #  Script de generation des Makefile/smakefile pour modules
 | 
|---|
 | 3 | #  librairies SOPHYA  
 | 
|---|
 | 4 | #  C. Magneville / R. Ansari - Mai 2005
 | 
|---|
| [2739] | 5 | #------
 | 
|---|
| [2720] | 6 | #  Option controlant la generation des smakefile OU Makefile
 | 
|---|
 | 7 | #  smakefile utilise pour le developpement - contient une reference 
 | 
|---|
 | 8 | #  a $(SOPHYABASE)/include/sophyamake.inc
 | 
|---|
 | 9 | #  les Makefile reference ../BuildMgr/sophyamake.inc
 | 
|---|
| [2739] | 10 | #------
 | 
|---|
| [2720] | 11 | 
 | 
|---|
| [2739] | 12 | if ( ! $?TMPDIR ) set TMPDIR = /tmp
 | 
|---|
| [2720] | 13 | set makname = "Makefile"
 | 
|---|
 | 14 | unset targetdir 
 | 
|---|
 | 15 | 
 | 
|---|
| [2739] | 16 | if ( $#argv < 1) then 
 | 
|---|
 | 17 |   echo ' Usage: mkmflib [-dev] [-sbase SOPHYABASE] ModuleName '
 | 
|---|
 | 18 |   exit -1
 | 
|---|
 | 19 | endif
 | 
|---|
 | 20 | 
 | 
|---|
| [2720] | 21 | while ( $#argv > 0 )
 | 
|---|
 | 22 |   if( "$1" == "-h" ) then
 | 
|---|
 | 23 |     echo ' Usage: mkmflib [-dev] [-sbase SOPHYABASE] ModuleName '
 | 
|---|
 | 24 |     exit -1
 | 
|---|
 | 25 |   else if ( "$1" == "-dev" ) then 
 | 
|---|
 | 26 |    set makname = "smakefile"
 | 
|---|
 | 27 |   else if( "$1" == "-sbase" ) then
 | 
|---|
 | 28 |     setenv SOPHYABASE $2
 | 
|---|
 | 29 |     shift
 | 
|---|
 | 30 |   else 
 | 
|---|
 | 31 |     set targetdir = $1
 | 
|---|
 | 32 |   endif
 | 
|---|
 | 33 |   shift
 | 
|---|
 | 34 | end
 | 
|---|
 | 35 | 
 | 
|---|
 | 36 | if( ! $?SOPHYABASE ) then
 | 
|---|
 | 37 |   echo 'ERROR: (mkmflib) define SOPHYABASE or use script arguments'
 | 
|---|
 | 38 |   exit -2
 | 
|---|
 | 39 | endif
 | 
|---|
 | 40 | 
 | 
|---|
 | 41 | if( ! $?targetdir ) then
 | 
|---|
 | 42 |   echo 'ERROR: (mkmflib) No target module (directory) specified'
 | 
|---|
 | 43 |   exit -3
 | 
|---|
 | 44 | endif
 | 
|---|
 | 45 | 
 | 
|---|
 | 46 | cd ../$targetdir
 | 
|---|
 | 47 | 
 | 
|---|
| [2739] | 48 | #--- fichier des fichiers a exclure
 | 
|---|
| [2720] | 49 | if ( ! -f exclude ) touch exclude
 | 
|---|
| [2739] | 50 | sort exclude >! $TMPDIR/exclude.sort
 | 
|---|
 | 51 | set exclfile = 'exclude'
 | 
|---|
| [2720] | 52 | 
 | 
|---|
 | 53 | echo "mkmflib: Creating $targetdir/objlist.list , $targetdir/$makname" 
 | 
|---|
 | 54 | 
 | 
|---|
| [2739] | 55 | #--- fichier de la liste des .o
 | 
|---|
| [2720] | 56 | set liblist = objlist.list
 | 
|---|
 | 57 | rm -f $liblist
 | 
|---|
 | 58 | touch $liblist
 | 
|---|
 | 59 | ls -1 *.{c,cc} | comm -3 -1 $TMPDIR/exclude.sort - | sed -e 's/\.cc/.o/' | sed -e 's/\.c/.o/' >> $liblist
 | 
|---|
 | 60 | unset liblist
 | 
|---|
 | 61 | 
 | 
|---|
| [2739] | 62 | #--- Creation de smakefile
 | 
|---|
| [2720] | 63 | set libf='$(SOPHYALIBP)lib'$targetdir'.a'
 | 
|---|
| [2739] | 64 | rm -f $makname; touch $makname
 | 
|---|
| [2720] | 65 | 
 | 
|---|
 | 66 | if ($makname == "smakefile") then 
 | 
|---|
 | 67 |   echo 'include $(SOPHYABASE)/include/sophyamake.inc' >> $makname 
 | 
|---|
 | 68 | else 
 | 
|---|
 | 69 |   echo 'include ../BuildMgr/sophyamake.inc' >> $makname 
 | 
|---|
 | 70 | endif
 | 
|---|
 | 71 | 
 | 
|---|
| [2739] | 72 | echo ' ' >> $makname
 | 
|---|
| [2720] | 73 | echo 'all:' $libf  >> $makname 
 | 
|---|
 | 74 | echo ' ' >> $makname
 | 
|---|
 | 75 | 
 | 
|---|
 | 76 | echo 'clean:' >> $makname
 | 
|---|
 | 77 | set toto='rm -f'
 | 
|---|
| [2739] | 78 | foreach f ( *.cc *.c ) 
 | 
|---|
| [2720] | 79 |   set toto= ( $toto '$(SOPHYAOBJP)'$f:r.o )
 | 
|---|
 | 80 | end
 | 
|---|
| [2739] | 81 | echo '  ' $toto >> $makname
 | 
|---|
| [2720] | 82 | echo '  rm -f '$libf >> $makname
 | 
|---|
 | 83 | echo ' ' >> $makname
 | 
|---|
 | 84 | 
 | 
|---|
 | 85 | echo $libf ':' \
 | 
|---|
 | 86 |  `ls -1 *.{c,cc} | comm -3 -1 $TMPDIR/exclude.sort - | sed -e 's/\.cc/.o/' | sed -e 's/\.c/.o/' | sed -e 's/^/$(SOPHYAOBJP)/'` >> $makname
 | 
|---|
 | 87 | echo '  $(AR) $(ARFLAGS) $@ $? ' >> $makname
 | 
|---|
| [2763] | 88 | set slbobjlist = libsophya.so
 | 
|---|
 | 89 | if( -e shlibs.name ) set slbobjlist = `grep ^lib shlibs.name | head -1`
 | 
|---|
 | 90 | set slbobjlist = $slbobjlist:r.objlist
 | 
|---|
 | 91 | echo '  touch $(SOPHYAINCP)/SophyaConfInfo/'$slbobjlist >> $makname
 | 
|---|
| [2720] | 92 | rm -f $TMPDIR/exclude.sort
 | 
|---|
 | 93 | 
 | 
|---|
 | 94 | echo " " >> $makname
 | 
|---|
 | 95 | 
 | 
|---|
| [2739] | 96 | 
 | 
|---|
 | 97 | #--- Creation des dependances
 | 
|---|
 | 98 | set inc = `echo $SOPHYABASE/include | sed "s?//?/?g" | sed 's?/$??'`
 | 
|---|
| [2720] | 99 | set nomsys = `uname`
 | 
|---|
 | 100 | 
 | 
|---|
 | 101 | foreach f ( *.cc )
 | 
|---|
 | 102 |   grep -q '^'$f'$' $exclfile && continue
 | 
|---|
 | 103 |   gcc -MM -D$nomsys -I$inc $f  \
 | 
|---|
 | 104 |        | sed -e 's/.*\.o/\$(SOPHYAOBJP)&/'  \
 | 
|---|
 | 105 |        | sed -e 's?'$inc/'?$(SOPHYAINCP)?g'  >> $makname
 | 
|---|
| [2766] | 106 |   echo '        $(CXXCOMPILE) $(CXXTEMPFLG) -o $@ ' $f >> $makname
 | 
|---|
| [2720] | 107 |   echo ' ' >> $makname
 | 
|---|
 | 108 | end
 | 
|---|
 | 109 | 
 | 
|---|
 | 110 | foreach f ( *.c )
 | 
|---|
 | 111 |   grep -q '^'$f'$' $exclfile && continue
 | 
|---|
 | 112 |   gcc -MM -D$nomsys -I$inc $f  \
 | 
|---|
 | 113 |        | sed -e 's/.*\.o/\$(SOPHYAOBJP)&/'  \
 | 
|---|
 | 114 |        | sed -e 's?'$inc/'?$(SOPHYAINCP)?g' >> $makname
 | 
|---|
| [2766] | 115 |   echo '        $(CCOMPILE) -o $@ ' $f >> $makname
 | 
|---|
| [2720] | 116 |   echo ' ' >> $makname
 | 
|---|
 | 117 | end 
 | 
|---|
 | 118 | 
 | 
|---|
| [2739] | 119 | foreach f ( *.f )
 | 
|---|
 | 120 |   grep -q '^'$f'$' $exclfile && continue
 | 
|---|
 | 121 |   echo '$(SOPHYAOBJP)'$f:r'.o: '$f >> $makname
 | 
|---|
| [2766] | 122 |   echo '        $(FCOMPILE) -o $@ ' $f >> $makname
 | 
|---|
| [2739] | 123 |   echo ' ' >> $makname
 | 
|---|
 | 124 | end 
 | 
|---|
 | 125 | 
 | 
|---|
| [2734] | 126 | exit 0
 | 
|---|