header cache file is smaller
[k8jam.git] / doc / Jambase.html
blobb7b3c7a57ed734729cbac18eda51db3c356833ff
1 <HTML>
2 <TITLE>
3 Jambase Reference
4 </TITLE>
5 <BODY>
6 <CENTER>
7 <a href=http://www.perforce.com/jam/jam.html>
8 Jam
9 </a>
10 <H1>
11 <A NAME="TOP">
12 Jambase Reference
13 </A>
14 </H1>
15 </CENTER>
16 <P>
17 Jambase is a base set of Jam rules which
18 provide roughly make(1)-like functionality for
19 <a href="Jam.html"><b>jam</b></A>, the Jam executable program.
20 This document, which started out as the Jambase(5) man page,
21 is a reference guide to the
22 <A href="#RULES">rules</A>,
23 <A href="#PSEUDOTARGETS">pseudotargets</A>,
24 and <A href="#VARS">variables</A>
25 defined in Jambase for use in Jamfiles.
26 <P>
27 For further information see:
28 <UL>
29 <LI>
30 <a href="Jamfile.html">Using Jamfiles and Jambase</A>
31 <LI>
32 <a href="Jam.html">The Jam Executable Program</A>
33 </UL>
34 <P>
35 Jam documentation and source are available from the
36 <A HREF=http://public.perforce.com/public/index.html>Perforce Public Depot</a>.
37 For detailed information about any of the rules summarized below,
38 see the
39 <A HREF=http://public.perforce.com/public/jam/src/Jambase>Jambase</a>
40 file itself.
41 <HR>
42 <H2>
43 <A NAME="RULES">
44 Jambase Rules
45 </A>
46 </H2>
47 <P>
48 <B>As</B> <I>obj.o</I> : <I>source.s</I> ;
49 <BLOCKQUOTE>
50 Assemble the file <I>source.s.</I> Called by the Object
51 rule.
52 </BLOCKQUOTE>
53 <B>Bulk</B> <I>directory</I> : <I>sources</I> ;
54 <BLOCKQUOTE>
55 Copies <I>sources</I> into <I>directory.</I>
56 </BLOCKQUOTE>
57 <B>Cc</B> <I>object</I> : <I>source</I> ;
58 <BLOCKQUOTE>
59 Compile the file <I>source</I> into <I>object,</I> using the C
60 compiler $(CC), its flags $(CCFLAGS) and $(OPTIM),
61 and the header file directories $(HDRS). Called by
62 the Object rule.
63 </BLOCKQUOTE>
64 <B>C++</B> <I>obj.o</I> : <I>source.cc</I> ;
65 <BLOCKQUOTE>
66 Compile the C++ source file <I>source.cc.</I> Called by
67 the Object rule.
68 </BLOCKQUOTE>
69 <B>Chmod</B> <I>target</I> ;
70 <BLOCKQUOTE>
71 <I>(Unix and VMS only.)</I>
72 Change file permissions on <I>target</I> to
73 target-specific $(MODE) value set by Link, File,
74 Install*, and Shell rules.
75 </BLOCKQUOTE>
77 <B>Clean</B> <I>clean</I> : <I>targets</I> ;
78 <BLOCKQUOTE>
79 Removes existing <I>targets</I> when <I>clean</I> is built.
80 clean is not a dependency of all, and must be built
81 explicitly for targets to be removed.
82 </BLOCKQUOTE>
83 <B>FDefines</B> <I>defines</I> ; <BLOCKQUOTE>
84 Expands a list of definitions into a list of compiler
85 (or preprocessor) switches (such as
86 -D<I>symbol</I>=<I>val</I> on Unix)
87 to pass the definitions.
88 </BLOCKQUOTE>
89 <B>File</B> <I>target</I> : <I>source</I> ;
90 <BLOCKQUOTE>
91 Copies <I>source</I> into <I>target.</I>
92 </BLOCKQUOTE>
93 <B>FIncludes</B> <I>dirs</I> ; <BLOCKQUOTE>
94 Expands a list of directories into a list of compiler
95 (or preprocessor) switches (such as -I<I>dir</I> on Unix)
96 to add the directories to the header inclusion search path.
97 </BLOCKQUOTE>
98 <B>Fortran</B> <I>obj.o</I> : <I>source.f</I> ;
99 <BLOCKQUOTE>
100 Compile the Fortran source file <I>source.f.</I> Called
101 by the Object rule.
102 </BLOCKQUOTE>
103 <B>FQuote</B> <I>files</I> ; <BLOCKQUOTE>
104 Returns each of <I>files</I> suitably quoted so as to hide shell
105 metacharacters (such as whitespace and filename matching wildcards)
106 from the shell.
107 </BLOCKQUOTE>
109 <B>GenFile</B> <I>target</I> : <I>image</I> <I>sources</I> ;
110 <BLOCKQUOTE>
111 Runs the command "<I>image</I> <I>target</I> <I>sources</I>"
112 to create <I>target</I> from <I>sources</I> and
113 <I>image</I>. (where <I>image</I> is an
114 executable built by the Main rule.)
115 </BLOCKQUOTE>
116 <B>HardLink</B> <I>target</I> : <I>source</I> ;
117 <BLOCKQUOTE>
118 Makes <I>target</I> a hard link to <I>source,</I> if it isn't one
119 already. (Unix only.)
120 </BLOCKQUOTE>
121 <B>HdrRule</B> <I>source</I> : <I>headers</I> ;
122 <BLOCKQUOTE>
123 Arranges the proper dependencies when the file
124 <I>source</I> includes the files <I>headers</I> through the
125 "#include" C preprocessor directive.
127 This rule is not intended to be called explicitly.
128 It is called automatically during header scanning on
129 sources handled by the Object rule (e.g., sources in
130 Main or Library rules).
131 </BLOCKQUOTE>
132 <B>InstallBin</B> <I>dir</I> : <I>sources</I> ; <BLOCKQUOTE>
133 Copy <I>sources</I> into <I>dir</I> with mode
134 $(EXEMODE).
135 </BLOCKQUOTE>
136 <B>InstallLib</B> <I>dir</I> : <I>sources</I> ; <BLOCKQUOTE>
137 Copy <I>sources</I> into <I>dir</I> with mode
138 $(FILEMODE).
139 </BLOCKQUOTE>
140 <B>InstallMan</B> <I>dir</I> : <I>sources</I> ; <BLOCKQUOTE>
141 Copy <I>sources</I> into the appropriate subdirectory
142 of <I>dir</I> with mode $(FILEMODE). The subdirectory
143 is man<I>s,</I> where <I>s</I> is the suffix of
144 each of sources.
145 </BLOCKQUOTE>
146 <B>InstallShell</B> <I>dir</I> : <I>sources</I> ; <BLOCKQUOTE>
147 Copy <I>sources</I> into <I>dir</I> with mode
148 $(SHELLMODE).
149 </BLOCKQUOTE>
150 <B>Lex</B> <I>source.c</I> : <I>source.l</I> ; <BLOCKQUOTE>
151 Process the lex(1) source file <I>source.l</I> and
152 rename the lex.yy.c to <I>source.c.</I> Called by
153 the Object rule.
154 </BLOCKQUOTE>
155 <B>Library</B> <I>library</I> : <I>sources</I> ; <BLOCKQUOTE>
156 Compiles <I>sources</I> and archives them into
157 <I>library.</I> The intermediate <I>objects</I>
158 are deleted. Calls Objects and LibraryFromObjects.
160 If Library is invoked with no suffix on <I>library</I>,
161 the $(SUFLIB) suffix is used.
162 </BLOCKQUOTE>
163 <B>LibraryFromObjects</B> <I>library</I> : <I>objects</I> ;
164 <BLOCKQUOTE>
165 Archives <I>objects</I> into <I>library.</I> The
166 <I>objects</I> are then deleted.
168 If <I>library</I> has no suffix, the $(SUFLIB) suffix is used.
169 </BLOCKQUOTE>
170 <B>Link</B> <I>image</I> : <I>objects</I> ;
171 <BLOCKQUOTE>
172 Links <I>image</I> from <I>objects</I> and sets
173 permissions on <I>image</I> to $(EXEMODE).
174 <I>Image</I> must be actual filename; suffix is not
175 supplied.
176 Called by Main.
178 </BLOCKQUOTE>
179 <B>LinkLibraries</B> <I>image</I> : <I>libraries</I> ;
180 <BLOCKQUOTE>
181 Makes <I>image</I> depend on <I>libraries</I> and
182 includes them during the linking.
184 <I>Image</I> may be referenced without a suffix in this
185 rule invocation; LinkLibraries supplies the suffix.
186 </BLOCKQUOTE>
187 <B>Main</B> <I>image</I> : <I>sources</I> ;
188 <BLOCKQUOTE>
189 Compiles <I>sources</I> and links them into <I>image.</I>
190 Calls Objects and MainFromObjects.
192 <I>Image</I> may be referenced without a suffix in this
193 rule invocation; Main supplies the suffix.
194 </BLOCKQUOTE>
195 <B>MainFromObjects</B> <I>image</I> : <I>objects</I> ;
196 <BLOCKQUOTE>
197 Links <I>objects</I> into <I>image.</I> Dependency
198 of exe. MainFromObjects supplies the suffix on <I>image</I>
199 filename.
200 </BLOCKQUOTE>
201 <B>MakeLocate</B> <I>target</I> : <I>dir</I> ;
202 <BLOCKQUOTE>
203 Creates <I>dir</I> and causes <I>target</I> to be built
204 into <I>dir</I>.
205 </BLOCKQUOTE>
206 <B>MkDir</B> <I>dir</I> ;
207 <BLOCKQUOTE>
208 Creates <I>dir</I> and its parent directories.
209 </BLOCKQUOTE>
210 <B>Object</B> <I>object</I> : <I>source</I> ;
211 <BLOCKQUOTE>
212 Compiles a <I>single</I> source file source into
213 <I>object.</I> The Main and Library rules use
214 this rule to compile source files.
216 Causes <I>source</I> to be scanned for "#include"
217 directives and calls HdrRule to make all included
218 files dependedencies of <I>object</I>.
220 Calls one of the following rules to do the actual
221 compiling, depending on the suffix of source:
222 <PRE>
223 *.c: Cc
224 *.cc: C++
225 *.cpp: C++
226 *.C: C++
227 *.l: Lex
228 *.y: Yacc
229 *.*: UserObject
230 </PRE>
231 </BLOCKQUOTE>
232 <B>ObjectC++Flags</B> <I>source</I> : <I>flags</I> ;
233 <BR>
234 <B>ObjectCcFlags</B> <I>source</I> : <I>flags</I> ;
235 <BLOCKQUOTE>
236 Add <I>flags</I> to the source-specific
237 value of $(CCFLAGS) or $(C++FLAGS) when compiling <I>source.</I>
238 Any file suffix on <I>source</I> is ignored.
239 </BLOCKQUOTE>
240 <B>ObjectDefines</B> <I>object</I> : <I>defines</I> ; <BLOCKQUOTE>
241 Adds preprocessor symbol definitions to the (gristed)
242 target-specific $(CCDEFS) for the <I>object</i>.
243 </BLOCKQUOTE>
244 <B>ObjectHdrs</B> <I>source</I> : <I>dirs</I> ; <BLOCKQUOTE>
245 Add <I>dirs</I> to the source-specific value of
246 $(HDRS) when scanning and compiling <I>source.</I>
247 Any file suffix on <I>source</I> is ignored.
248 </BLOCKQUOTE>
249 <B>Objects</B> <I>sources</I> ; <BLOCKQUOTE>
250 For each source file in <I>sources,</I> calls
251 Object to compile the source file into a similarly
252 named object file.
253 </BLOCKQUOTE>
254 <B>RmTemps</B> <I>targets</I> : <I>sources</I> ; <BLOCKQUOTE>
255 Marks <I>sources</I> as temporary with the TEMPORARY
256 rule, and deletes <I>sources</I> once <I>targets</I>
257 are built. Must be the last rule invoked on
258 <I>targets.</I> Used internally by LibraryFromObjects rule.
259 </BLOCKQUOTE>
260 <B>Setuid</B> <I>images</I> ; <BLOCKQUOTE>
261 Sets the setuid bit on each of <I>images</I> after
262 linking. (Unix only.)
264 </BLOCKQUOTE>
265 <B>SoftLink</B> <I>target</I> : <I>source</I> ;
266 <BLOCKQUOTE>
267 Makes <I>target</I> a symbolic link to <I>source,</I> if it isn't one
268 already. (Unix only.)
269 </BLOCKQUOTE>
270 <B>SubDir</B> <I>TOP d1 ... dn</I> ;
271 <BLOCKQUOTE>
272 Sets up housekeeping for the source files located
273 in <I><CODE>$(TOP)/d1/.../dn</CODE></I>:
274 <UL>
275 <LI>Reads in rules file associated with <I>TOP</I>,
276 if it hasn't already been read.
277 <LI>Initializes variables for search paths,
278 output directories, compiler
279 flags, and grist, using <I>d1 ... dn</I> tokens.
280 </UL>
282 <I>TOP</I> is the name of a variable;
283 <I>d1</I> thru <I>dn</I> are elements
284 of a directory path.
285 </BLOCKQUOTE>
286 <B>SubDirC++Flags</B> <I>flags</I> ;
287 <BR>
288 <B>SubDirCcFlags</B> <I>flags</I> ;
289 <BLOCKQUOTE>
290 Adds <I>flags</I> to the compiler flags for source files
291 in SubDir's directory.
292 </BLOCKQUOTE>
293 <B>SubDirHdrs</B> <I>d1 ... dn</I> ;
294 <BLOCKQUOTE>
295 Adds the path <I>d1/.../dn/</I> to the header search paths for
296 source files in SubDir's directory. <I>d1</I> through <I>dn</I>
297 are elements of a directory path.
298 </BLOCKQUOTE>
299 <B>SubInclude</B> <I>VAR d1 ... dn</I> ;
300 <BLOCKQUOTE>
301 Reads the Jamfile in <I><CODE>$(VAR)/d1/.../dn/</CODE></I>.
302 </BLOCKQUOTE>
303 <B>Shell</B> <I>image</I> : <I>source</I> ; <BLOCKQUOTE>
304 Copies <I>source</I> into the executable sh(1)
305 script <I>image.</I> Ensures that the first line of
306 the script is $(SHELLHEADER) (default #!/bin/sh).
307 </BLOCKQUOTE>
308 <B>Undefines</B> <I>images</I> : <I>symbols</I> ; <BLOCKQUOTE>
309 Adds flags to mark <I>symbols</I> as undefined
310 on link command for <I>images</I>.
311 <I>Images</I> may be referenced unsuffixed; the
312 Undefines rule supplies the suffix.
313 </BLOCKQUOTE>
314 <B>UserObject</B> <I>object</I> : <I>source</I> ; <BLOCKQUOTE>
315 This rule is called by Object for source
316 files with unknown suffixes, and should be defined
317 in Jamrules
318 with a user-provided rule to handle the source file
319 types not handled by the Object rule.
320 The Jambase UserObject rule merely issues a
321 complaint when it encounters <I>source</I> with
322 files suffixes it does not recognize.
323 </BLOCKQUOTE>
324 <B>Yacc</B> <I>source.c</I> : <I>source.y</I> ; <BLOCKQUOTE>
325 Process the yacc(1) file <I>source.y</I> and renamed
326 the resulting y.tab.c and y.tab.h to <I>source.c.</I>
327 Produces a y.tab.h and renames it to <I>source.h.</I>
328 Called by the <B>Object</B> rule.
329 </BLOCKQUOTE>
331 <HR>
332 <A NAME="PSEUDOTARGETS">
333 <H3>
334 Jambase Pseudotargets
335 </H3>
336 </A>
338 There are two kinds of Jam targets: file targets and pseudotargets.
339 File targets are objects that can be found in the filesystem.
340 Pseudotargets are symbolic, and usually represent other targets.
341 Most Jambase rules that define file targets also define pseudotargets
342 which are dependent on types of file targets. The Jambase pseudotargets
343 are:
344 <CENTER>
345 <TABLE CELLPADDING=5%>
346 <TR><TD>exe
347 <TD>Executables linked by the Main or MainFromObjects rules
349 <TR><TD>lib
350 <TD>Libraries created by the Library or LibraryFromObjects rules
352 <TR><TD>obj
353 <TD>Compiled objects used to create Main or Library targets
355 <TR><TD>dirs
356 <TD>Directories where target files are written
358 <TR><TD>file
359 <TD>Files copied by File and Bulk rules
361 <TR><TD>shell
362 <TD>Files copied by Shell rule
364 <TR><TD>clean
365 <TD>Removal of built targets (except files copied by Install* rules)
367 <TR><TD>install
368 <TD>Files copied by Install* rules
370 <TR><TD>uninstall
371 <TD>Removal of targets copied by Install* rules
373 </TABLE>
374 </CENTER>
376 In addition, Jambase makes the <b>jam</b> default target "all"
377 depend on "exe", "lib", "obj", "files", and "shell".
380 <HR>
381 <A NAME="VARS">
382 <H3>
383 Jambase Variables
384 </H3>
385 </A>
387 Most of the following variables have default values for
388 each platform; refer to the Jambase file to see what those
389 defaults are.
391 ALL_LOCATE_TARGET
392 <BLOCKQUOTE>
393 Alternative location of built targets. By default,
394 Jambase rules locate built targets in the source
395 tree. By setting $(ALL_LOCATE_TARGET)
396 in Jamrules, you can cause <b>jam</b>
397 to write built targets to a location outside
398 the source tree.
399 </BLOCKQUOTE>
403 <BLOCKQUOTE>
404 The archive command used to update Library
405 and LibraryFromObjects targets.
406 </BLOCKQUOTE>
408 <BLOCKQUOTE>
409 The assembler for As rule targets.
410 </BLOCKQUOTE>
412 ASFLAGS
414 <BLOCKQUOTE>
415 Flags handed to the assembler for As.
416 </BLOCKQUOTE>
420 <BLOCKQUOTE>
421 The name of awk interpreter, used when copying a
422 shell script for the Shell rule.
423 </BLOCKQUOTE>
425 BCCROOT
426 <BLOCKQUOTE>
427 Selects Borland compile and link actions on NT.
428 </BLOCKQUOTE>
431 BINDIR
433 <BLOCKQUOTE>
434 Not longer used.
435 (I.e., used only for backward compatibility with the
436 obsolete INSTALLBIN rule.)
437 </BLOCKQUOTE>
441 <BLOCKQUOTE>
442 C compiler used for Cc rule targets.
443 </BLOCKQUOTE>
445 CCFLAGS
447 <BLOCKQUOTE>
448 Compile flags for Cc rule targets.
449 The Cc rule sets target-specific $(CCFLAGS)
450 values on its targets.
451 </BLOCKQUOTE>
455 <BLOCKQUOTE>
456 C++ compiler used for C++ rule targets.
457 </BLOCKQUOTE>
459 C++FLAGS
461 <BLOCKQUOTE>
462 Compile flags for C++ rule targets.
463 The C++ rule sets target-specific $(C++FLAGS)
464 values on its targets.
465 </BLOCKQUOTE>
467 CHMOD
469 <BLOCKQUOTE>
470 Program (usually chmod(1)) used to set file
471 permissions for Chmod rule.
472 </BLOCKQUOTE>
476 <BLOCKQUOTE>
477 The file copy program, used by File and Install* rules.
478 </BLOCKQUOTE>
480 CRELIB
482 <BLOCKQUOTE>
483 If set, causes the Library rule to invoke the CreLib
484 rule on the target library before attempting to archive
485 any members, so that the library can be created if
486 needed.
487 </BLOCKQUOTE>
491 <BLOCKQUOTE>
492 On Macintosh, the root of the Code Warrior Pro 5 directory.
493 </BLOCKQUOTE>
495 DEFINES
497 <BLOCKQUOTE>
498 Preprocessor symbol definitions for Cc and C++ rule targets.
499 The Cc and C++ rules set target-specific $(CCDEFS)
500 values on their targets, based on $(DEFINES). (The
501 "indirection" here is required to support compilers,
502 like VMS, with baroque command line syntax for
503 setting symbols).
504 </BLOCKQUOTE>
508 <BLOCKQUOTE>
509 The operating system-specific name for the current directory.
510 </BLOCKQUOTE>
512 DOTDOT
514 <BLOCKQUOTE>
515 The operating system-specific name for the parent directory.
516 </BLOCKQUOTE>
518 EXEMODE
520 <BLOCKQUOTE>
521 Permissions for executables linked with Link, Main,
522 and MainFromObjects, on platforms with a Chmod action.
523 </BLOCKQUOTE>
525 FILEMODE
527 <BLOCKQUOTE>
528 Permissions for files copied by File or Bulk,
529 on platforms with a Chmod action.
530 </BLOCKQUOTE>
532 FORTRAN
534 <BLOCKQUOTE>
535 The Fortran compiler used by Fortran rule.
536 </BLOCKQUOTE>
538 FORTRANFLAGS
540 <BLOCKQUOTE>
541 Fortran compiler flags for Fortran rule targets.
542 </BLOCKQUOTE>
544 GROUP
546 <BLOCKQUOTE>
547 <I>(Unix only.)</I>
548 The group owner for Install* rule targets.
549 </BLOCKQUOTE>
551 HDRGRIST
553 <BLOCKQUOTE>
554 If set, used by the HdrRule to distinguish header files
555 with the same name in diffrent directories.
556 </BLOCKQUOTE>
558 HDRPATTERN
560 <BLOCKQUOTE>
561 A regular expression pattern that matches
562 C preprocessor "#include" directives in source files
563 and returns the name of the included file.
564 </BLOCKQUOTE>
566 HDRRULE
568 <BLOCKQUOTE>
569 Name of the rule to invoke with the results of header file
570 scanning. Default is "HdrRule".
572 This is a jam-special variable. If both HDRRULE and HDRSCAN
573 are set on a target,
574 that target will be scanned for lines
575 matching $(HDRSCAN), and $(HDDRULE) will be
576 invoked on included files found in the matching $(HDRSCAN) lines.
577 </BLOCKQUOTE>
579 HDRS
581 <BLOCKQUOTE>
582 Directories to be searched for header files.
583 This is used by the Object rule to:
584 <UL>
585 <LI>set up search paths for finding files returned
586 by header scans
587 <LI>add -I flags on compile commands
588 </UL>
589 (See STDHDRS.)
590 </BLOCKQUOTE>
592 HDRSCAN
594 <BLOCKQUOTE>
595 Regular expression pattern to use for header file
596 scanning. The Object rule sets this to $(HDRPATTERN).
597 This is a jam-special variable; see HDRRULE.
598 </BLOCKQUOTE>
600 HDRSEARCH
602 <BLOCKQUOTE>
603 Used by the HdrRule to fix the list of directories where
604 header files can be found for a given source file.
605 </BLOCKQUOTE>
607 INSTALLGRIST
609 <BLOCKQUOTE>
610 Used by the Install* rules to grist paths to installed
611 files; defaults to "installed".
612 </BLOCKQUOTE>
614 JAMFILE
616 <BLOCKQUOTE>
617 Default is "Jamfile"; the name of the user-written
618 rules file found in each source directory.
619 </BLOCKQUOTE>
621 JAMRULES
623 <BLOCKQUOTE>
624 Default is "Jamrules"; the name of a rule definition
625 file to be read in at the first SubDir rule invocation.
626 </BLOCKQUOTE>
628 KEEPOBJS
630 <BLOCKQUOTE>
631 If set, tells the LibraryFromObjects rule not to delete
632 object files once they are archived.
633 </BLOCKQUOTE>
637 <BLOCKQUOTE>
638 The lex(1) command and flags.
639 </BLOCKQUOTE>
641 LIBDIR
643 <BLOCKQUOTE>
644 Not longer used.
645 (I.e., used only for backward compatibility with the
646 obsolete INSTALLLIB rule.)
647 </BLOCKQUOTE>
649 LINK
651 <BLOCKQUOTE>
652 The linker. Defaults to $(CC).
653 </BLOCKQUOTE>
655 LINKFLAGS
657 <BLOCKQUOTE>
658 Flags handed to the linker. Defaults to $(CCFLAGS).
659 </BLOCKQUOTE>
661 LINKLIBS
663 <BLOCKQUOTE>
664 List of external libraries to link with. The target image
665 does not depend on these libraries.
666 </BLOCKQUOTE>
670 <BLOCKQUOTE>
671 The hard link command for HardLink rule.
672 </BLOCKQUOTE>
674 LOCATE_SOURCE
675 <BLOCKQUOTE>
676 Used to set the location of generated source files.
677 The Yacc, Lex, and GenFile rules set LOCATE on
678 their targets to $(LOCATE_SOURCE).
679 $(LOCATE_SOURCE) is initialized by the SubDir rule
680 to the source directory itself.
681 (Also, see ALL_LOCATE_TARGET.)
682 </BLOCKQUOTE>
684 LOCATE_TARGET
685 <BLOCKQUOTE>
686 Used to set the location of built binary targets.
687 The Object rule, and hence the Main and Library rules,
688 set LOCATE on their targets to $(LOCATE_TARGET).
689 $(LOCATE_TARGET) is initialized by the
690 SubDir rule to the source directory itself.
691 (See ALL_LOCATE_TARGET.)
692 </BLOCKQUOTE>
695 MANDIR
697 <BLOCKQUOTE>
698 Not longer used.
699 (I.e., used only for backward compatibility with the
700 obsolete INSTALLMAN rule.)
701 </BLOCKQUOTE>
703 MKDIR
705 <BLOCKQUOTE>
706 The 'create directory' command used for the MkDir
707 rule.
708 </BLOCKQUOTE>
710 MODE
712 <BLOCKQUOTE>
713 The target-specific file mode (permissions) for targets
714 of the Shell, Setuid, Link, and Install* rules.
715 Used by the Chmod action; hence relevant to NT and VMS
716 only.
717 </BLOCKQUOTE>
719 MSVC
720 <BLOCKQUOTE>
721 Selects Microsoft Visual C 16-bit compile & link
722 actions on NT.
723 </BLOCKQUOTE>
725 MSVCNT
726 <BLOCKQUOTE>
727 Selects Microsoft Visual C NT 5.0 and earlier compile
728 & link actions on NT.
729 </BLOCKQUOTE>
731 MSVCDIR
732 <BLOCKQUOTE>
733 Selects Microsoft Visual C NT 6.0 and later compile
734 & link actions on NT. These are identical to versions
735 5.0 and earlier -- it just seems Microsoft changed the
736 name of the variable.
737 </BLOCKQUOTE>
742 <BLOCKQUOTE>
743 The file rename command and options.
744 </BLOCKQUOTE>
746 NEEDLIBS
748 <BLOCKQUOTE>
749 The list of libraries used when linking an executable.
750 Used by the Link rule.
751 </BLOCKQUOTE>
753 NOARSCAN
755 <BLOCKQUOTE>
756 If set, indicates that library members' timestamps can't
757 be found, and prevents the individual objects from being
758 deleted, so that their timestamps can be used instead.
759 </BLOCKQUOTE>
761 NOARUPDATE
763 <BLOCKQUOTE>
764 If set, indicates that libraries can't be updated, but only
765 created whole.
766 </BLOCKQUOTE>
768 OPTIM
770 <BLOCKQUOTE>
771 The C compiler flag for optimization, used by Cc and C++
772 rules.
773 </BLOCKQUOTE>
775 OSFULL
777 <BLOCKQUOTE>
778 The concatenation of $(OS)$(OSVER)$(OSPLAT), used when jam
779 builds itself to determine the target binary directory.
780 $(OS) and $(OSPLAT) are determined by jam at its compile
781 time (in jam.h). $(OSVER) can optionally be set by the user.
783 </BLOCKQUOTE>
785 OWNER
787 <BLOCKQUOTE>
788 The owner of installed files. Used by Install* rules.
789 </BLOCKQUOTE>
791 RANLIB
793 <BLOCKQUOTE>
794 The name of the ranlib command. If set, causes
795 the Ranlib action to be applied after the
796 Archive action to targets of the Library rule.
797 </BLOCKQUOTE>
799 RELOCATE
801 <BLOCKQUOTE>
802 If set, tells the Cc rule to move the output object
803 file to its target directory because the cc command
804 has a broken -o option.
805 </BLOCKQUOTE>
809 <BLOCKQUOTE>
810 The command and options to remove a file.
811 </BLOCKQUOTE>
813 SEARCH_SOURCE
815 <BLOCKQUOTE>
816 The directory to find sources listed with Main,
817 Library, Object, Bulk, File, Shell, InstallBin,
818 InstallLib, and InstallMan rules. This works by
819 setting the jam-special variable SEARCH to the
820 value of $(SEARCH_SOURCE) for each of the rules'
821 sources. The SubDir rule initializes SEARCH_SOURCE
822 for each directory.
823 </BLOCKQUOTE>
825 SHELLHEADER
827 <BLOCKQUOTE>
828 A string inserted to the first line of every file
829 created by the Shell rule.
830 </BLOCKQUOTE>
832 SHELLMODE
834 <BLOCKQUOTE>
835 Permissions for files installed by Shell rule.
836 </BLOCKQUOTE>
838 SOURCE_GRIST
840 <BLOCKQUOTE>
841 Set by the SubDir to a value derived from the
842 directory name, and used by Objects and related
843 rules as 'grist' to perturb file names.
844 </BLOCKQUOTE>
846 STDHDRS
848 <BLOCKQUOTE>
849 Directories where headers can be found without
850 resorting to using the flag to the C compiler.
851 The $(STDHDRS) directories are used to find
852 headers during scanning, but are not passed to the
853 compiler commands as -I paths.
854 </BLOCKQUOTE>
856 SUBDIR
858 <BLOCKQUOTE>
859 The path from the current directory to the directory
860 last named by the SubDir rule.
861 </BLOCKQUOTE>
865 <BLOCKQUOTE>
866 The path from the current directory to the directory
867 that has the Jamrules file. Used by the SubDir rule.
868 </BLOCKQUOTE>
870 SUFEXE
872 <BLOCKQUOTE>
873 The suffix for executable files, if none provided.
874 Used by the Main rule.
875 </BLOCKQUOTE>
877 SUFLIB
879 <BLOCKQUOTE>
880 The suffix for libraries. Used by the Library and
881 related rules.
882 </BLOCKQUOTE>
884 SUFOBJ
886 <BLOCKQUOTE>
887 The suffix for object files. Used by the Objects
888 and related rules.
889 </BLOCKQUOTE>
891 UNDEFFLAG
893 <BLOCKQUOTE>
894 The flag prefixed to each symbol for the Undefines
895 rule (i.e., the compiler flag for undefined symbols).
896 </BLOCKQUOTE>
898 WATCOM
899 <BLOCKQUOTE>
900 Selects Watcom compile and link actions on OS2.
901 </BLOCKQUOTE>
903 YACC
905 <BLOCKQUOTE>
906 The yacc(1) command.
907 </BLOCKQUOTE>
909 YACCFILES
911 <BLOCKQUOTE>
912 The base filename generated by yacc(1).
913 </BLOCKQUOTE>
915 YACCFLAGS
917 <BLOCKQUOTE>
918 The yacc(1) command flags.
919 </BLOCKQUOTE>
921 YACCGEN
923 <BLOCKQUOTE>
924 The suffix used on generated yacc(1) output.
925 </BLOCKQUOTE>
928 <HR>
929 <A HREF="#TOP">Back to top.</A>
931 Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
932 <BR>
933 Comments to <A HREF="mailto:info@perforce.com">info@perforce.com</A>
934 <BR>
935 Last updated: Dec 31, 2000
936 <BR>
937 $Id: //public/jam/src/Jambase.html#10 $
938 </BODY>
939 </HTML>