1<HTML> 2<TITLE> 3Jambase Reference 4</TITLE> 5<BODY> 6<CENTER> 7<a href=http://www.perforce.com/jam/jam.html> 8Jam 9</a> 10<H1> 11<A NAME="TOP"> 12Jambase 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> 35Jam documentation and source are available from the 36<A HREF=http://public.perforce.com/public/index.html>Perforce Public Depot</a>. 37For detailed information about any of the rules summarized below, 38see the 39<A HREF=http://public.perforce.com/public/jam/src/Jambase>Jambase</a> 40file itself. 41<HR> 42<H2> 43<A NAME="RULES"> 44Jambase 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> 76 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> 108<P> 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. 126 <P> 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. 159 <P> 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. 167 <P> 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. 177 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. 183 <P> 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. 191 <P> 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. 215 <P> 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>. 219<P> 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.) 263 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> 281 <P> 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> 330<P> 331<HR> 332<A NAME="PSEUDOTARGETS"> 333<H3> 334Jambase Pseudotargets 335</H3> 336</A> 337<P> 338There are two kinds of Jam targets: file targets and pseudotargets. 339File targets are objects that can be found in the filesystem. 340Pseudotargets are symbolic, and usually represent other targets. 341Most Jambase rules that define file targets also define pseudotargets 342which are dependent on types of file targets. The Jambase pseudotargets 343are: 344<CENTER> 345<TABLE CELLPADDING=5%> 346<TR><TD>exe 347 <TD>Executables linked by the Main or MainFromObjects rules 348 349<TR><TD>lib 350 <TD>Libraries created by the Library or LibraryFromObjects rules 351 352<TR><TD>obj 353 <TD>Compiled objects used to create Main or Library targets 354 355<TR><TD>dirs 356 <TD>Directories where target files are written 357 358<TR><TD>file 359 <TD>Files copied by File and Bulk rules 360 361<TR><TD>shell 362 <TD>Files copied by Shell rule 363 364<TR><TD>clean 365 <TD>Removal of built targets (except files copied by Install* rules) 366 367<TR><TD>install 368 <TD>Files copied by Install* rules 369 370<TR><TD>uninstall 371 <TD>Removal of targets copied by Install* rules 372 373</TABLE> 374</CENTER> 375<P> 376In addition, Jambase makes the <b>jam</b> default target "all" 377depend on "exe", "lib", "obj", "files", and "shell". 378<P> 379 380<HR> 381<A NAME="VARS"> 382<H3> 383Jambase Variables 384</H3> 385</A> 386<P> 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. 390<P> 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> 400 401 AR 402 403<BLOCKQUOTE> 404 The archive command used to update Library 405 and LibraryFromObjects targets. 406</BLOCKQUOTE> 407 AS 408<BLOCKQUOTE> 409 The assembler for As rule targets. 410</BLOCKQUOTE> 411 412 ASFLAGS 413 414<BLOCKQUOTE> 415 Flags handed to the assembler for As. 416</BLOCKQUOTE> 417 418 AWK 419 420<BLOCKQUOTE> 421 The name of awk interpreter, used when copying a 422 shell script for the Shell rule. 423</BLOCKQUOTE> 424 425 BCCROOT 426<BLOCKQUOTE> 427 Selects Borland compile and link actions on NT. 428</BLOCKQUOTE> 429 430 431 BINDIR 432 433<BLOCKQUOTE> 434 Not longer used. 435 (I.e., used only for backward compatibility with the 436 obsolete INSTALLBIN rule.) 437</BLOCKQUOTE> 438 439 CC 440 441<BLOCKQUOTE> 442 C compiler used for Cc rule targets. 443</BLOCKQUOTE> 444 445 CCFLAGS 446 447<BLOCKQUOTE> 448 Compile flags for Cc rule targets. 449 The Cc rule sets target-specific $(CCFLAGS) 450 values on its targets. 451</BLOCKQUOTE> 452 453 C++ 454 455<BLOCKQUOTE> 456 C++ compiler used for C++ rule targets. 457</BLOCKQUOTE> 458 459 C++FLAGS 460 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> 466 467 CHMOD 468 469<BLOCKQUOTE> 470 Program (usually chmod(1)) used to set file 471 permissions for Chmod rule. 472</BLOCKQUOTE> 473 474 CP 475 476<BLOCKQUOTE> 477 The file copy program, used by File and Install* rules. 478</BLOCKQUOTE> 479 480 CRELIB 481 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> 488 489 CW 490 491<BLOCKQUOTE> 492 On Macintosh, the root of the Code Warrior Pro 5 directory. 493</BLOCKQUOTE> 494 495 DEFINES 496 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> 505 506 DOT 507 508<BLOCKQUOTE> 509 The operating system-specific name for the current directory. 510</BLOCKQUOTE> 511 512 DOTDOT 513 514<BLOCKQUOTE> 515 The operating system-specific name for the parent directory. 516</BLOCKQUOTE> 517 518 EXEMODE 519 520<BLOCKQUOTE> 521 Permissions for executables linked with Link, Main, 522 and MainFromObjects, on platforms with a Chmod action. 523</BLOCKQUOTE> 524 525 FILEMODE 526 527<BLOCKQUOTE> 528 Permissions for files copied by File or Bulk, 529 on platforms with a Chmod action. 530</BLOCKQUOTE> 531 532 FORTRAN 533 534<BLOCKQUOTE> 535 The Fortran compiler used by Fortran rule. 536</BLOCKQUOTE> 537 538 FORTRANFLAGS 539 540<BLOCKQUOTE> 541 Fortran compiler flags for Fortran rule targets. 542</BLOCKQUOTE> 543 544 GROUP 545 546<BLOCKQUOTE> 547 <I>(Unix only.)</I> 548 The group owner for Install* rule targets. 549</BLOCKQUOTE> 550 551 HDRGRIST 552 553<BLOCKQUOTE> 554 If set, used by the HdrRule to distinguish header files 555 with the same name in diffrent directories. 556</BLOCKQUOTE> 557 558 HDRPATTERN 559 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> 565 566 HDRRULE 567 568<BLOCKQUOTE> 569 Name of the rule to invoke with the results of header file 570 scanning. Default is "HdrRule". 571 <P> 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> 578 579 HDRS 580 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> 591 592 HDRSCAN 593 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> 599 600 HDRSEARCH 601 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> 606 607 INSTALLGRIST 608 609<BLOCKQUOTE> 610 Used by the Install* rules to grist paths to installed 611 files; defaults to "installed". 612</BLOCKQUOTE> 613 614 JAMFILE 615 616<BLOCKQUOTE> 617 Default is "Jamfile"; the name of the user-written 618 rules file found in each source directory. 619</BLOCKQUOTE> 620 621 JAMRULES 622 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> 627 628 KEEPOBJS 629 630<BLOCKQUOTE> 631 If set, tells the LibraryFromObjects rule not to delete 632 object files once they are archived. 633</BLOCKQUOTE> 634 635 LEX 636 637<BLOCKQUOTE> 638 The lex(1) command and flags. 639</BLOCKQUOTE> 640 641 LIBDIR 642 643<BLOCKQUOTE> 644 Not longer used. 645 (I.e., used only for backward compatibility with the 646 obsolete INSTALLLIB rule.) 647</BLOCKQUOTE> 648 649 LINK 650 651<BLOCKQUOTE> 652 The linker. Defaults to $(CC). 653</BLOCKQUOTE> 654 655 LINKFLAGS 656 657<BLOCKQUOTE> 658 Flags handed to the linker. Defaults to $(CCFLAGS). 659</BLOCKQUOTE> 660 661 LINKLIBS 662 663<BLOCKQUOTE> 664 List of external libraries to link with. The target image 665 does not depend on these libraries. 666</BLOCKQUOTE> 667 668 LN 669 670<BLOCKQUOTE> 671 The hard link command for HardLink rule. 672</BLOCKQUOTE> 673 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> 683 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> 693 694 695 MANDIR 696 697<BLOCKQUOTE> 698 Not longer used. 699 (I.e., used only for backward compatibility with the 700 obsolete INSTALLMAN rule.) 701</BLOCKQUOTE> 702 703 MKDIR 704 705<BLOCKQUOTE> 706 The 'create directory' command used for the MkDir 707 rule. 708</BLOCKQUOTE> 709 710 MODE 711 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> 718 719 MSVC 720<BLOCKQUOTE> 721 Selects Microsoft Visual C 16-bit compile & link 722 actions on NT. 723</BLOCKQUOTE> 724 725 MSVCNT 726<BLOCKQUOTE> 727 Selects Microsoft Visual C NT 5.0 and earlier compile 728 & link actions on NT. 729</BLOCKQUOTE> 730 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> 738 739 740 MV 741 742<BLOCKQUOTE> 743 The file rename command and options. 744</BLOCKQUOTE> 745 746 NEEDLIBS 747 748<BLOCKQUOTE> 749 The list of libraries used when linking an executable. 750 Used by the Link rule. 751</BLOCKQUOTE> 752 753 NOARSCAN 754 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> 760 761 NOARUPDATE 762 763<BLOCKQUOTE> 764 If set, indicates that libraries can't be updated, but only 765 created whole. 766</BLOCKQUOTE> 767 768 OPTIM 769 770<BLOCKQUOTE> 771 The C compiler flag for optimization, used by Cc and C++ 772 rules. 773</BLOCKQUOTE> 774 775 OSFULL 776 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. 782 783</BLOCKQUOTE> 784 785 OWNER 786 787<BLOCKQUOTE> 788 The owner of installed files. Used by Install* rules. 789</BLOCKQUOTE> 790 791 RANLIB 792 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> 798 799 RELOCATE 800 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> 806 807 RM 808 809<BLOCKQUOTE> 810 The command and options to remove a file. 811</BLOCKQUOTE> 812 813 SEARCH_SOURCE 814 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> 824 825 SHELLHEADER 826 827<BLOCKQUOTE> 828 A string inserted to the first line of every file 829 created by the Shell rule. 830</BLOCKQUOTE> 831 832 SHELLMODE 833 834<BLOCKQUOTE> 835 Permissions for files installed by Shell rule. 836</BLOCKQUOTE> 837 838 SOURCE_GRIST 839 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> 845 846 STDHDRS 847 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> 855 856 SUBDIR 857 858<BLOCKQUOTE> 859 The path from the current directory to the directory 860 last named by the SubDir rule. 861</BLOCKQUOTE> 862 863 TOP 864 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> 869 870 SUFEXE 871 872<BLOCKQUOTE> 873 The suffix for executable files, if none provided. 874 Used by the Main rule. 875</BLOCKQUOTE> 876 877 SUFLIB 878 879<BLOCKQUOTE> 880 The suffix for libraries. Used by the Library and 881 related rules. 882</BLOCKQUOTE> 883 884 SUFOBJ 885 886<BLOCKQUOTE> 887 The suffix for object files. Used by the Objects 888 and related rules. 889</BLOCKQUOTE> 890 891 UNDEFFLAG 892 893<BLOCKQUOTE> 894 The flag prefixed to each symbol for the Undefines 895 rule (i.e., the compiler flag for undefined symbols). 896</BLOCKQUOTE> 897 898 WATCOM 899<BLOCKQUOTE> 900 Selects Watcom compile and link actions on OS2. 901</BLOCKQUOTE> 902 903 YACC 904 905<BLOCKQUOTE> 906 The yacc(1) command. 907</BLOCKQUOTE> 908 909 YACCFILES 910 911<BLOCKQUOTE> 912 The base filename generated by yacc(1). 913</BLOCKQUOTE> 914 915 YACCFLAGS 916 917<BLOCKQUOTE> 918 The yacc(1) command flags. 919</BLOCKQUOTE> 920 921 YACCGEN 922 923<BLOCKQUOTE> 924 The suffix used on generated yacc(1) output. 925</BLOCKQUOTE> 926 927<P> 928<HR> 929<A HREF="#TOP">Back to top.</A> 930<P> 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> 940