1 # Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
2 # Copyright 2009-2013 Ketmar // Vampire Avalon
3 # This file is part of Jam - see jam.c for Copyright information.
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 # JAMBASE - k8jam 2.x ruleset providing make(1)-like functionality
20 # Supports UNIX, NT and maybe other things
22 # Special targets defined in this file:
24 # all - parent of first, shell, files, lib, exe
25 # first - first dependent of 'all', for potential initialization
26 # shell - parent of all Shell targets
27 # files - parent of all File targets
28 # lib - parent of all Library targets
29 # exe - parent of all Main targets
30 # dirs - parent of all MkDir targets
31 # clean - removes all Shell, File, Library, and Main targets
32 # uninstall - removes all Install targets
35 # Brief review of the jam language:
38 # rule RULE - statements to process a rule
39 # actions RULE - system commands to carry out target update
41 # Modifiers on actions:
42 # together - multiple instances of same rule on target get executed
43 # once with their sources ($(>)) concatenated
44 # updated - refers to updated sources ($(>)) only
45 # ignore - ignore return status of command
46 # quietly - don't trace its execution unless verbose
47 # piecemeal - iterate command each time with a small subset of $(>)
48 # existing - refers to currently existing sources ($(>)) only
49 # bind vars - subject to binding before expanding in actions
52 # Always - always build a target
53 # Depends - builds the dependency graph
54 # Echo - blurt out targets on stdout
55 # Exit - blurt out targets and exit
56 # Includes - marks sources as headers for target (a codependency)
57 # NoCare - don't panic if the target can't be built
58 # NoUpdate - create the target if needed but never update it
59 # NotFile - ignore the timestamp of the target (it's not a file)
60 # Temporary - target need not be present if sources haven't changed
62 # Special variables set by jam:
63 # $(<) - targets of a rule (to the left of the :)
64 # $(>) - sources of a rule (to the right of the :)
65 # $(xxx) - true on xxx (UNIX, VMS, NT, OS2, MAC)
66 # $(OS) - name of OS - varies wildly
67 # $(K8_JAMVERSION) - version number (2.5.xx)
69 # Special variables used by jam:
70 # SEARCH - where to find something (used during binding and actions)
71 # LOCATE - where to plop something not found with SEARCH
72 # HDRRULE - rule to call to handle include files
73 # HDRSCAN - egrep regex to extract include files
76 # all - default if none given on command line
79 THIS_IS_K8JAM = 'tan' ; # we are using k8jam
83 . Jambase.vars # default vars -- compiler and linker name, etc
84 . Jambase.deps # default targets and dependencies
86 . Jambase.misc # miscelaneous helpers
88 . Jambase.subdir # SubDir, SubInclude, etc
89 . Jambase.object # `Object` rule and company
90 . Jambase.build # build rules for various languages
91 . Jambase.link # link rules for various languages
92 . Jambase.main # link rules for various languages
93 . Jambase.clean # `clean` target
95 . Jambase.install # install targets (incomplete)
97 . Jambase.profile # `profile` and `set-profile`
98 . Jambase.locs # `set-target-locations`
100 . Jambase.pkgcfg # lib-config and pkg-config
102 #. Jambase.gnustep # some utilities for GNUStep
104 . Jambase.fix # various native specifics
106 . Jambase.windoze # cross-compiling specifics
108 . Jambase.userext # user extension rules
109 . Jambase.help # 'help*' targets
110 . Jambase.push # 'push' target
111 . Jambase.boiler # 'gen-boiler' code
113 . configure/Jambase.configure
116 check-setup-windoze ;
119 # Now include the user's Jamfile.
121 if 'gen-boiler' in $(JAM_TARGETS) {
122 Echo "skipping $(JAMFILE)" ;
124 softinclude $(HOME)/.jam.rc ;