9116971a3e19e34ab2377b2ca618824b94147eff
[kopensolaris-gnu/glibc.git] / Makeconfig
1 # Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
2 # This file is part of the GNU C Library.
3
4 # The GNU C Library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Library General Public License as
6 # published by the Free Software Foundation; either version 2 of the
7 # License, or (at your option) any later version.
8
9 # The GNU C Library 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 GNU
12 # Library General Public License for more details.
13
14 # You should have received a copy of the GNU Library General Public
15 # License along with the GNU C Library; see the file COPYING.LIB.  If
16 # not, write to the Free Software Foundation, Inc., 675 Mass Ave,
17 # Cambridge, MA 02139, USA.
18
19 #
20 #       Makefile configuration options for the GNU C library.
21 #
22 ifneq (,)
23 This makefile requires GNU Make.
24 endif
25
26 ifneq "$(origin +included-Makeconfig)" "file"
27
28 +included-Makeconfig := yes
29
30 ifdef subdir
31 .. := ../
32 endif
33
34 # If config.make exists, the source directory was configured,
35 # so don't try to be clever and find another directory to build in.
36 ifneq (,$(wildcard $(..)config.make))
37 ARCH =
38 machine =
39 else    # Not configured.
40 ifndef ARCH
41 ifdef machine
42 ARCH = $(machine)
43 endif # machine
44 endif # ARCH
45 endif # config.make
46
47 # Directory for object files and libc.a.  If this is not defined, the
48 # object files live in the subdirectories where their sources live, and
49 # libc.a lives in the parent directory (this probably doesn't work any
50 # more).
51 ifdef ARCH
52 ifeq ($(filter /%,$(ARCH)),)
53 objdir := $(..)$(ARCH)
54 else
55 objdir = $(ARCH)
56 endif
57 endif
58
59 # $(common-objdir) is the place to put objects and 
60 # such that are not specific to a single subdir.
61 ifdef objdir
62 objpfx = $(objdir)/
63 common-objpfx = $(objpfx)
64 common-objdir = $(objdir)
65 else
66 objpfx :=
67 ifdef ..
68 common-objpfx = $(..)
69 common-objdir = ..
70 else
71 # This is a kludge.  make wizards might grok.
72 common-objpfx = sysdeps/../
73 endif
74 endif
75
76 libc.a = $(common-objpfx)libc.a
77
78
79 # Get the values defined by options to `configure'.
80 include $(common-objpfx)config.make
81
82 # Force the user to configure before making.
83 $(common-objpfx)config.make:
84         @echo The GNU C library has not been configured. >&2
85         @echo Run \`configure\' to configure it before building. >&2
86         @exit 1
87
88 # Get the user's configuration parameters.
89 ifneq ($(wildcard $(..)configparms),)
90 include $(..)configparms
91 endif
92 ifneq ($(objpfx),)
93 ifneq ($(wildcard $(objpfx)configparms),)
94 include $(objpfx)configparms
95 endif
96 endif
97 \f
98 ####
99 ####    These are the configuration variables.  You can define values for
100 ####    the variables below in the file `configparms'.
101 ####    Do NOT edit this file.
102 ####
103
104
105 # Common prefix for machine-independent installation directories.
106 ifndef prefix
107 prefix = /usr/local
108 endif
109
110 # Common prefix for machine-dependent installation directories.
111 ifndef exec_prefix
112 exec_prefix = $(prefix)
113 endif
114
115 # Where to install the library and object files.
116 ifndef libdir
117 libdir = $(exec_prefix)/lib
118 endif
119
120 # Where to install the header files.
121 ifndef includedir
122 includedir = $(exec_prefix)/include
123 endif
124
125 # Define if the library should install its own <stddef.h>.
126 # Do this unless you are using version 2.2 or later of GCC.
127 ifndef stddef.h
128 stddef.h = stddef.h
129 endif
130
131 # Define if the library should install its own <stdarg.h>.
132 # Do this unless you are using version 2.3 or later of GCC.
133 ifndef stdarg.h
134 stdarg.h := stdarg.h $(wildcard va-*.h)
135 endif
136
137 # Where to install machine-independent data files.
138 # These are the timezone database, and eventually the locale database.
139 ifndef datadir
140 datadir = $(prefix)/lib
141 endif
142
143 # Where to install the timezone data files (which are machine-independent).
144 ifndef zonedir
145 zonedir = $(datadir)/zoneinfo
146 endif
147
148 # Where to install programs.
149 ifndef bindir
150 bindir = $(exec_prefix)/bin
151 endif
152
153 # Where to install the Info files.
154 ifndef infodir
155 infodir = $(prefix)/info
156 endif
157
158 # What timezone should be the installed default (e.g., US/Eastern).
159 # Run `make -C time echo-zonenames' to see a list of available zone names.
160 # The local timezone can be changed with `zic -l TIMEZONE' at any time.
161 ifndef localtime
162 localtime = Factory
163 endif
164
165 # Where to install the "localtime" timezone file; this is the file whose
166 # contents $(localtime) specifies.  If this is a relative pathname, it is
167 # relative to $(zonedir).  It is a good idea to put this somewhere
168 # other than there, so the zoneinfo directory contains only universal data,
169 # localizing the configuration data elsewhere.
170 ifndef localtime-file
171 localtime-file = $(prefix)/etc/localtime
172 endif
173
174 # What timezone's DST rules should be used when a POSIX-style TZ
175 # environment variable doesn't specify any rules.  For 1003.1 compliance
176 # this timezone must use rules that are as U.S. federal law defines DST.
177 # Run `make -C time echo-zonenames' to see a list of available zone names.
178 # This setting can be changed with `zic -p TIMEZONE' at any time.
179 ifndef posixrules
180 posixrules = US/Eastern
181 endif
182
183 # Where to install the "posixrules" timezone file; this is file
184 # whose contents $(posixrules) specifies.  If this is a relative
185 # pathname, it is relative to $(zonedir).
186 ifndef posixrules-file
187 posixrules-file = posixrules
188 endif
189
190
191 # Directory where your system's native header files live.
192 # This is used on Unix systems to generate some GNU libc header files.
193 ifndef sysincludedir
194 sysincludedir = /usr/include
195 endif
196
197
198 # Commands to install files.
199 ifndef INSTALL_DATA
200 INSTALL_DATA = $(INSTALL) -m 644
201 endif
202 ifndef INSTALL_PROGRAM
203 INSTALL_PROGRAM = $(INSTALL)
204 endif
205 ifndef INSTALL
206 INSTALL = install
207 endif
208
209
210 # The name of the C compiler.
211 # If you've got GCC, and it works, use it.
212 ifeq ($(origin CC),default)
213 CC := gcc
214 endif
215
216 # These are preprocessor macros we want to predefine.  Define HAVE_GNU_LD
217 # if using GNU ld (which you should do if possible).  If you do this, you
218 # may need the GNU assembler as well.  If you don't do this, your library
219 # won't work as well (and won't be strictly compliant with the ANSI C
220 # and POSIX.1 standards).
221 +defines = $(config-defines) $(defines)
222
223 # Default flags to pass the C compiler.
224 ifndef default_cflags
225 default_cflags := -g
226 endif
227
228 # Flags to pass the C compiler when assembling preprocessed assembly code
229 # (`.S' files).  On some systems the assembler doesn't understand the `#' line
230 # directives the preprocessor produces.  If you have troubling compiling
231 # assembly code, try using -P here to suppress these directives.
232 ifndef asm-CPPFLAGS
233 asm-CPPFLAGS =
234 endif
235
236 # Command for linking programs with the C library.
237 ifndef +link
238 +link = $(CC) -nostdlib $(LDFLAGS) -o $@ \
239         $(common-objpfx)start.o $(^:lib=$(libc.a)) $(gnulib) $(libc.a)
240 endif
241 ifndef gnulib
242 gnulib := -lgcc
243 endif
244
245 ifndef LD
246 LD := ld -X
247 endif
248
249 ifndef  RANLIB
250 RANLIB = ranlib
251 endif
252
253 # Define non-empty if the C compiler understands -v (print version).
254 +cc_version = $(filter gcc,$(notdir $(firstword $(CC)))) # if using gcc
255
256 # Extra flags to pass to GCC.
257 +gccwarn := -Wall -Wwrite-strings
258 +gccopt := -fstrength-reduce
259
260 # This is the program that generates makefile
261 # dependencies from C source files.
262 ifndef +mkdep
263 +mkdep = $(CC) -M
264 endif
265
266 # The program that makes Emacs-style TAGS files.
267 ETAGS   := etags -T
268
269 # The `m4' macro processor; this is used by sysdeps/sparc/Makefile (and
270 # perhaps others) to preprocess assembly code in some cases.
271 M4 = m4
272
273 ####
274 #### End of configuration variables.
275 ####
276 \f
277 # This tells some versions of GNU make before 3.63 not to export all variables.
278 .NOEXPORT:
279
280 # We want to echo the commands we're running without
281 # umpteem zillion filenames along with it (we use `...' instead)
282 # but we don't want this echoing done when the user has said
283 # he doesn't want to see commands echoed by using -s.
284 ifneq   "$(findstring s,$(MAKEFLAGS))" ""       # if -s
285 +cmdecho        := echo >/dev/null
286 else                                            # not -s
287 +cmdecho        := echo
288 endif                                           # -s
289 \f
290 # These are the flags given to the compiler to tell
291 # it what sort of optimization and/or debugging output to do.
292 ifndef  +cflags
293 # If `CFLAGS' was defined, use that.
294 ifdef           CFLAGS
295 +cflags := $(filter-out -I%,$(CFLAGS))
296 endif           # CFLAGS
297 endif   # +cflags
298
299 # If none of the above worked, default to "-g".
300 ifeq    "$(strip $(+cflags))" ""
301 +cflags := $(default_cflags)
302 endif   # $(+cflags) == ""
303
304 # If using gcc, add flags that only it will grok.
305 ifneq   "$(findstring gcc,$(CC))" ""
306 +cflags := $(+cflags) $(+gccwarn)
307 ifneq   "$(filter -O,$(+cflags))" ""
308 +cflags := $(+cflags) $(+gccopt)
309 +gcc-nowarn := -w
310 endif
311 else
312 +gcc-nowarn :=
313 endif   # gcc
314
315 # Don't duplicate options if we inherited variables from the parent.
316 +cflags := $(sort $(+cflags))
317
318
319 ifneq   "$(findstring v,$(MAKEFLAGS))" ""       # if -v
320 ifneq   "$(strip $(+cc_version))" ""
321 # If Make is telling us version info, tell the compiler to do so as well.
322 CC      := $(CC) -v
323 endif   # +cc_version
324 endif                                           # -v
325 \f
326 # These are flags given to the C compiler to tell it to look for include
327 # files (including ones given in angle brackets) in the current directory
328 # and in the parent library source directory.
329 # `+sysdep-includes' will be defined by Makerules.
330 ifneq "$(..)" ""
331 +includes       = -I. -I$(patsubst %/,%,$(..)) $(includes) $(+sysdep-includes)
332 else
333 +includes       = -I. $(includes) $(+sysdep-includes)
334 endif
335
336
337 # These are the variables that the implicit compilation rules use.
338 CPPFLAGS = $(+includes) $(+defines) -D_LIBC
339 override CFLAGS = $(+cflags)
340
341
342 # This is the macro that the implicit linking rules use.
343 ifneq "$(filter -g,$(+cflags))" "" # -g is in $(+cflags)
344 LDFLAGS := -g
345 endif
346
347
348 ifneq "$(filter -DHAVE_GNU_LD,$(CPPFLAGS))" ""
349 +gnu-stabs := yes
350 endif
351
352 ifneq "$(filter -DHAVE_GNU_AS,$(CPPFLAGS))" ""
353 gnu-as := yes
354 endif
355
356
357 endif # Makeconfig not yet included