# Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public License as # published by the Free Software Foundation; either version 2 of the # License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Library General Public License for more details. # You should have received a copy of the GNU Library General Public # License along with the GNU C Library; see the file COPYING.LIB. If # not, write to the Free Software Foundation, Inc., 675 Mass Ave, # Cambridge, MA 02139, USA. # # Makefile configuration options for the GNU C library. # ifneq (,) This makefile requires GNU Make. endif ifneq "$(origin +included-Makeconfig)" "file" +included-Makeconfig := yes ifdef subdir .. := ../ endif # If config.make exists, the source directory was configured, # so don't try to be clever and find another directory to build in. ifneq (,$(wildcard $(..)config.make)) ARCH = machine = else # Not configured. ifndef ARCH ifdef machine ARCH = $(machine) endif # machine endif # ARCH endif # config.make # Directory for object files and libc.a. If this is not defined, the # object files live in the subdirectories where their sources live, and # libc.a lives in the parent directory (this probably doesn't work any # more). ifdef ARCH ifeq ($(filter /%,$(ARCH)),) objdir := $(..)$(ARCH) else objdir = $(ARCH) endif endif # $(common-objdir) is the place to put objects and # such that are not specific to a single subdir. ifdef objdir objpfx = $(objdir)/ common-objpfx = $(objpfx) common-objdir = $(objdir) else objpfx := ifdef .. common-objpfx = $(..) common-objdir = .. else # This is a kludge. make wizards might grok. common-objpfx = sysdeps/../ endif endif libc.a = $(common-objpfx)libc.a # Get the values defined by options to `configure'. include $(common-objpfx)config.make # Force the user to configure before making. $(objpfx)config.make: @echo The GNU C library has not been configured. >&2 @echo Run \`configure\' to configure it before building. >&2 @exit 1 # Get the user's configuration parameters. ifneq ($(wildcard $(..)configparms),) include $(..)configparms endif ifneq ($(objpfx),) ifneq ($(wildcard $(objpfx)configparms),) include $(objpfx)configparms endif endif #### #### These are the configuration variables. You can define values for #### the variables below in the file `configparms'. #### Do NOT edit this file. #### # Common prefix for machine-independent installation directories. ifndef prefix prefix = /usr/local endif # Common prefix for machine-dependent installation directories. ifndef exec_prefix exec_prefix = $(prefix) endif # Where to install the library and object files. ifndef libdir libdir = $(exec_prefix)/lib endif # Where to install the header files. ifndef includedir includedir = $(exec_prefix)/include endif # Define if the library should install its own . # Do this unless you are using version 2.2 or later of GCC. ifndef stddef.h stddef.h = stddef.h endif # Define if the library should install its own . # Do this unless you are using version 2.3 or later of GCC. ifndef stdarg.h stdarg.h := stdarg.h $(wildcard va-*.h) endif # Where to install machine-independent data files. # These are the timezone database, and eventually the locale database. ifndef datadir datadir = $(prefix)/lib endif # Where to install programs. ifndef bindir bindir = $(exec_prefix)/bin endif # What timezone should be the installed default (e.g., US/Eastern). # Run `make -C time echo-zonenames' to see a list of available zone names. # The local timezone can be changed with `zic -l TIMEZONE' at any time. ifndef localtime localtime = Factory endif # Where to install the "localtime" timezone file; this is the file # whose contents $(localtime) specifies. If this is a relative # pathname, it is relative to $(datadir)/zoneinfo. ifndef localtime-file localtime-file = $(prefix)/etc/localtime endif # What timezone's DST rules should be used when a POSIX-style TZ # environment variable doesn't specify any rules. For 1003.1 compliance # this timezone must use rules that are as U.S. federal law defines DST. # Run `make -C time echo-zonenames' to see a list of available zone names. # This setting can be changed with `zic -p TIMEZONE' at any time. ifndef posixrules posixrules = US/Eastern endif # Where to install the "posixrules" timezone file; this is file # whose contents $(posixrules) specifies. If this is a relative # pathname, it is relative to $(datadir)/zoneinfo. ifndef posixrules-file posixrules-file = posixrules endif # Directory where your system's native header files live. # This is used on Unix systems to generate some GNU libc header files. ifndef sysincludedir sysincludedir = /usr/include endif # Commands to install files. ifndef INSTALL_DATA INSTALL_DATA = $(INSTALL) -m 644 endif ifndef INSTALL_PROGRAM INSTALL_PROGRAM = $(INSTALL) endif ifndef INSTALL INSTALL = install endif # The name of the C compiler. # If you've got GCC, and it works, use it. ifeq ($(origin CC),default) CC := gcc endif # These are preprocessor macros we want to predefine. Define HAVE_GNU_LD # if using GNU ld (which you should do if possible). If you do this, you # may need the GNU assembler as well. If you don't do this, your library # won't work as well (and won't be strictly compliant with the ANSI C # and POSIX.1 standards). +defines = $(config-defines) $(defines) # Default flags to pass the C compiler. ifndef default_cflags +default_cflags := -g endif # Flags to pass the C compiler when assembling preprocessed assembly code # (`.S' files). On some systems the assembler doesn't understand the `#' line # directives the preprocessor produces. If you have troubling compiling # assembly code, try using -P here to suppress these directives. ifndef asm-CPPFLAGS asm-CPPFLAGS = endif # Command for linking programs with the C library. ifndef +link +link = $(CC) -nostdlib -o $@ $(common-objpfx)start.o $(^:lib=$(libc.a)) \ $(gnulib) $(libc.a) endif ifndef gnulib gnulib := -lgcc endif ifndef LD LD := ld -X endif ifndef RANLIB RANLIB = ranlib endif # Define non-empty if the C compiler understands -v (print version). +cc_version = $(filter gcc,$(notdir $(firstword $(CC)))) # if using gcc # Extra flags to pass to GCC. +gccwarn := -Wall -Wwrite-strings +gccopt := -fstrength-reduce # This is the program that generates makefile # dependencies from C source files. ifndef +mkdep +mkdep = $(CC) -M endif # The program that makes Emacs-style TAGS files. ETAGS := etags -T # The `m4' macro processor; this is used by sysdeps/sparc/Makefile (and # perhaps others) to preprocess assembly code in some cases. M4 = m4 #### #### End of configuration variables. #### # This tells some versions of GNU make before 3.63 not to export all variables. .NOEXPORT: # We want to echo the commands we're running without # umpteem zillion filenames along with it (we use `...' instead) # but we don't want this echoing done when the user has said # he doesn't want to see commands echoed by using -s. ifneq "$(findstring s,$(MAKEFLAGS))" "" # if -s +cmdecho := echo >/dev/null else # not -s +cmdecho := echo endif # -s # These are the flags given to the compiler to tell # it what sort of optimization and/or debugging output to do. ifndef +cflags # If `CFLAGS' was defined, use that. ifdef CFLAGS +cflags := $(filter-out -I%,$(CFLAGS)) endif # CFLAGS endif # +cflags # If none of the above worked, default to "-g". ifeq "$(strip $(+cflags))" "" +cflags := $(+default_cflags) endif # $(+cflags) == "" # If using gcc, add flags that only it will grok. ifneq "$(findstring gcc,$(CC))" "" +cflags := $(+cflags) $(+gccwarn) ifneq "$(filter -O,$(+cflags))" "" +cflags := $(+cflags) $(+gccopt) +gcc-nowarn := -w endif else +gcc-nowarn := endif # gcc # Don't duplicate options if we inherited variables from the parent. +cflags := $(sort $(+cflags)) ifneq "$(findstring v,$(MAKEFLAGS))" "" # if -v ifneq "$(strip $(+cc_version))" "" # If Make is telling us version info, tell the compiler to do so as well. CC := $(CC) -v endif # +cc_version endif # -v # These are flags given to the C compiler to # tell it to look for include files (including ones # given in angle brackets) in the current directory # and in the parent library source directory. ifneq "$(..)" "" +includes = -I. -I$(patsubst %/,%,$(..)) $(includes) else +includes = -I. $(includes) endif # These are the variables that the implicit compilation rules use. CPPFLAGS = $(+includes) $(+defines) -D_LIBC override CFLAGS = $(+cflags) # This is the macro that the implicit linking rules use. ifneq "$(filter -g,$(+cflags))" "" # -g is in $(+cflags) LDFLAGS := -g endif ifneq "$(filter -DHAVE_GNU_LD,$(CPPFLAGS))" "" +gnu-stabs := yes endif endif # Makeconfig not yet included