more changes, to remove the repository dir variable.
[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_DIR" 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_DIR
69 ifeq "$(FEISTY_MEOW_DIR)" ""
70 #  FEISTY_MEOW_DIR = 
71 #uhhh, use the current location?
72 endif
73
74 # "CLAM_DIR" points at where the CLAM source files are located.  this is needed
75 # for finding shell scripts used during compilation.  if you are not using the
76 # standard CLAM location, then modify this appropriately.
77 export CLAM_DIR
78 # must be set externally!
79 #export CLAM_DIR := $(FEISTY_MEOW_SCRIPTS)/clam
80
81 # "TARGETS_DIR" is where all generated files will end up.  Usually the
82 # files are put in a subdirectory named after their file type, such as
83 # "include".  These subdirectories will all live under the TARGETS_DIR.
84 export TARGETS_DIR
85 ifeq "$(TARGETS_DIR)" ""
86   # the default is to generate files into subdirectories that are at the
87   # top-level of the repository.
88   TARGETS_DIR = $(FEISTY_MEOW_DIR)
89 endif
90
91 # "CLAM_BIN" points at the location for helper binaries and shell scripts.
92 export CLAM_BIN = $(PRODUCTION_DIR)/clam_bin
93
94 # "CURRENT_DIR" is the directory where this make was started.
95 export CURRENT_DIR := $(shell pwd)
96
97 ###############################################################################
98
99 # "PROJECT" is the root name for the project being compiled.  It is used
100 # in generated directory names and for other purposes of uniquification.
101 # This is a variable that _must_ be supplied by the user's makefile.
102 # Examples:
103 #     PROJECT = basis
104 #     PROJECT = test_parser
105 export PROJECT
106
107 # "TARGETS" are the files to be created by CLAM.  It is assumed that each
108 # target listed has a corresponding rule that causes it to be processed.
109 # Targets are automatically deleted when the "make clean" command is used.
110 export TARGETS
111
112 # "ACTUAL_TARGETS" is how the targets are expected to be passed to the rules
113 # file; this allows a plug-in module's rules to manipulate the TARGETS to make
114 # sure that important files don't get deleted by the automatic deletion done
115 # with "make clean."  If the real module used does not create a variable called
116 # ACTUAL_TARGETS from the TARGETS, then the default specified here is used.
117 export ACTUAL_TARGETS = $(TARGETS)
118
119 # "FIRST_TARGETS" and "LAST_TARGETS" are targets that need to be processed
120 # before and after the "TARGETS".
121 #FIRST_TARGETS =
122 #LAST_TARGETS =
123
124 # "ACTUAL_FIRST_TARGETS" is the real variable that should be passed to the
125 # rules for reasons similar to ACTUAL_TARGETS above.  Some language
126 # dependent modules need to modify the first targets by inserting targets
127 # before those provided by the user.  "ACTUAL_LAST_TARGETS" is similar. 
128 ACTUAL_FIRST_TARGETS = $(FIRST_TARGETS)
129 ACTUAL_LAST_TARGETS = $(LAST_TARGETS)
130
131 # "BUILD_BEFORE" is a list of projects that need to be created before this
132 # project can be created.  The projects are expected to match subdirectories
133 # below this project.  make will change to that subdirectory and run the
134 # makefile contained therein.
135 #BUILD_BEFORE =
136
137 # "BUILD_AFTER" is similar to BUILD_BEFORE, but these are done after the rest.
138 #BUILD_AFTER =
139
140 # "RUN_TARGETS" is a list of programs that should be executed as part of a make.
141 export RUN_TARGETS
142
143 # "MAKEFILE_NAME" works with BUILD_BEFORE and BUILD_AFTER.  This allows
144 # the name of the makefile in the subdirectory to be changed to something other
145 # than 'makefile'.
146 export MAKEFILE_NAME = makefile
147
148 ############################################################################
149
150 # "FIND" is a macro that points to the real find command, which is the unix
151 # find command.  on dosdows, the find command is utter garbage and we need
152 # to make sure we don't accidentally run that inferior one.
153 export FIND = find
154 #ifeq "$(OP_SYSTEM)" "WIN32"
155 #  export FIND = $(FEISTY_MEOW_DIR)/msys/bin/find
156 #endif
157
158 # "PARAMETER_FILE" is the location of our version stamps (if defined) and
159 # also contains any extra flags passed to the compilation.
160 ifeq "$(PARAMETER_FILE)" ""
161   # the default assumes that clam lives under the main hoople branch.
162   export PARAMETER_FILE = $(CLAM_DIR)/clam_parms.ini
163 endif
164
165 # ensure that our version variables are available to sub-shells.
166 export major
167 export minor
168 export revision
169 export build
170 export TRIPART_VERSION = .$(major).$(minor).$(revision)
171
172 # now pull those build parameters in.
173 include $(PARAMETER_FILE)
174
175 ############################################################################
176
177 # "CLEAN" is an powerful flag that affects what clam does.  if the flag is
178 # non-empty, then nothing will be built and every generated file that is
179 # known about will be deleted.
180 export CLEAN
181 # "CLEANUPS" are things to be removed by the "make clean" command.
182 #CLEANUPS =
183 # OTHER_CLEANS are targets to execute before performing the main clean up.
184 #OTHER_CLEANS =
185
186 # sets the temporary directory.
187 export CLAM_TMP
188 ifeq "$(CLAM_TMP)" ""
189   CLAM_TMP := $(WASTE_DIR)
190 endif
191
192 ifeq "$(OP_SYSTEM)" "WIN32"
193   # set these so that compilers and such will use them.
194   export TMP := $(CLAM_TMP)
195   export TEMP := $(CLAM_TMP)
196 endif
197
198 # "FAILURE_FILE" is a file that is used as a flag to track failures.  if the
199 # file exists, then it is assumed that a failure happened during the current
200 # make.
201 export FAILURE_FILE = $(CLAM_TMP)/clam_failure.$(PROJECT)
202
203 # "DIRTY_FILE" is a file that signifies that some targets have been remade.
204 # it is not used at the base level of clam, but language-specific versions
205 # might do something special if targets were remade.
206 export DIRTY_FILE = $(CLAM_TMP)/clam_acted.$(PROJECT)
207
208 # "SUBMAKE_FLAG" is a file whose presence indicates that the submake performed
209 # some actions.  that can be interpreted by some language-specific versions
210 # as a reason to set the dirty flag.
211 export SUBMAKE_FLAG = $(CLAM_TMP)/clam_submake.$(PROJECT)
212
213 # "FLAG_FILES" is a list of all the files that are used for compilation flags.
214 # they are whacked at the beginning and end of a make.
215 export FLAG_FILES = $(FAILURE_FILE) $(DIRTY_FILE)
216
217 # "SUB_FLAG_FILES" is a list of the compilation flag files which should be
218 # destroyed only at the end of a make.  they are communication back
219 # from sub-makefiles.
220 export SUB_FLAG_FILES = $(SUBMAKE_FLAG)
221
222 # "SHELL" is used by gnu make to specify the shell that executes programs.
223 SHELL = /bin/bash
224
225 # "SH" is the shell that will execute all commands.  this is our own variable;
226 # it is not used by gnu make.  currently we just default to the standard
227 # SHELL variable above.
228 export SH = $(SHELL)
229
230 # "HIDER" cloaks the commands that are sent to the operating system.  The
231 # HIDER macro has the "@" symbol in it if the make is _not_ verbose; this
232 # hides the commands that are executed.  If the make _is_ to be verbose,
233 # then the "@" is removed.
234 HIDER_CHAR = @
235 ifneq "$(NOISY)" ""
236   # If the special NOISY flag is true, then the make will be _very_ verbose.
237   HIDER_CHAR =
238 endif
239 # Put together the full hider package.
240 HIDER = $(HIDER_CHAR)
241
242 # "HIDESH" is a hider that executes a sub-shell.  This is needed for proper
243 # execution of inlined shell scripting.  Note that the space at the end of
244 # the line is required.
245 HIDESH = $(HIDER) $(SH) 
246
247 # "CATCHER" is a hider that looks for errors in the command being run and
248 # stops the make if any are seen.
249 CATCHER = $(HIDESH) $(CLAM_DIR)/badness_catcher.sh 
250
251 # "NOISY" causes the compilation to be verbose.  All commands issued are echoed
252 # to the standard output.
253 export NOISY
254
255 # "QUIET" has the effect of silencing certain internal clam printouts.
256 #QUIET =
257
258 # "CLAM_ERROR_SOUND" causes the named file to be played for error conditions that
259 # stop the build.
260 export CLAM_ERROR_SOUND
261
262 # "CLAM_FINISH_SOUND" causes the file specified to be played when the make is
263 # complete.
264 export CLAM_FINISH_SOUND
265