6acd205616d969ea95c8b3a26b2aeab7b880ca7b
[feisty_meow.git] / scripts / clam / variables.def
1
2 # CLAM System default variable definitions.
3
4 ###############################################################################
5
6 # This file contains definitions and descriptions of the variables used
7 # in the CLAM system (Coordinated Library Automagic Make).  This defaults
8 # file should be included near the start of the user's makefile, and then the
9 # rules file should be included after the user has modified the appropriate
10 # variables and added the appropriate rules and targets.
11
12 ###############################################################################
13
14 # OP_SYSTEM is a flag that specifies the operating system under which
15 # the makefile system is executing.
16 export OP_SYSTEM
17 #OP_SYSTEM := UNIX = unix | OS2 = ibm os/2 | SYSV = v unix | DOS = pc dos
18 #    | WIN32 = ms-win32 / NT.
19
20 # OS_SUBCLASS is a finer differentiation of the OP_SYSTEM.  currently only
21 # the darwin subclass for unix is considered.
22 export OS_SUBCLASS
23 #OS_SUBCLASS := darwin | 
24
25 # set the default operating system when none is specified.
26 ifeq "$(OP_SYSTEM)" ""
27 #is there a nice way to join the greps?
28   IS_UNIX := $(shell uname | grep -i linux)
29   ifeq "$(IS_UNIX)" ""
30     IS_UNIX := $(shell uname | grep -i unix)
31     ifeq "$(IS_UNIX)" "" 
32       IS_UNIX := $(shell uname | grep -i darwin)
33       ifneq "$(IS_UNIX)" ""
34         # pick the subclass now that we know this is darwin.
35         OS_SUBCLASS := darwin
36       endif
37     endif
38   endif
39   IS_DOS := $(shell uname | grep -i cygwin)
40   ifeq "$(IS_DOS)" ""
41     IS_DOS := $(shell uname | grep -i ming)
42   endif
43   ifneq "$(IS_UNIX)" ""
44     OP_SYSTEM := UNIX
45   else
46     ifneq "$(IS_DOS)" ""
47       OP_SYSTEM := WIN32
48     else
49       # we don't have other comparisons yet, so we'll assume unix.  fix this
50       # if it's not your default operating system.
51       OP_SYSTEM := UNIX
52     endif
53   endif
54 endif
55
56 # now set a special ending for EXE files, which differs between the OSes.
57 export EXE_END
58 ifeq "$(OP_SYSTEM)" "WIN32"
59   EXE_END := .exe
60 endif
61
62 ###############################################################################
63
64 # "FEISTY_MEOW_APEX" is the root of the "build" for our compilation oriented
65 # features.  All source code and build helper files are usually found there.
66 # The build targets to be built are usually stored there also, although the
67 # targets can be located elsewhere if desired.  see TARGETS_DIR below.
68 export FEISTY_MEOW_APEX
69 ifeq "$(FEISTY_MEOW_APEX)" ""
70 #  FEISTY_MEOW_APEX = 
71 #uhhh, use the current location?
72 #currently we rely on this being set from shell bootstrapping.  is that bad?
73 endif
74
75 # "FEISTY_MEOW_SCRIPTS" is the root location of our scripts.  we expect to
76 # be able to find a few things there reliably.
77 export FEISTY_MEOW_SCRIPTS
78 ifeq "$(FEISTY_MEOW_SCRIPTS)" ""
79   export FEISTY_MEOW_SCRIPTS := $(FEISTY_MEOW_APEX)/scripts
80 endif
81
82 # "PRODUCTION_DIR" is where components required for building the code or
83 # installers can be found.
84 #hmmm: is this redundant?
85 export PRODUCTION_DIR
86 ifeq "$(PRODUCTION_DIR)" ""
87   PRODUCTION_DIR=$(FEISTY_MEOW_APEX)/production
88 endif
89
90 # "CLAM_DIR" points at where the CLAM source files are located.  this is needed
91 # for finding shell scripts used during compilation.  if you are not using the
92 # standard CLAM location, then modify this appropriately.
93 export CLAM_DIR
94 ifeq "$(CLAM_DIR)" ""
95   export CLAM_DIR := $(FEISTY_MEOW_SCRIPTS)/clam
96 endif
97
98 # "TARGETS_DIR" is where all generated files will end up.  Usually the
99 # files are put in a subdirectory named after their file type, such as
100 # "include".  These subdirectories will all live under the TARGETS_DIR.
101 export TARGETS_DIR
102 ifeq "$(TARGETS_DIR)" ""
103   # the default is to generate files into subdirectories that are at the
104   # top-level of the repository.
105   TARGETS_DIR = $(FEISTY_MEOW_APEX)
106 endif
107
108 # "CURRENT_DIR" is the directory where this make was started.
109 export CURRENT_DIR := $(shell pwd)
110
111 ###############################################################################
112
113 # "PROJECT" is the root name for the project being compiled.  It is used
114 # in generated directory names and for other purposes of uniquification.
115 # This is a variable that _must_ be supplied by the user's makefile.
116 # Examples:
117 #     PROJECT = basis
118 #     PROJECT = test_parser
119 export PROJECT
120
121 # "TARGETS" are the files to be created by CLAM.  It is assumed that each
122 # target listed has a corresponding rule that causes it to be processed.
123 # Targets are automatically deleted when the "make clean" command is used.
124 export TARGETS
125
126 # "ACTUAL_TARGETS" is how the targets are expected to be passed to the rules
127 # file; this allows a plug-in module's rules to manipulate the TARGETS to make
128 # sure that important files don't get deleted by the automatic deletion done
129 # with "make clean."  If the real module used does not create a variable called
130 # ACTUAL_TARGETS from the TARGETS, then the default specified here is used.
131 export ACTUAL_TARGETS = $(TARGETS)
132
133 # "FIRST_TARGETS" and "LAST_TARGETS" are targets that need to be processed
134 # before and after the "TARGETS".
135 #FIRST_TARGETS =
136 #LAST_TARGETS =
137
138 # "ACTUAL_FIRST_TARGETS" is the real variable that should be passed to the
139 # rules for reasons similar to ACTUAL_TARGETS above.  Some language
140 # dependent modules need to modify the first targets by inserting targets
141 # before those provided by the user.  "ACTUAL_LAST_TARGETS" is similar. 
142 ACTUAL_FIRST_TARGETS = $(FIRST_TARGETS)
143 ACTUAL_LAST_TARGETS = $(LAST_TARGETS)
144
145 # "BUILD_BEFORE" is a list of projects that need to be created before this
146 # project can be created.  The projects are expected to match subdirectories
147 # below this project.  make will change to that subdirectory and run the
148 # makefile contained therein.
149 #BUILD_BEFORE =
150
151 # "BUILD_AFTER" is similar to BUILD_BEFORE, but these are done after the rest.
152 #BUILD_AFTER =
153
154 # "RUN_TARGETS" is a list of programs that should be executed as part of a make.
155 export RUN_TARGETS
156 # "RUN_ALL_TESTS" turns on execution of the RUN_TARGETS.
157 export RUN_ALL_TESTS
158
159 # "MAKEFILE_NAME" works with BUILD_BEFORE and BUILD_AFTER.  This allows
160 # the name of the makefile in the subdirectory to be changed to something other
161 # than 'makefile'.
162 export MAKEFILE_NAME = makefile
163
164 ############################################################################
165
166 # "FIND" is a macro that points to the real find command, which is the unix
167 # find command.  on dosdows, the find command is utter garbage and we need
168 # to make sure we don't accidentally run that inferior one.
169 export FIND = find
170
171 # "PARAMETER_FILE" is the location of our version stamps (if defined) and
172 # also contains any extra flags passed to the compilation.
173 ifeq "$(PARAMETER_FILE)" ""
174   # the default assumes that clam lives under the main hoople branch.
175   export PARAMETER_FILE = $(CLAM_DIR)/clam_parms.ini
176 endif
177
178 # ensure that our version variables are available to sub-shells.
179 export major
180 export minor
181 export revision
182 export build
183 export TRIPART_VERSION = .$(major).$(minor).$(revision)
184
185 # now pull those build parameters in.
186 include $(PARAMETER_FILE)
187
188 ############################################################################
189
190 # "CLEAN" is a powerful flag that affects what clam does.  if the flag is
191 # non-empty, then nothing will be built and every generated file that is
192 # known about will be deleted.  it is intended as exported, since then sub-
193 # shells know that they are cleaning and we do not have to pass them a
194 # target.
195 #hmmm: (although we do?)
196 export CLEAN
197 # "CLEANUPS" are things to be removed by the "make clean" command.
198 undefine CLEANUPS
199 # OTHER_CLEANS are targets to execute before performing the main clean up.
200 # we intentionally reset this here to avoid a polluted variable getting
201 # to us from a previous make.
202 undefine OTHER_CLEANS
203
204 # sets the temporary directory.
205 export CLAM_TMP
206 ifeq "$(CLAM_TMP)" ""
207   CLAM_TMP := $(GENERATED_DIR)/clam_tmp
208 endif
209
210 #turned off for the moment, since this seems like a bad idea; we define clam tmp in terms of tmp sometimes, don't we???
211 #ifeq "$(OP_SYSTEM)" "WIN32"
212 #  # set these so that compilers and such will use them.
213 #  export TMP := $(CLAM_TMP)
214 #  export TEMP := $(CLAM_TMP)
215 #endif
216
217 # "FAILURE_FILE" is a file that is used as a flag to track failures.  if the
218 # file exists, then it is assumed that a failure happened during the current
219 # make.
220 export FAILURE_FILE = $(CLAM_TMP)/clam_failure.$(PROJECT)
221
222 # "DIRTY_FILE" is a file that signifies that some targets have been remade.
223 # it is not used at the base level of clam, but language-specific versions
224 # might do something special if targets were remade.
225 export DIRTY_FILE = $(CLAM_TMP)/clam_acted.$(PROJECT)
226
227 # "SUBMAKE_FLAG" is a file whose presence indicates that the submake performed
228 # some actions.  that can be interpreted by some language-specific versions
229 # as a reason to set the dirty flag.
230 export SUBMAKE_FLAG = $(CLAM_TMP)/clam_submake.$(PROJECT)
231
232 # "FLAG_FILES" is a list of all the files that are used for compilation flags.
233 # they are whacked at the beginning and end of a make.
234 export FLAG_FILES = $(FAILURE_FILE) $(DIRTY_FILE)
235
236 # "SUB_FLAG_FILES" is a list of the compilation flag files which should be
237 # destroyed only at the end of a make.  they are communication back
238 # from sub-makefiles.
239 export SUB_FLAG_FILES = $(SUBMAKE_FLAG)
240
241 # "SHELL" is used by gnu make to specify the shell that executes programs.
242 SHELL = /bin/bash
243
244 # "SH" is the shell that will execute all commands.  this is our own variable;
245 # it is not used by gnu make.  currently we just default to the standard
246 # SHELL variable above.
247 export SH = $(SHELL)
248
249 # "HIDER" cloaks the commands that are sent to the operating system.  The
250 # HIDER macro has the "@" symbol in it if the make is _not_ verbose; this
251 # hides the commands that are executed.  If the make _is_ to be verbose,
252 # then the "@" is removed.
253 HIDER_CHAR = @
254 ifneq "$(NOISY)" ""
255   # If the special NOISY flag is true, then the make will be _very_ verbose.
256   HIDER_CHAR =
257 endif
258 # Put together the full hider package.
259 HIDER = $(HIDER_CHAR)
260
261 # "HIDESH" is a hider that executes a sub-shell.  This is needed for proper
262 # execution of inlined shell scripting.  Note that the space at the end of
263 # the line is required.
264 HIDESH = $(HIDER) $(SH) 
265
266 # "CATCHER" is a hider that looks for errors in the command being run and
267 # stops the make if any are seen.
268 CATCHER = $(HIDESH) $(CLAM_DIR)/badness_catcher.sh 
269
270 # "NOISY" causes the compilation to be verbose.  All commands issued are echoed
271 # to the standard output.
272 export NOISY
273
274 # "QUIET" has the effect of silencing certain internal clam printouts.
275 #QUIET =
276
277 # "CLAM_ERROR_SOUND" causes the named file to be played for error conditions that
278 # stop the build.
279 export CLAM_ERROR_SOUND
280
281 # "CLAM_FINISH_SOUND" causes the file specified to be played when the make is
282 # complete.
283 export CLAM_FINISH_SOUND
284