source: Sophya/trunk/SophyaLib/BuildMgr/mkmfprog@ 3988

Last change on this file since 3988 was 2766, checked in by ansari, 20 years ago

Gestion variable controle template CXXTEMPFLG - cmv+Reza 25/5/2005

  • Property svn:executable set to *
File size: 3.4 KB
RevLine 
[2739]1#!/bin/csh
2# Script de generation des Makefile/smakefile pour modules
3# programmes SOPHYA
4# C. Magneville / R. Ansari - Mai 2005
5#--- Cf commentaires dans mkmflib
6
7if ( ! $?TMPDIR ) set TMPDIR = /tmp
8set makname = "Makefile"
9unset targetdir
10
11if ( $#argv < 1) then
12 echo ' Usage: mkmfprog [-dev] [-sbase SOPHYABASE] ModuleName '
13 exit -1
14endif
15
16while ( $#argv > 0 )
17 if( "$1" == "-h" ) then
18 echo ' Usage: mkmfprog [-dev] [-sbase SOPHYABASE] ModuleName '
19 exit -1
20 else if ( "$1" == "-dev" ) then
21 set makname = "smakefile"
22 else if( "$1" == "-sbase" ) then
23 setenv SOPHYABASE $2
24 shift
25 else
26 set targetdir = $1
27 endif
28 shift
29end
30
31if( ! $?SOPHYABASE ) then
32 echo 'ERROR: (mkmfprog) define SOPHYABASE or use script arguments'
33 exit -2
34endif
35
36if( ! $?targetdir ) then
37 echo 'ERROR: (mkmfprog) No target module (directory) specified'
38 exit -3
39endif
40
41cd ../$targetdir
42
43if ( ! -f programs ) touch programs
44if ( ! -f usedslibs ) touch usedslibs
45
46echo "mkmfprog: Creating $targetdir/$makname"
47
48#--- La liste des programmes a compiler et de tous les .o
49set prog = ( `cat programs | awk '{print $1}'` )
50set obj =
51foreach f ( $prog )
52 set obj = ( `grep ^$f programs | awk -F"$f " '{print $2}'` $obj )
53end
54
55#--- Creation de smakefile
56rm -f $makname; touch $makname
57
58if ($makname == "smakefile") then
59 echo 'include $(SOPHYABASE)/include/sophyamake.inc' >> $makname
60else
61 echo 'include ../BuildMgr/sophyamake.inc' >> $makname
62endif
63echo ' ' >> $makname
64
65set dum = 'PROGS = '
66foreach f ( $prog )
67 set dum = ( $dum '$(SOPHYAEXEP)'$f )
68end
69echo $dum >> $makname
70echo ' ' >> $makname
71
72echo 'all: $(PROGS)' >> $makname
73echo ' ' >> $makname
74
75set dum =
76foreach f ( $obj )
77 set dum = ( $dum '$(SOPHYAOBJP)'$f )
78end
79echo 'clean:' >> $makname
80echo ' rm -f $(PROGS)' >> $makname
81echo ' rm -f '$dum >> $makname
82echo ' ' >> $makname
83
84#--- Les programmes
85unset sopok extok piok
86grep -q ^sophya usedslibs
87if( $status == 0 ) set sopok
88grep -q ^extsophya usedslibs
89if( $status == 0 ) set extok
90grep -q ^PI usedslibs
91if( $status == 0 ) set piok
92set lib = '$(SOPHYAALLSLBLIST)'
93if( $?sopok ) set lib = '$(SOPHYASLBLIST)'
94if( $?extok ) set lib = '$(SOPHYAEXTSLBLIST)'
95if( $?piok ) set lib = '$(SOPHYAALLSLBLIST)'
96
97foreach f ( $prog )
98 echo $f': $(SOPHYAEXEP)'$f >> $makname
99 echo ' echo $@ " done"' >> $makname
100 set oo = ( `grep ^$f programs | awk -F"$f " '{print $2}'` )
[2766]101 set dum
[2739]102 foreach fo ( $oo )
103 set dum = " $dum "'$(SOPHYAOBJP)'$fo
104 end
[2766]105 echo
106 echo '$(SOPHYAEXEP)'$f':' $dum >> $makname
107 echo ' $(CXXLINK) $(CXXTEMPFLG) -o $@' $dum $lib >> $makname
[2739]108 echo ' ' >> $makname
109end
110
111#--- Les dependances
112set inc = `echo $SOPHYABASE/include | sed "s?//?/?g" | sed 's?/$??'`
113set nomsys = `uname`
114
115foreach f ( *.cc )
116 grep -q "$f:r\.o" programs
117 if( $status != 0 ) continue
118 gcc -MM -D$nomsys -I$inc $f \
119 | sed -e 's/.*\.o/\$(SOPHYAOBJP)&/' \
120 | sed -e 's?'$inc/'?$(SOPHYAINCP)?g' >> $makname
[2766]121 echo ' $(CXXCOMPILE) $(CXXTEMPFLG) -o $@ ' $f >> $makname
[2739]122 echo ' ' >> $makname
123end
124
125foreach f ( *.c )
126 grep -q "$f:r\.o" programs
127 if( $status != 0 ) continue
128 gcc -MM -D$nomsys -I$inc $f \
129 | sed -e 's/.*\.o/\$(SOPHYAOBJP)&/' \
130 | sed -e 's?'$inc/'?$(SOPHYAINCP)?g' >> $makname
[2766]131 echo ' $(CCOMPILE) -o $@ ' $f >> $makname
[2739]132 echo ' ' >> $makname
133end
134
135foreach f ( *.f )
136 grep -q "$f:r\.o" programs
137 if( $status != 0 ) continue
138 echo '$(SOPHYAOBJP)'$f:r'.o: '$f >> $makname
[2766]139 echo ' $(FCOMPILE) -o $@ ' $f >> $makname
[2739]140 echo ' ' >> $makname
141end
142
143exit 0
Note: See TracBrowser for help on using the repository browser.