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