it's now safe (i hope) to include Jambase.configure multiple times
[k8jam.git] / defaults / Jambase
blob182b2485f7a45aae771f48f26b741dca0d950079
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:
37 # Statements:
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
51 # Special rules:
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
75 # Special targets:
76 #   all - default if none given on command line
79 THIS_IS_K8JAM = 'tan' ; # we are using k8jam
81 . Jambase.0fixups
83 . Jambase.vars    # default vars -- compiler and linker name, etc
84 . Jambase.deps    # default targets and dependencies
85 # rules and actions
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)" ;
123 } else {
124   softinclude $(HOME)/.jam.rc ;
125   include $(JAMFILE) ;