home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume19 / shape / part28 < prev    next >
Text File  |  1989-05-31  |  38KB  |  1,365 lines

  1. Subject:  v19i041:  A software configuration management system, Part28/33
  2. Newsgroups: comp.sources.unix
  3. Sender: sources
  4. Approved: rsalz@uunet.UU.NET
  5.  
  6. Submitted-by: Axel Mahler <unido!coma!axel>
  7. Posting-number: Volume 19, Issue 41
  8. Archive-name: shape/part28
  9.  
  10.  
  11.  
  12. #! /bin/sh
  13. # This is a shell archive.  Remove anything before this line, then unpack
  14. # it by saving it into a file and typing "sh file".  To overwrite existing
  15. # files, type "sh file -c".  You can also feed this as standard input via
  16. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  17. # will see the following message at the end:
  18. #        "End of archive 28 (of 33)."
  19. # Contents:  man/man1/shape.1
  20. # Wrapped by rsalz@papaya.bbn.com on Thu Jun  1 19:27:18 1989
  21. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  22. if test -f 'man/man1/shape.1' -a "${1}" != "-c" ; then 
  23.   echo shar: Will not clobber existing file \"'man/man1/shape.1'\"
  24. else
  25. echo shar: Extracting \"'man/man1/shape.1'\" \(34921 characters\)
  26. sed "s/^X//" >'man/man1/shape.1' <<'END_OF_FILE'
  27. X...
  28. X... Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
  29. X...  and U. Pralle
  30. X... 
  31. X... This software is published on an as-is basis. There is ABSOLUTELY NO
  32. X... WARRANTY for any part of this software to work correctly or as described
  33. X... in the manuals. We do not accept any liability for any kind of damage
  34. X... caused by use of this software, such as loss of data, time, money, or 
  35. X... effort.
  36. X... 
  37. X... Permission is granted to use, copy, modify, or distribute any part of
  38. X... this software as long as this is done without asking for charge, and
  39. X... provided that this copyright notice is retained as part of the source
  40. X... files. You may charge a distribution fee for the physical act of
  41. X... transferring a copy, and you may at your option offer warranty
  42. X... protection in exchange for a fee.
  43. X... 
  44. X... Direct questions to: Tech. Univ. Berlin
  45. X...              Wilfried Koch
  46. X...              Sekr. FR 5-6 
  47. X...              Franklinstr. 28/29
  48. X...              D-1000 Berlin 10, West Germany
  49. X... 
  50. X...              Tel: +49-30-314-22972
  51. X...              E-mail: shape@coma.uucp or shape@db0tui62.bitnet
  52. X... 
  53. X.TH SHAPE 1unibase  shape \n(dy.\n(mo.\n(yr
  54. X.SH NAME
  55. X\fRshape \- maintain, update, and regenerate program configurations from versions and variants of components.
  56. X.SH SYNOPSIS
  57. X.IP \fBshape\fR 0.5i
  58. X[\ \fB\-f \fIshapefile\fR\ ] [\ \fB\-R \fIrulename\fR\ ] [\ \fB\-confid \fItarget\fR\ ]
  59. X.br
  60. X[\ \fB\-rebuild \fIconfid\fR\ ] [\ \fB\- deikmnpqrsStb \fR\ ]
  61. X.br
  62. X[\ \fB\-version\fR\ ] [\ \fB\-expandall\fR\ ] [\ \fB\-expandnothing\fR\ ]
  63. X.br
  64. X[ \fItarget ...\fR\ ][\ \fImacro definition ...\fR\ ]
  65. X.SH DESCRIPTION
  66. X\fIShape\fR is an upward compatible extension of \fImake\fR, the standard
  67. Xtool on UNIX for maintaining program groups.
  68. X.PP
  69. XIn contrast to \fImake\fR, \fIshape\fR supports versions and variants
  70. Xof programs. \fIshape\fR supplies an integrated version control system
  71. Xbased on an implementation of an attributed file system.
  72. X.PP
  73. X.I
  74. Xshape
  75. Xexecutes a list of shell commands associated with each target defined
  76. Xin a transformation rule, usually to
  77. Xcreate or update a file of the same name. The
  78. X.I
  79. XShapefile
  80. Xcontains information about how to bring a target `up to date'
  81. Xwith respect to others on which it depends.
  82. X`up to date' has an extended meaning for
  83. X.I
  84. Xshape.
  85. X.I
  86. Xmake
  87. Xproduces a target if, after processing all of its dependencies, a target
  88. Xfile is found either to be missing, or to be older than any of its dependency
  89. Xfiles.
  90. X.I
  91. Xshape
  92. Xbuilds a target if a file is found either to be missing, or not to
  93. Xown the appropriate attributes.
  94. X.SH OPTIONS
  95. X.IP "\fB\-f\fI shapefile"\fR
  96. X\fIshape\fR executes commands in shapefile. If no -f option is present,
  97. X`Shapefile', `shapefile', `Makefile', and `makefile', respectively are
  98. Xtried in order. The contents of
  99. X.I
  100. Xshapefile,
  101. Xwhen present, overide the builtin rules. When more than one \fB-f\fR
  102. X.I
  103. Xshapefile
  104. Xargument pairs appear,
  105. X.I
  106. Xshape
  107. Xevaluates each
  108. X.I
  109. Xshapefile
  110. Xin the order listed (just as if they were run through
  111. X.I
  112. Xcat(1)).
  113. XA `-' as the
  114. X.I
  115. Xshapefile
  116. Xargument forces
  117. X.I
  118. Xshape
  119. Xto read from the standard input.
  120. X.IP "\fB\-R\fI selection rule name"\fR
  121. Xactivates a special selection rule.
  122. X.IP \fB\-d\fR
  123. XRun
  124. X.I
  125. Xshape
  126. Xin debug mode. Print out detailed information about files and attributes.
  127. X.IP \fB\-e\fR
  128. XThis option forces
  129. X.I
  130. Xshape to overide the values of macros defined within the
  131. X.I
  132. XShapefile using the value of environment variables.
  133. XThis option has a different effect than in
  134. X.I
  135. Xmake.
  136. XGenerally not all environment
  137. Xvariables are used as macro definitions within
  138. X.I
  139. Xshapefiles.
  140. XTo use environment variables as macro definitions
  141. X.I
  142. Xshape
  143. Xsupplies a special macro:
  144. X.I
  145. XIMPORT = <environment variable 1> ... <environment variable n>.
  146. XThis special macro forces
  147. X.I
  148. Xshape
  149. Xto use the <environment variables 1> to <environment variable n> for
  150. Xmacro definitions. If the -e option is set 
  151. X.I
  152. Xshape
  153. Xwill overide assignments within
  154. X.I
  155. Xshapefiles
  156. Xusing this environment variables.
  157. X.IP \fB\-i\fR
  158. X.I
  159. Xshape
  160. Xignores error codes returned by invoked commands.
  161. X.IP \fB\-k\fR
  162. XWhen a nonzero error status is returned by an invoked command, the work on
  163. Xthe current target is abandoned but
  164. X.I
  165. Xshape
  166. Xcontinues with other branches that do not depend on the target.
  167. X.IP \fB\-n\fR
  168. XNo execution made.
  169. X.I
  170. Xshape
  171. Xprints out commands, but does not execute them. Even lines beginning
  172. Xwith @ are printed. However if a command contains the $(MAKE) macro,
  173. Xthat line is always executed.
  174. X.IP \fB\-p\fR
  175. XPrint out the complete set of macro definitions, target descriptions,
  176. Xrule definitions, and rule section, respectively.
  177. X.IP \fB\-q\fR
  178. XQuestion mode.
  179. X.I
  180. Xshape
  181. Xreturns a zero or nonzero status code depending on whether or not
  182. Xthe target file is up to date.
  183. X.IP \fB\-r\fR
  184. XDo not use the implicit rules
  185. X.I
  186. Xshape
  187. Xsupplies by default. Implicit rules defined in the
  188. X.I
  189. Xshapefile
  190. Xremain in effect.
  191. X.IP \fB\-s\fR
  192. XSilent mode.
  193. X.I
  194. Xshape
  195. Xdoes not print out the command before executing them.
  196. X.IP \fB\-S\fR
  197. XUndo the effect of the -k option.
  198. X.IP \fB\-t\fR
  199. XTouch the targets (bringing them up to date) rather than performing
  200. Xthe commands listed in their rules. Use with care! This option has a
  201. Xdifferent effect than in
  202. X.I
  203. Xmake:
  204. Xtargets are up to date for
  205. X.I
  206. Xshape,
  207. Xif they own the appropriate attributes.
  208. X.IP \fB\-b\fR
  209. XThis option has no effect, but is present for compatibility reasons.
  210. X.IP \fB\-version\fR
  211. X.I
  212. Xshape
  213. Xprints out its current version info and the version info of the AFS used by
  214. X.I
  215. Xshape.
  216. X.IP "\fB\-confid \fItarget\fR"
  217. X.I
  218. X\shape
  219. Xgenerates a configuration identification document for
  220. X.I
  221. Xtarget.
  222. X.IP "\fB\-rebuild \fIcondid\fR"
  223. X.I
  224. Xshape
  225. Xuses the configuration identification document of a target
  226. Xgenerated and stored by
  227. X.I
  228. Xshape
  229. Xto rebuild that target.
  230. X.IP "\fB\-force \fItarget\fR"
  231. Xforces shape \fInot\fR to restore the target \fItarget\fR from the binary
  232. Xpool, even if the target exists with the appropriate attributes.
  233. X.IP "\fB\-expandall\fR"
  234. X.IP "\fB\-expandnothing\fR"
  235. XBefore using an instance of a component for production,
  236. X.I
  237. Xshape
  238. Xexpands macros cited within source files. All attributes, both
  239. Xstandard and user defined attributes,
  240. Xsupplied by the AFS can be cited by \fC$__name$\fR, where \fCname\fR
  241. Xis the name of an attribute. Per default this expansion is done
  242. Xonly for at least saved versions. If you enter the option -expandall
  243. Xvia the command line, expansion is done for busy files too. If you
  244. Xwant to suppress expansion completely, use the option -expandnothing.
  245. XNote that
  246. X.I
  247. Xshape
  248. Xassumes that activation of one of this options produces a different target.
  249. XSo don't be surprised about recompilations.
  250. X.IP "\fItarget ... \fR"
  251. XA list of target names can be passed to
  252. X.I
  253. Xshape
  254. Xvia the command line. If no target is given on the command line and 
  255. Xthe special target .DEFAULT is not defined within the
  256. X.I
  257. XShapefile, shape
  258. Xtries to produce the first target defined in the
  259. X.I
  260. XShapefile.
  261. X.IP "\fImacro definition\fR"
  262. XOn the command line you can define or redefine macros. Such a definition
  263. Xoverides a macro defined within the
  264. X.I
  265. XShapefile.
  266. X.RE
  267. X.SH "DESCRIPTION FILES"
  268. XA description file for \fIshape\fR contains:
  269. X.sp
  270. X.IP "\(bu macro definitions"
  271. X.IP "\(bu dependency information"
  272. X.IP "\(bu executable commands"
  273. X.IP "\(bu selection rules"
  274. X.IP "\(bu variant section"
  275. X.RE
  276. X.sp
  277. XComments are started with a '#'. The comment ends at the next newline
  278. Xcharacter. '#'s enclosed in quotes (single or double) are \fInot\fR considered
  279. Xas beginning of a comment.
  280. X.PP
  281. XIf the newline character of a line is escaped by a backslash ('\\')
  282. Xthe next line is considered as a continuation line. The backslash and
  283. Xthe newline character are replaced by a space.
  284. X.SH "TRANSFORMATION RULES"
  285. XA transformation rule gives \fIshape\fR information about the dependency
  286. Xrelationships
  287. Xbetween targets and dependents and commands to build a target. A transformation
  288. Xrule has the following format:
  289. X.sp
  290. X    \fCtarget... [:|::] [rule] [+variant...] [dependent...] [; command]
  291. X.br
  292. X        [command]
  293. X.br
  294. X        [command]
  295. X.br
  296. X        ...\fR
  297. X.sp
  298. XThe first line contains list of target names separated by
  299. Xspaces, terminated
  300. Xby a colon or a double colon. This may be followed by a dependent, or a
  301. Xlist of dependents that
  302. X.I
  303. Xshape
  304. Xchecks in this order. The first dependent may be the name of a selection
  305. Xrule. The following may be a list of variant names defined in the variant
  306. Xsection. To activate a variant, cite the variant names preceded by '+' signs.
  307. XOptionally, after a semicolon, a shell command may appear on the first
  308. Xline of the transformation rule.
  309. XThe following lines in the transformation rule have to begin with a TAB and
  310. Xcontain shell commands. These shell commands may be continued by escaping
  311. Xthe newline character with a backslash ('\\'). Such continuation
  312. Xlines must also start with a TAB.
  313. X.PP
  314. XThe first line that does not start with a TAB or a '#' indicates the
  315. Xend of the transformation rule.
  316. X.PP
  317. XTo build a target
  318. X.I
  319. Xshape
  320. Xexpands the macros, strips off the TABs at the beginning of the command
  321. Xlines and passes each command to a shell for execution.
  322. X.PP
  323. XCommands may be preceeded with one or two special characters:
  324. X.IP \-
  325. X.I
  326. Xshape
  327. Xignores any nonzero error code returned by a command line
  328. Xfor which the first character is a minus sign. The minus sign is
  329. Xnot passed to the shell. When a command returns a nonzero return status
  330. X.I
  331. Xshape
  332. Xnormally terminates, unless the \fB-i\fR or \fB-k\fR options, or
  333. Xthe \fB.IGNORE\fR special target is in effect.
  334. X.IP @
  335. XIf the first character of a command is a '@'
  336. X.I
  337. Xshape
  338. Xdoes not print the command before executing it. The '@' is not passed
  339. Xto the shell.
  340. X.IP "\@\-"
  341. XIf the first two non-TAB characters are `@\-'
  342. X.IP
  343. Xshape
  344. Xboth ignores nonzero return codes and suppresses the printing of the
  345. Xcommand line.
  346. X.RE
  347. X.SH "IMPLICIT RULES"
  348. XWhen a target does not appear in any targetlist of a transformation rule
  349. X.I
  350. Xshape
  351. Xtries to find a so-called
  352. X.I
  353. Ximplicit rule,
  354. Xto build this target. An implicit rule has the following format:
  355. X.sp
  356. X    \fC%[.x] ... : %.y ... [: +(macro-name) ...]
  357. X.br
  358. X        [command]
  359. X.br
  360. X        [command]
  361. X.br
  362. X        ...\fR
  363. X.sp
  364. X.PP
  365. XThe syntax of these rules is an extension of
  366. X.I
  367. Xmake's
  368. Xrules specification formalism. The first line of such a rule contains
  369. Xone ore more abstract targets (a percent sign followed by an optional suffix)
  370. Xfollowed by a double colon, one or more abstract dependencies, and after
  371. Xa second colon an optional list of special macro citations.
  372. X.PP
  373. XThe special macro citation \fC+(macro-name)\fR causes
  374. X.I
  375. Xshape
  376. Xto expand this citation by the complete macro definition
  377. X.I
  378. Xname = value.
  379. XThe targets that are produced with such an implicit rule inherit the
  380. Xmacro definitions cited in this rule. This mechanism can be used
  381. Xto attribute the targets for example with the compilation flags that were
  382. Xin effect or the version of the compiler used to produce the target.
  383. XSo if a user supplies an implicit rule in a
  384. X.I
  385. XShapefile
  386. Xhe should cite at least all macros used in this rule.
  387. X.PP
  388. XNote that implicit
  389. X.I
  390. Xmake
  391. Xrules are still supplied by
  392. X.I
  393. Xshape.
  394. X.SH "PREDEFINED IMPLICIT RULES"
  395. XThe following is a list of predefined implicit rules which are always
  396. Xavailable unless they are not explicitly overwritten or canceled within the
  397. Xdescription file.
  398. X.sp 2
  399. X.KS
  400. X.br
  401. X    Compile C programs and add build archive library
  402. X.br
  403. X        \fC%.a : %.c : +(CC) +(CFLAGS) +(vflags)
  404. X.br
  405. X            $(CC) -c $(CFLAGS) $(vflags) %.c
  406. X.br
  407. X            ar rv %.a %.o
  408. X.br
  409. X            rm -f %.o\fR
  410. X.KE
  411. X.sp 2
  412. X.KS
  413. X.br
  414. X    Generate C programs from Lex grammar
  415. X.br
  416. X        \fC%.c : %.l : +(LEX) +(LFLAGS)
  417. X.br
  418. X            $(LEX) $(LFLAGS) %.l
  419. X.br
  420. X            mv lex.yy.c %.c\fR
  421. X.KE
  422. X.sp 2
  423. X.KS
  424. X.br
  425. X    Generate C programs form Yacc grammar
  426. X.br
  427. X        \fC%.c : %.y : +(YACC) +(YFLAGS)
  428. X.br
  429. X            $(YACC) $(YFLAGS) %.y
  430. X.br
  431. X            mv y.tab.c %.c\fR
  432. X.KE
  433. X.sp 2
  434. X.KS
  435. X.br
  436. X    Generate C program form Lex grammar, the compile with C compiler
  437. X.br
  438. X        \fC%.o : %.l : +(LEX) +(LFLAGS) +(CC) +(CFLAGS) +(vflags)
  439. X.br
  440. X            $(LEX) $(LFLAGS) %.l
  441. X.br
  442. X            $(CC) $(CFLAGS) $(vflags) -c lex.yy.c
  443. X.br
  444. X            rm lex.yy.c
  445. X.br
  446. X            mv lex.yy.o %.o\fR
  447. X.KE
  448. X.sp 2
  449. X.KS
  450. X.br
  451. X    Generate C program form Yacc grammar, the compile with C compiler
  452. X.br
  453. X        \fC%.o : %.y : +(YACC) +(YFLAGS) +(CC) +(CFLAGS) +(vflags)
  454. X.br
  455. X            $(YACC) $(YFLAGS) %.y
  456. X.br
  457. X            $(CC) $(CFLAGS) $(vflags) -c y.tab.c
  458. X.br
  459. X            rm y.tab.c
  460. X.br
  461. X            mv y.tab.o %.o\fR
  462. X.KE
  463. X.sp 2
  464. X.KS
  465. X.br
  466. X    Assembling assembler programs
  467. X.br
  468. X        \fC%.o : %.s : +(AS) +(ASFLAGS) 
  469. X.br
  470. X            t$(AS) $(ASFLAGS) -o %.o %.s\fR
  471. X.KE
  472. X.sp 2
  473. X.KS
  474. X.br
  475. X    Compiling Ratfor programs
  476. X.br
  477. X        \fC%.o : %.r +(FC) +(RFLAGS) +(FFLAGS)
  478. X.br
  479. X            $(FC) $(RFLAGS) $(FFLAGS) -c %.r\fR
  480. X.KE
  481. X.sp 2
  482. X.KS
  483. X.br
  484. X    Compiling Fortran programs
  485. X.br
  486. X        \fC%.o : %.F : +(FC) +(FFLAGS)
  487. X.br
  488. X            $(FC) $(FFLAGS) -c %.F\fR
  489. X.KE
  490. X.sp 2
  491. X.KS
  492. X.br
  493. X    Compiling Fortran programs
  494. X.br
  495. X        \fC%.o : %.f : +(FC) +(FFLAGS) 
  496. X.br
  497. X            $(FC) $(FFLAGS) -c %.f\fR
  498. X.KE
  499. X.sp 2
  500. X.KS
  501. X.br
  502. X    Compiling a Modula definition module
  503. X.br
  504. X        \fC%.sym : %.def : +(M2C) +(M2FLAGS)
  505. X.br
  506. X            $(M2C) $(M2FLAGS) %.def\fR
  507. X.KE
  508. X.sp 2
  509. X.KS
  510. X.br
  511. X    Compiling Modula programs
  512. X.br
  513. X        \fC%.o : %.mod : +(M2C) +(M2FLAGS)
  514. X.br
  515. X            $(M2C) $(M2FLAGS) %.o\fR
  516. X.KE
  517. X.sp 2
  518. X.KS
  519. X.br
  520. X    Compiling Pascal programs
  521. X.br
  522. X        \fC%.o : %.p : +(PC) +(PFLAGS)
  523. X.br
  524. X            $(PC) $(PFLAGS) -c %.o\fR
  525. X.KE
  526. X.sp 2
  527. X.KS
  528. X.br
  529. X    Compiling C programs
  530. X.br
  531. X        \fC%.o : %.c +(CC) +(CFLAGS) +(vflags)
  532. X.br
  533. X            $(CC) $(CFLAGS) $(vflags) -c %.c\fR
  534. X.KE
  535. X.sp 2
  536. X.KS
  537. X.br
  538. X    Copy a shell script and make it executable
  539. X.br
  540. X        \fC% : %.sh
  541. X.br
  542. X            cat %.sh >%; chmod +x %\fR
  543. X.KE
  544. X.sp 2
  545. X.KS
  546. X.br
  547. X    Compile and link Ratfor programs
  548. X.br
  549. X        \fC% : %.r : +(FC) +(RFLAGS) +(FFLAGS) +(LDFLAGS)
  550. X.br
  551. X            $(FC) $(RFLAGS) $(FFLAGS) $(LDFLAGS) %.r -o %\fR
  552. X.KE
  553. X.sp 2
  554. X.KS
  555. X.br
  556. X    Compile and link Fortran programs
  557. X.br
  558. X        \fC% : %.F : +(FC) +(FFLAGS) +(LDFLAGS)
  559. X.br
  560. X            $(FC) $(FFLAGS) $(LDFLAGS) %.F -o %\fR
  561. X.KE
  562. X.sp 2
  563. X.KS
  564. X.br
  565. X    Compile and link Fortran programs
  566. X.br
  567. X        \fC% : %.f : +(FC) +(FFLAGS) +(LDFLAGS)
  568. X.br
  569. X            $(FC) $(FFLAGS) $(LDFLAGS) %.f -o %\fR
  570. X.KE
  571. X.sp 2
  572. X.KS
  573. X.br
  574. X    Compile and link Pascal programs
  575. X.br
  576. X        \fC% : %.p : +(PC) +(PFLAGS) +(LDFLAGS)
  577. X.br
  578. X            $(PC) $(PFLAGS) $(LDFLAGS) %.p -o %\fR
  579. X.KE
  580. X.sp 2
  581. X.KS
  582. X.br
  583. X    Compile and link Modula programs
  584. X.br
  585. X        \fC% : %.mod : +(M2C) +(M2FLAGS) +(LDFLAGS)
  586. X.br
  587. X            $(M2C) $(M2FLAGS) $(LDFLAGS) %.mod -e % -o %\fR
  588. X.KE
  589. X.sp 2
  590. X.KS
  591. X.br
  592. X    Compile and link C programs
  593. X.br
  594. X        \fC% : %.c : +(CC) +(CFLAGS) +(LDFLAGS) +(vflags)
  595. X.br
  596. X            $(CC) $(CFLAGS) $(vflags) $(LDFLAGS) %.c -o %\fR
  597. X.KE
  598. X.sp 2
  599. X.SH "MACRO DEFINITIONS"
  600. XA macro definition has the form:
  601. X.br
  602. X        \fCname = value\fR
  603. X.PP
  604. XA line in the description file which contains an equal sign is considered
  605. Xas a macro definition. A macro definition must not be proceeded by a
  606. Xcolon or a tab. The name of a macro is a string consisting of
  607. Xletters, digits, underscore or minus sign. The string of characters
  608. Xfollowing the equal sign (leading blanks and tabs are skipped) is assigned
  609. Xto the name. The following are valid macro definitions:
  610. X.sp
  611. X.br
  612. X    \fCINCLFILES = /usr/include/stdio.h:/usr/include/sys/time.h
  613. X.br
  614. X    100X = this is a macro
  615. X.br
  616. X    X = 1
  617. X.br
  618. X    SRC-NAMES = main.c sub1.c sub2.c main.h
  619. X.br
  620. X    COMPILE_FLAGS =\fR
  621. X.sp
  622. XThe last definition assigns the empty string to \fCCOMPILE_FLAGS\fR. 
  623. XEvery macro that is never explicitly defined has the empty string as
  624. Xits value.
  625. X.PP
  626. XMacros can also be defined via the command line; for example:
  627. X.br
  628. X    \fCshape blubber "CFLAGS=-pg -DDEBUG"\fR
  629. X.br
  630. XThe macro definition \fCCFLAGS=-pg -DDEBUG\fR assigns the
  631. Xvalue \fC-pg -DDEBUG\fR to the macro \fCCFLAGS\fR.
  632. X.SH "MACRO CITATIONS"
  633. XA macro can be cited within the
  634. X.I
  635. Xshapefile
  636. Xby preceeding the name by a dollar sign. If the macro name is longer than
  637. Xone character it must be enclosed in parentheses, either '(' and ')'
  638. Xor '{' and '}'.
  639. X.PP
  640. XThe following are valid macro citations:
  641. X.br
  642. X    \fC$(CFLAGS)
  643. X.br
  644. X    $7
  645. X.br
  646. X    ${SOURCE-FILES}
  647. X.br
  648. X    $(X)
  649. X.br
  650. X    $X\fR
  651. X.br
  652. XThe last two citations are identical. The citation
  653. X.br
  654. X    \fC$$\fR
  655. X.br
  656. Xwill be replaced by a single dollar sign.
  657. X.SH "PREDEFINED MACROS"
  658. XIn order to have a parametrization of the predefined implicit rules,
  659. X.I
  660. Xshape
  661. Xsupplies a number of macros. So it is possible to redefine for example
  662. Xspecial compilation flags without defining a new rule.
  663. X.PP
  664. XFor example, the command for the compilation of a C source file is
  665. X\fC$(CC) -c $(CFLAGS)\fR. The default values of the macros used are \fCcc\fR
  666. Xand an empty string, resulting in the command \fCcc -c\fR. By redefining
  667. X\fC$(CC)\fR to \fCgcc\fR (by adding a macro definition \fCCC=gcc\fR
  668. Xto the description
  669. Xfile) would cause \fCgcc\fR to be used for all C compilations performed by the
  670. Ximplicit rule. By supplying a macro definition \fCCFLAGS=-DBSD4.3 -pg\fR
  671. Xwithin the \fIshapefile\fR the user can pass the C preprocessor
  672. Xoption \fC-DBSD4.3\fR and the compilation flag \fC-pg\fR to each compilation.
  673. X.PP
  674. XThe following is a list of the predefined macros, the default
  675. Xvalues, and a short description, respectively. If after the `=' sign
  676. Xno value is given, there is no
  677. Xdefault value for that macro.
  678. X.sp
  679. X.br
  680. X    \fCSHAPEFLAGS=\fR        Flags for \fIshape\fR
  681. X.br
  682. X    \fCSHAPE=shape\fR        The program \fIshape\fR itself
  683. X.br
  684. X    \fCASFLAGS=\fR        Flags for the assembler
  685. X.br
  686. X    \fCAS=as\fR            Program for doing assembly
  687. X.br
  688. X    \fCRFLAGS=\fR        Flags for the Fortran compiler for Ratfor programs
  689. X.br
  690. X    \fCFFLAGS=\fR        Flags for the Fortran compiler
  691. X.br
  692. X    \fCFC=f77\fR        Program for compiling Fortran programs
  693. X.br
  694. X    \fCM2FLAGS=\fR        Flags for the Modula2 compiler
  695. X.br
  696. X    \fCM2C=m2c\fR        Program for compiling Modula2 programs
  697. X.br
  698. X    \fCPFLAGS=\fR        Flags for the Pascal compiler
  699. X.br
  700. X    \fCPC=pc\fR            Program for compiling Pascal programs
  701. X.br
  702. X    \fCCFLAGS=\fR        Flags for the C compiler
  703. X.br
  704. X    \fCCC=cc\fR            Program for compiling C programs
  705. X.br
  706. X    \fCLDFLAGS=\fR        Flags for the linker
  707. X.br
  708. X    \fCLD=ld\fR            Program to link programs
  709. X.br
  710. X    \fCLFLAGS=\fR        Flags for the lexical analyzer lex
  711. X.br
  712. X    \fCLEX=lex\fR        Program to turn Lex grammars into C or Ratfor programs
  713. X.br
  714. X    \fCYFLAGS=\fR        Flags for yacc
  715. X.br
  716. X    \fCYACC=yacc\fR        Program to turn Yacc grammars into C programs
  717. X.br
  718. X    \fCMAKE=make\fR        The program \fImake\fR
  719. X.br
  720. X    \fCMAKEFLAGS=b\fR        Flags for \fImake\fR
  721. X.br
  722. X    \fCvflags=\fR        Compilation flags in variant section
  723. X.br
  724. X    \fCvpath=\fR        Extension of search path in variant section
  725. X.PP
  726. XAnother predefined macro is \fCVPATH\fR. The \fCVAPTH\fR macro can be set
  727. Xto a list of directories separated by colons. Usually
  728. X.I
  729. Xshape
  730. Xlooks for a file in the current working directory. If the \fCVPATH\fR
  731. Xmacro is defined the search is extended to the directories of
  732. Xthe \fCVPATH\fR list.
  733. XIn contrast the extension of the search path within the variant section
  734. Xvia the \fCvpath\fR macro forces
  735. X.I
  736. Xshape
  737. Xfirst to look for a file in the directories of \fCvpath\fR list.
  738. X.SH "SPECIAL MACROS"
  739. XBefore shape executes any command, some certain internally maintained
  740. Xmacros are expanded. Any occurence of one of the following four macros in
  741. Xcommand strings is replaced by an appropriate value:
  742. X.br
  743. X    \fIcitation    value\fR
  744. X.sp
  745. X    \fC$@\fR    full name of the current target
  746. X.br
  747. X    \fC$?\fR    list of names of the dependents that were found to be out of date
  748. X.br
  749. X    \fC$<\fR    name of the file, that caused the action
  750. X.br
  751. X    \fC$*\fR    prefix shared by current and the dependent filenames
  752. X.br
  753. XWithin the rule section
  754. X.I
  755. Xshape
  756. Xsupplies a special macro, that is valid for citation within the
  757. X.I
  758. Xmsg
  759. Xpredicate in order to have a trace facility:
  760. X.br
  761. X    citation    value
  762. X.sp
  763. X    \fC$+\fR    name of the file that is currently checked for certain attributes.
  764. X.SH "SPECIAL TARGETS"
  765. XWithin
  766. X.I
  767. XShapefiles
  768. Xthe following special targets have a special meaning:
  769. X.IP .DEFAULT:
  770. XIf a target is to be produced, but there are no explicit commands or a
  771. Xrelevant built-in rules, the commands associated with this target are
  772. Xused. If in this case .DEFAULT is not defined
  773. X.I
  774. Xshape
  775. Xprints an error message and stops.
  776. X.IP .IGNORE:
  777. XCauses
  778. X.I
  779. Xshape
  780. Xto ignore non zero return codes of invoked commands. Equivalent to
  781. Xthe \fB-i\fR option.
  782. X.IP .SILENT:
  783. XSilent command execution. The command lines are not printed before
  784. Xexecution. Equivalent to the \fB-s\fR option.
  785. X.IP .BPOOL:
  786. XIf this target is defined within the \fIShapefile\fR only the dependents
  787. Xassociatet with this target are stored into the binary pool. If no dependents
  788. Xare present no derived object will be stored into the binary pool at all.
  789. X.IP .NOBPOOL:
  790. XDependents associated with this target are \fInot\fR stored into the
  791. Xbinary pool.
  792. X.PP
  793. XIf both .BPOOL and .NOBPOOL are defined only the difference set
  794. Xof both dependency lists will be stored into the binary pool.
  795. X.SH "SELECTION RULES"
  796. XIn order to select a concrete instance of a component to build a target
  797. X.I
  798. Xshape
  799. Xsupplies
  800. X.I
  801. Xselection rules.
  802. X.PP
  803. XSelection rules can be defined within a special section of a
  804. X.I
  805. Xshapefile.
  806. XThis section starts with the special comment line
  807. X.br
  808. X    \fC#% RULE-SECTION\fR
  809. X.br
  810. Xand ends with the comment line
  811. X.br
  812. X    \fC#% END-RULE-SECTION\fR
  813. X.br
  814. XA selection rule is a named sequence of \fIalternatives\fR, 
  815. Xseparated by semicolons, constituting a logical OR expression. Each
  816. Xalternative consists of a sequence of \fIpredicates\fR, separated
  817. Xby commas forming a logical AND expression.
  818. X.PP
  819. XThe first predicate in an alternative is a pattern against which the name
  820. Xof the sought component is matched. The other predicates consist of
  821. Xpredefined Boolean functions (with side effects) with one or two parameters.
  822. X.PP
  823. XThe first predicate serves to get a set of instances of components, the other
  824. Xfurther reduce the set to exactly one instance. If the reduction to exactly
  825. Xone instance is not possible the alternative is failed.
  826. XIn detail
  827. X.I
  828. Xshape
  829. Xsupplies the following standard predicates:
  830. X.KS
  831. X.br
  832. X    \fCattr(name,value)\fR
  833. X.br
  834. X    \fCattrnot(name,value)\fR
  835. X.br
  836. X    \fCattrlt(name,value)\fR
  837. X.br
  838. X    \fCattrgt(name,value)\fR
  839. X.br
  840. X    \fCattrle(name,value)\fR
  841. X.br
  842. X    \fCattrge(name,value)\fR
  843. X.br
  844. X    \fCattrmin(name)\fR
  845. X.br
  846. X    \fCattrmax(name)\fR
  847. X.br
  848. X.KE
  849. XThe predicate \fCattr\fR
  850. Xselects all instances of a component whose attribute \fCname\fR
  851. Xhas the value \fCvalue, attrlt\fR
  852. Xall instances whose attribute \fCname\fR
  853. Xhas a value less than \fCvalue.\fR
  854. XThe predicate \fCattrmax\fR
  855. Xselects the instance of a component
  856. Xwith the maximum value of the attribute \fCname,\fR
  857. Xand so on.
  858. X.PP
  859. XA pseudo predicate - in order to have a trace facility - is
  860. X.br
  861. X    \fCmsg(string)\fR.
  862. X.PP
  863. XIf 
  864. X.I
  865. Xshape
  866. Xenters an alternative which contains this predicate
  867. X.I
  868. Xshape
  869. Xprints the string \fCstring\fR to stdout.
  870. XThe argument \fCname\fR in a predicate may currently be one
  871. Xof the following standard attributes supplied by the AFS:
  872. X.br
  873. X    \fCgeneration\fR
  874. X.br
  875. X    \fCrevision\fR
  876. X.br
  877. X    \fCstate\fR            where value of \fCstate\fR is \fCbusy, saved, proposed,
  878. X.br
  879. X                published, accessed,\fR or \fCfrozen,\fR resp.
  880. X.br
  881. X    \fCauthor\fR
  882. X.br
  883. X    \fCversion\fR
  884. X.br
  885. X    \fCvariant\fR
  886. X.br
  887. X    \fCsyspath\fR
  888. X.br
  889. X    \fChost\fR
  890. X.PP
  891. XFurthermore it is possible to use any user defined attribute in in the
  892. Xrule section for the selection of a certain instance of a component.
  893. X.SH "VARIANT SECTION"
  894. XThe variant section has to start with the special comment line
  895. X.br
  896. X    \fC#% VARIANT-SECTION\fR
  897. X.br
  898. Xand to end with the line
  899. X.br
  900. X    \fC#% END-VARIANT-SECTION\fR
  901. X.br
  902. XThe variant section consists
  903. X.I
  904. Xvclass
  905. Xand
  906. X.I
  907. Xvariant
  908. Xdefinitions.
  909. XA variant definition consists of a variant name followed by a colon.
  910. XIn the following lines (they have to start with a TAB)
  911. Xarbitrary macro definitions may follow:
  912. X.br
  913. X    \fCname:
  914. X.br
  915. X        name1 = value1
  916. X.br
  917. X        name2 = value2
  918. X.br
  919. X        ...\fR
  920. X.br
  921. XA vclass definition has the form:
  922. X.br
  923. X    \fCvclass name ::= (variant1, variant2, ...),\fR
  924. X.br
  925. Xwhere \fCvariant1, variant2, ...\fR are names of variants which are
  926. X.I
  927. Xnot
  928. Xcompatible. During the selection of instances of components
  929. X.I
  930. Xshape
  931. Xchecks, weather all active variants are not part of the same
  932. Xvclass.
  933. XWhen a variant is activated
  934. X.I
  935. Xmacros defined by the variant in the variant section are used for the
  936. Xproduction of a special target rather than the globally defined macros. 
  937. XFurthermore
  938. X.I
  939. Xshape
  940. Xsupplies two special macros:
  941. X.br
  942. X    \fCvflags\fR
  943. X.br
  944. Xand
  945. X.br
  946. X    \fCvpath\fR.
  947. X.br
  948. XWith the macro \fCvpath\fR it is possible
  949. Xto extend the regular VPATH feature
  950. Xof make and temporarily. In this way
  951. X.I
  952. Xshape
  953. Xcan identify variants of components that are located
  954. Xphysically at different places. The \fCvflags\fR macro
  955. Xallows to define additional flags passed to tools, for example to
  956. Xcompile a program conditionally.
  957. XOne or more variants are activated within transformation rules: the
  958. Xsecond, third, forth ....
  959. Xdependent (or the first, second, third ... if no selection rule is present)
  960. Xcan be a plus sign followed by a variant name.
  961. X.SH "CONFIGURATION IDENTIFICATION DOCUMENT"
  962. XInvocation of \fIshape\fR with the command line option \fI-confid
  963. Xtargetname\fR
  964. Xcauses \fIshape\fR to produce a configuration identification
  965. Xdocument (confid) for
  966. Xthis target. The confid is stored in a file \fItargetname.cid\fR and is
  967. Xsimply a shapefile that contains all necessary information to rebuild this
  968. Xtarget. An existing file \fItargetname.cid\fR will be overwritten. So if you
  969. Xwant to keep a confid, you have to save it.
  970. X.PP
  971. XConfids serve to store information about how a target is to be produced
  972. Xrather than the target itself. Note that confids that contain
  973. Xnon-frozen versions of components are \fInot\fR an exact description of a
  974. Xcertain
  975. Xtarget, because these versions still can be changed (not the contents of saved
  976. Xversions,
  977. Xbut you can - for example - change the state or
  978. Xuser-defined attributes). If such versions
  979. Xare part of a confid, \fIshape\fR prints out a warning during generation of
  980. Xthis confid
  981. Xand generates the statement \fImsg("warning confid contains <state> version
  982. Xfor <component>")\fR in the rule section of the confid.
  983. X.SH "INCLUDE MECHANISM"
  984. XIf the string `\fIinclude\fR' appears as the first seven letters of a line
  985. Xfollowed by TABs or BLANKs, the string that follows is taken as a filename.
  986. X.I
  987. Xshape
  988. Xsuspends then reading the current description file and reads another file
  989. Xbefore continuing.
  990. X.PP
  991. XThe
  992. X.I
  993. Xinclude
  994. Xfeature makes it more comfortable to use a common set of macro definitions
  995. Xor implicit rule definitions for several programs handled by individual
  996. Xdescription files in various directories.
  997. X.PP
  998. XSecondly it is possible to define a (pragmatic) project environment.
  999. X.SH "DERIVED OBJECT POOL"
  1000. XIn order to avoid unnecessary rebuildings - usually recompilations -
  1001. X.I shape
  1002. Xuses the binary pool feature supported by the attributed file system.
  1003. XAfter having built a target which is actually a file system object and
  1004. Xnot a pseudo target
  1005. X.I
  1006. Xshape
  1007. Xsaves this object into the binary pool. A special user defined attribute
  1008. Xis added to both the object in the binary pool and the current file system
  1009. Xobject. This attribute contains information about the attributes of
  1010. Xthe source object(s) which was (were) necessary to build this target.
  1011. XNote that the object also inherits the macro definitions which are cited in
  1012. Ximplicit rules after the second colon (the +(macros)).
  1013. XChanging for example the macro definition for CFLAGS will lead to a
  1014. Xcompilation of all C source files, that have not yet been build with
  1015. Xthese compile flags. So it is possible for
  1016. X.I
  1017. Xshape
  1018. Xto recognize if a target has already been done and can be restored from the
  1019. Xbinary pool.
  1020. X.SH EXAMPLE
  1021. XThe following is a simple example for a
  1022. X.I
  1023. XShapefile
  1024. Xthat shows basically the features of
  1025. X.I
  1026. Xshape.
  1027. X.PP
  1028. XSuppose we have a program
  1029. X.I
  1030. Xxyz
  1031. Xconsisting of six C source files and three header files. The sources are
  1032. Xwritten by two developers: \fCa.c, b.c, c.c\fR by myself
  1033. Xand \fCxxx.c, yyy.c, zzz.c\fR
  1034. Xby someone else. In the
  1035. X.I
  1036. XShapefile
  1037. Xwe have several macro definitions describing which components
  1038. Xare necessary for the building of the program \fCxyz: MY-SOURCES,
  1039. XMY-OBJECTS, MY-INCL-FILE, MY-SPECIAL-INCL-FILE, OTHER-SOURCES,
  1040. XOTHER-OBJECTS, and OTHER-INCL-FILES\fR, respectively.
  1041. X.PP
  1042. XFor the building of the program an explicit rule is given including
  1043. Xthe dependencies of
  1044. X.I
  1045. Xxyz
  1046. Xand the object files and a shell script describing how to link the program.
  1047. XFurthermore we have three lines describing the dependencies of the objects
  1048. Xand the header files.
  1049. X.PP
  1050. XDuring development and testing I usually want to use
  1051. Xmy current working versions and published versions from the other
  1052. Xdeveloper. This is formulated within the
  1053. X.I
  1054. Xrule section.
  1055. XWe have two different rules: the first one - \fCexperimental\fR - will be used
  1056. Xfor local testing, the second one - \fCrelease\fR - will cause the
  1057. Xconfiguration
  1058. Xof the program using only at least published versions.
  1059. X.PP
  1060. XIn the
  1061. X.I
  1062. Xvariant section
  1063. Xthree different variants are defined: \fCexp, rel, and gnu.\fR
  1064. XThe first two variant definitions cause
  1065. X.I
  1066. Xshape
  1067. Xto use special compile flags for the production. The third one (\fCgnu\fR)
  1068. Xoverrides the default definition of the macro CC to gcc. If this
  1069. Xvariant is activated
  1070. X.I
  1071. Xshape
  1072. Xwill use the GNU C compiler instead of the standard C compiler for
  1073. Xcompilation. A certain variant is activated by supplying a macro
  1074. Xdefinition via the command line (e.g. \fCVARIANT=gnu\fR), which
  1075. Xwill override the default definition \fCVARIANT=exp\fR.
  1076. X.sp
  1077. X.KS
  1078. X    \fC###############################################
  1079. X.br
  1080. X    #    SHAPEFILE for the program XYZ           #
  1081. X.br
  1082. X    ###############################################
  1083. X.sp 2
  1084. X    MY-SOURCES = a.c b.c c.c
  1085. X.br
  1086. X    MY-OBJECTS = a.o b.o c.o
  1087. X.br
  1088. X    MY-INCL-FILE = defs.h
  1089. X.br
  1090. X    MY-SPECIAL-INCL-FILE = c.h
  1091. X.br
  1092. X    OTHER-SOURCES = xxx.c yyy.c zzz.c
  1093. X.br
  1094. X    OTHER-OBJECTS = xxx.o yyy.o zzz.o
  1095. X.br
  1096. X    OTHER-INCL-FILES  = globaldefs.h
  1097. X.sp 2
  1098. X    #
  1099. X.br
  1100. X    # Definition of default selection rule and variant
  1101. X.br
  1102. X    #
  1103. X.br
  1104. X    RULE = experimental
  1105. X.br
  1106. X    VARIANT = exp
  1107. X.br
  1108. X    xyz : $(RULE) +$(VARIANT) $(MY-OBJECTS $(OTHER-OBJECTS)
  1109. X.br
  1110. X        cc -o xyz $(MY-OBJECTS) $(OTHER-OBJECTS)
  1111. X.br
  1112. X        @echo done.
  1113. X.sp 2
  1114. X.br
  1115. X    $(MY-OBJECTS) : $(MY-INCL-FILES)
  1116. X.br
  1117. X    c.o : $(MY-SPECIAL-INCL-FILE)
  1118. X.br
  1119. X    $(OTHER-OBJECTS) : $(OTHER-INCL-FILES)
  1120. X.sp 2
  1121. X.br
  1122. X    #% RULE-SECTION
  1123. X.br    
  1124. X    experimental:
  1125. X.br
  1126. X        *.c, attr(author, myself), attr(state, busy);
  1127. X.br
  1128. X        *.c, attrge(state, published), attrmax(version).
  1129. X.br
  1130. X    release:
  1131. X.br
  1132. X        *.c, attrge(state, published), attrmax(version).
  1133. X.br
  1134. X    #% END-RULE-SECTION
  1135. X.sp 2
  1136. X.br
  1137. X    #% VARIANT-SECTION
  1138. X.br
  1139. X    exp:
  1140. X.br
  1141. X        vflags = -DDEBUG -p -pg
  1142. X.br
  1143. X    rel:
  1144. X.br
  1145. X        vflags = -O
  1146. X.br
  1147. X    gnu:
  1148. X.br
  1149. X        CC = gcc
  1150. X.br
  1151. X        CFLAGS =  -O -g -finline-functions -fkeep-inline-functions \\
  1152. X.br
  1153. X        -fcombine-regs
  1154. X.br
  1155. X    #% END-VARIANT-SECTION\fR
  1156. X.br
  1157. X.KE
  1158. X.PP
  1159. X.SH FILES
  1160. XShapefile, shapefile, Makefile, makefile, /tmp/shapeXXXXXX, \fIname.\fRcid.
  1161. X.SH SEE ALSO
  1162. Xmake(1), vadm(1), save(1), retrv(1), vcat(1), af_intro(3)
  1163. X.SH DIAGNOSTICS
  1164. XThe following is a list of the error messages of \fIshape\fR and their
  1165. Xexplanations:
  1166. X.br
  1167. Xmultiply defined action for: <\fItarget\fR>
  1168. X.br
  1169. X    several rules with several actions have been found to produce a target
  1170. X.br
  1171. Xunknown option: <\fIoption\fR>
  1172. X.br
  1173. X    An unknown option has been passed to \fIshape\fR via command line
  1174. X.br
  1175. Xdon't know how to shape <\fItarget\fR>
  1176. X.br
  1177. X    Neither an implicit nor an explicit rule exists to build a target
  1178. X.br
  1179. Xunknown special macro in cmd <\fIcommand\fR>
  1180. X.br
  1181. X    An unkown special macro has been cited in a command line
  1182. X.br
  1183. Xmultiple defined selection rule <\fIrulename\fR>
  1184. X.br
  1185. X    In the rule section(s) a rulename exists more than once
  1186. X.br
  1187. Xunknown standard predicate <\fIpredicate\fR>
  1188. X.br
  1189. X    In the rule section an unkown predicate has been cited
  1190. X.br
  1191. Xerror in variant section <\fIstring\fR>
  1192. X.br
  1193. X    Syntax error in the variant section
  1194. X.br
  1195. Xfile not found <\fIfilename\fR>
  1196. X.br
  1197. X    The file <\fIfilename\fR> passed to \fIshape\fR via -f or -rebuild does not exist
  1198. X.br
  1199. Xinvalid gen/rev specification <\fIstring\fR>
  1200. X.br
  1201. X    An invalid specification of \fIgeneration.revision\fR has been detected in the rule section or on the command line
  1202. X.br
  1203. Xinternal error in <\fIname\fR>
  1204. X.br
  1205. X    An internal error has occured. Please contact maintenance.
  1206. X.br
  1207. Xno description file and no arguments
  1208. X.br
  1209. X    No description file exists an no arguments have been passed to \fIshape\fR via the command line
  1210. X.br
  1211. Xcannot open file
  1212. X.br
  1213. X    Could not open description file
  1214. X.br
  1215. Xerror during execution; retcode <\fInumber\fR>
  1216. X.br
  1217. X    An error occured during the execution of a command
  1218. X.br
  1219. Xsyntax error <\fIline\fR>
  1220. X.br
  1221. X    A syntax error has been detected in the description file
  1222. X.br
  1223. Xaborted due to syntactical error(s)
  1224. X.br
  1225. X    If syntax errors have been detected \fIshape\fR stops with this message
  1226. X.br
  1227. Xinvalid state <\fIstring\fR>
  1228. X.br
  1229. X    An invalid state has been cited a selection rule
  1230. X.br
  1231. Xselection rule for <\fIname\fR> failed
  1232. X.br
  1233. X    No file with appropriate attributes have been found
  1234. X.br
  1235. Xvariant name not defined: <\fIname\fR>
  1236. X.br
  1237. X    Citation of \fIattrvar\fR with unknown variant name has been detected
  1238. X.br
  1239. Xcan't link ./AFS/<\fIname\fR> to .<\fIname\fR>
  1240. X.br
  1241. Xcan't unlink <\fIname\fR>
  1242. X.br
  1243. Xcan't link <\fIname\fR> to tmpfile
  1244. X.br
  1245. X    Couldn't link or unlink a temporary file (especially while restoring an old version)
  1246. X.br
  1247. Xinterrupted
  1248. X.br
  1249. X    An user interrupt occured
  1250. X.br
  1251. Xcan't open include file <\fIfilename\fR>
  1252. X.br
  1253. X    Could not open an include file
  1254. X.br
  1255. Xinfinitely recursive macro caused by line: <\fIstring\fR>?
  1256. X.br
  1257. X    a recursive macro definition has been detected
  1258. X.br
  1259. Xinvalid macro citation within heritage field
  1260. X.br
  1261. X    In an implicit rule an invalid macro citation has been detected
  1262. X.br
  1263. Xtoo many <\fIstring\fR>
  1264. X.br
  1265. X    Too many targets, dependents or macros for inheritance have been found
  1266. X.br
  1267. Xforced stop :-(; couldn't find appropriate version for <\fIname\fR>
  1268. X.br
  1269. X    Selection of a special version was not successful
  1270. X.br
  1271. Xattribute too long
  1272. X.br
  1273. X    The string of attributes for inheritance got too long (hopefully never)
  1274. X.br
  1275. Xvclass error
  1276. X.br
  1277. X    Inconsistent variant selection
  1278. X.br
  1279. Xsyntax error in rule section (delimiter missing)
  1280. X.br
  1281. X    A syntax error in the rule section has been found
  1282. X.br
  1283. Xunknown selection rule name
  1284. X.br
  1285. X    An unkown selection rulename has been passed to \fIshape\fR via the command line
  1286. X.br
  1287. Xnot yet implemented <\fIfeature\fR>
  1288. X.br
  1289. X    If a not yet implemented feature is detected \fIshape\fR stops with this message
  1290. X.br
  1291. Xwarning: derived object not saved into bpool; no AFS subdirectory
  1292. X.br
  1293. X    Could not save a binary into the binary pool
  1294. X.SH BUGS AND CAVEATS
  1295. X.PP
  1296. XThis version of \fIshape\fR has not been tested comprehensively. So there
  1297. Xare possibly a lot of bugs!!!
  1298. X.PP
  1299. XThe following is a description of the not yet realized features
  1300. X.I
  1301. Xshape.
  1302. X.IP \-q -4
  1303. XQuestion mode. Returns a zero or nonzero status code depending on weather
  1304. Xor not the target file is up to date.
  1305. X.IP \-S
  1306. XUndo the effect of the -k option.
  1307. X.RE
  1308. X.PP
  1309. X.sp
  1310. X\fBNot yet implemented features of MAKE:\fR
  1311. X.PP
  1312. X.IP ".PRECIOUS"
  1313. XSpecifies a list of files not to delete if an interrupt occurs.
  1314. X.IP "Substitutions within macros"
  1315. X$(name:str1=str2), where str1 is either a suffix, or a word to be replaced
  1316. Xin the macros definition, and str2 is the replacement.
  1317. X.IP $%
  1318. XThe $% macro is evaluated when the target is an archive member of the
  1319. Xform: lib(file.o).
  1320. X.IP "$(xD) and $(xF)"
  1321. Xgetting filename part and directory part( x stands for @, *, and <,
  1322. Xrespectively).
  1323. X.IP $(MAKE)/$(SHAPE)
  1324. Xrun make recursively, i.e.. recursively in every subdirectory.
  1325. X.IP SHELL
  1326. XCommands are executed using the Bourne Shell; assigning a different
  1327. Xvalue to the SHELL macro has no effect.
  1328. X.IP "Dynamic dependency parameters"
  1329. X$$@, which refers to the current "thing" to the left of the colon
  1330. X(which is $@).
  1331. X.IP "FRC"
  1332. Xforcing shape/make to completely rebuild a target starting from scratch
  1333. X.RE
  1334. X.SH AUTHOR
  1335. XWolfgang Obst
  1336. X.br
  1337. XTechnical University Berlin
  1338. X.sp
  1339. X\fIUUCP:\fR        wolfgang@coma.uucp (unido!coma!wolfgang)
  1340. X.br
  1341. X\fIBITNET:\fR    wolfgang@db0tui62
  1342. END_OF_FILE
  1343. if test 34921 -ne `wc -c <'man/man1/shape.1'`; then
  1344.     echo shar: \"'man/man1/shape.1'\" unpacked with wrong size!
  1345. fi
  1346. # end of 'man/man1/shape.1'
  1347. fi
  1348. echo shar: End of archive 28 \(of 33\).
  1349. cp /dev/null ark28isdone
  1350. MISSING=""
  1351. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ; do
  1352.     if test ! -f ark${I}isdone ; then
  1353.     MISSING="${MISSING} ${I}"
  1354.     fi
  1355. done
  1356. if test "${MISSING}" = "" ; then
  1357.     echo You have unpacked all 33 archives.
  1358.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1359. else
  1360.     echo You still need to unpack the following archives:
  1361.     echo "        " ${MISSING}
  1362. fi
  1363. ##  End of shell archive.
  1364. exit 0
  1365.