source: CMT/v1r19/mgr/cmt_genmakeos9.sh@ 11

Last change on this file since 11 was 11, checked in by arnault, 21 years ago

Changing eol-style property

  • Property svn:eol-style set to native
File size: 7.9 KB
RevLine 
[2]1
2#set -x
3#set -v
4#echo $*
5
6#--------------------------------------------------
7build_deps ()
8#--------------------------------------------------
9# Build the dependency line.
10#
11# Globals :
12#
13# includes list of -I<path> preprocessor options
14# format_filter sed commands for cleaning up the cpp output
15# include_filter sed commands for formatting include statements
16#
17# Inputs :
18#
19# file Source file to apply
20#
21# Output :
22#
23# $(src)source $(inc)dep1 ...
24#
25#--------------------------------------------------
26{
27#
28# $1 = source file
29#
30
31 if test -d ../src ; then
32 srcdir=../src
33 else
34 srcdir=./
35 fi
36
37 file=$1
38 shift
39
40 # echo "makedepend ${includes} ${srcdir}/${file}" >x$$
41
42 touch t$$
43 eval makedepend ${includes} ${srcdir}/${file} -ft$$
44
45 line=`cat t$$ | egrep -v '^#' | sed -e "$format_filter" -e "$include_filter"`
46
47 /bin/rm -f t$$*
48
49 line=`echo '$(src)'${file}; echo ${line}`
50
51 line=`echo ${line} | sed 's#$(inc)#$(src)#'`
52
53 echo $line
54}
55
56#--------------------------------------------------
57genmake_package ()
58#--------------------------------------------------
59{
60
61 if test -d ../src ; then
62 srcdir=../src
63 else
64 srcdir=./
65 fi
66
67 if test -d ../mgr ; then
68 mgrdir=../mgr/
69 else
70 mgrdir=`pwd`/
71 fi
72
73 if test -d ../include ; then
74 incdir=../include
75 else
76 if test -d ../src ; then
77 incdir=../src
78 else
79 incdir=./
80 fi
81 fi
82
83 if test "$is_executable" = 1 ; then
84 title='Executable'
85 else
86 title='Package'
87 fi
88
89 #---- Define output file. -----------------------------------------
90
91 package=$1
92 shift
93
94 if test "$#" = 0 ; then
95 sources=`(cd ../src; ls ${PACKTARGET}*.c)`
96 else
97 sources="$*"
98 fi
99
100 echo $title $PACKTARGET
101
102 #---- Prepare the use context. ------------------------------------
103
104 uses=`${CMTROOT}/mgr/cmt includes`
105
106 includes="-I${incdir} ${uses} ${PACKINCLUDES}"
107
108 # echo "includes = [" ${includes} "]"
109
110 # Remove trailing back-slashes
111 # Remove target
112 # Substitute ../src/ and ../include/ by $(inc)
113
114 format_filter='s#\\##g
115s#[^:]*:##
116s#/usr/local/[^ ]*[ ]##g
117s#/usr/local/.*$##g
118s#/usr/include/[^ ]*[ ]##g
119s#/usr/include/.*$##g
120s#\.\./src/#$(inc)#g
121s#/src/#/OS9/#g'
122
123 # Substitute all "<path>/<package>/<version>/"
124 # by "$(<PACKAGE>ROOT)/"
125
126 include_filter=`${CMTROOT}/mgr/cmt filter_includes -quiet | sed 's#//#/#g'`
127
128 #
129 # Other initializations.
130 #
131
132 src='$(src)'
133 inc='$(inc)'
134 bin='$(bin)'
135 rels='$(rels)'
136 mgr='$(mgr)'
137
138 if test "$is_library" = 1 ; then
139 lib='$(lib)lib'${PACKTARGET}'.l'
140 libstamp='$('${PACKTARGET}'stamp)'
141 shlibstamp='$('${PACKTARGET}'shstamp)'
142 else
143 linkopts='$('${PACKTARGET}'linkopts)'
144 stamps='$('${PACKTARGET}'stamps)'
145 fi
146
147 unset ccs
148 unset CCs
149 unset yaccs
150 unset lexs
151 unset objs
152 unset protos
153 unset protonames
154 unset protostamps
155 unset cyaccs
156 unset clexs
157 unset os9sources
158 unset linkmacro
159 unset subdir
160
161 #
162 # Scan the sources.
163 #
164
165 for file in $sources ; do
166 echo $file | grep '^-s='
167 if test "$?" = "0" ; then
168 subdir=`echo $file | sed -e 's#^-s=##' -e 's#[/]*$#/#'`
169 else
170 suffix=`echo $file | sed 's/^.*\.//'`
171 name=`echo $file | sed 's/\..*//'`
172 oname="$name"
173
174 if test "$linkmacro" = "" ; then
175 if test "$suffix" = "f" ; then
176 linkmacro='$(flink)'
177 elif test "$suffix" = "F" ; then
178 linkmacro='$(flink)'
179 elif test "$suffix" = "c" ; then
180 linkmacro='$(clink)'
181 elif test "$suffix" = "C" ; then
182 linkmacro='$(cpplink)'
183 elif test "$suffix" = "cc" ; then
184 linkmacro='$(cpplink)'
185 elif test "$suffix" = "cxx" ; then
186 linkmacro='$(cpplink)'
187 else
188 linkmacro='none'
189 fi
190 fi
191
192 if test "$suffix" = "f" ; then
193 fs="$fs ${subdir}$file"
194 elif test "$suffix" = "F" ; then
195 fs="$fs ${subdir}$file"
196 elif test "$suffix" = "c" ; then
197 ccs="$ccs ${subdir}$file"
198 elif test "$suffix" = "C" ; then
199 CCs="$CCs ${subdir}$file"
200 elif test "$suffix" = "cc" ; then
201 CCs="$CCs ${subdir}$file"
202 elif test "$suffix" = "cxx" ; then
203 CCs="$CCs ${subdir}$file"
204 elif test "$suffix" = "y" ; then
205 yaccs="$yaccs ${subdir}$file"
206 name=`echo $name | sed 's/Parse$//'`
207 ccs="$ccs ${subdir}${name}Parse.c"
208 oname="${name}Parse"
209 elif test "$suffix" = "l" ; then
210 lexs="$lexs ${subdir}$file"
211 name=`echo $name | sed 's/Lex$//'`
212 ccs="$ccs ${subdir}${name}Lex.c"
213 oname="${name}Lex"
214 fi
215
216 obj="${rels}${oname}.r"
217
218 objs="$objs $obj"
219 fi
220
221 done
222
223 #-------------------------------------------
224 #
225 # Start the output.
226 #
227 #-------------------------------------------
228
229 d=`date`
230
231 cat <<END >$output
232
233#====================================
234# $title $PACKTARGET
235#
236# Generated $d by $USER
237#
238#====================================
239
240END
241
242 pobjs='$('${PACKTARGET}'OBJS)'
243
244 if test "$is_library" = 1 ; then
245
246 cat <<END >>${output}
247
248${PACKTARGET}OBJS = ${objs}
249
250${lib}: ${pobjs}
251 libgen -c -o=${lib} ${pobjs}
252 @echo ${PACKTARGET} : library ok
253
254END
255
256 else
257
258 cat <<END >>${output}
259
260${PACKTARGET}OBJS = ${objs}
261
262\$(bin)${PACKTARGET}: ${pobjs}
263 cc \$(LINKFLAGS) -olM=8 \$(CFLAGS) -fd=\$@ \$?
264
265END
266
267 fi
268
269 if test ! "$ccs" = "" ; then # C targets
270 for file in $ccs ; do
271 if test -f ${srcdir}/${file} ; then
272 echo Source file $file
273
274 line=`build_deps $file`
275
276 if test "$line" != "" ; then
277 source=`echo $line | sed 's/[ ].*//'`
278 suffix=`echo ${file} | sed 's/^.*\.//'`
279 target=`basename $source ".${suffix}" | sed 's#$(src)##'`
280
281 cat <<END >>$output
282
283\$(rels)${target}.r : ${line}
284 cc \$(CFLAGS) -e=as -fd=\$@ ${src}\$*.c
285
286END
287
288 fi
289
290 cat <<END >>$output
291
292END
293
294 else
295 echo "Warning : cannot build dependancies for file $file (not found)"
296 fi
297 done
298 fi
299
300 cat <<END >>$output
301
302END
303
304}
305
306#--------------------------------------------------
307usage ()
308#--------------------------------------------------
309{
310 echo "Usage :"
311 echo "> genmakeos9.sh <Package> [ options ] <source files> "
312 echo " options : -I <include-path>"
313 echo " -L <Library>"
314 echo " -E <Executable>"
315}
316
317#--------------------------------------------------
318#main ()
319#--------------------------------------------------
320
321argcount=$# #
322
323if test $argcount = 0 ; then
324 usage
325 exit 0
326fi
327
328package=$1
329shift
330
331c=`echo "$package" | grep '^[-]'`
332
333if test "$c" = "$package" ; then
334 usage
335 exit 0
336fi
337
338unset PACKINCLUDES
339unset is_executable
340unset PACKOS9
341PACKTARGET=$package
342
343while test "$#" -gt 0 ; do
344
345 command=$1
346 c=`echo "$command" | grep '^[-]'`
347
348 if test "$c" = "$command" ; then
349 #
350 # Here we have a command (starting with -)
351 #
352 shift
353 else
354 #
355 # The first non-command argument terminates the parsing.
356 #
357 break
358 fi
359
360 if test "$command" = "-I" ; then
361 #
362 # The include path is defined in the next argument.
363 #
364 include=$1
365 shift
366
367 PACKINCLUDES="$PACKINCLUDES -I$include"
368
369 unset include
370
371 elif test "$command" = "-L" ; then
372 is_library=1
373 is_executable=0
374 PACKTARGET=$1
375 shift
376 elif test "$command" = "-E" ; then
377 is_library=0
378 is_executable=1
379 PACKTARGET=$1
380 shift
381 elif test "$command" = "-OS9" ; then
382 PACKOS9=1
383 else
384 echo "Usage :"
385 echo "> genmakeos9.sh <Package> [ options ] <source files> "
386 echo " options : -I <include-path>"
387 echo " -L <Library>"
388 echo " -E <Executable>"
389 exit 0
390 fi
391done
392
393#
394# To get access to cpp
395#
396
397 system=`uname`
398 if test "$system" = "HP-UX" ; then
399 v=`uname -r | cut -d. -f2`
400 if test "$v" = 10 ; then
401 PATH=$PATH:/usr/ccs/lbin
402 else
403 PATH=$PATH:/lib
404 fi
405 unset v
406 elif test "$system" = "AIX" ; then
407 PATH=$PATH:/usr/ccs/lib
408 fi
409
410#---- Define old and output files. --------------------------------
411
412 if test -d ../mgr ; then
413 mgrdir=../mgr/
414 else
415 mgrdir=`pwd`/
416 fi
417
418 old=${mgrdir}${PACKTARGET}.os9make
419 backup=${old}sav
420 output=${old}new
421
422 genmake_package $package $*
423
424#---- Complete the operation --------------------------------------
425
426 if test -r $old ; then
427 mv $old $backup
428 fi
429
430 mv $output $old
431
432
433
Note: See TracBrowser for help on using the repository browser.