# Copyright (C) 1991-2003,2004,2005,2006,2007,2008,2009,2010
# 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 Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 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
# Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with the GNU C Library; if not, write to the Free
# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307 USA.
#
# Makefile configuration options for the GNU C library.
#
ifneq (,)
This makefile requires GNU Make.
endif
all: # Make this the default goal
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 := $(patsubst %//,%/,$(objdir)/$(subdir)/)
common-objpfx = $(objdir)/
common-objdir = $(objdir)
else
objpfx :=
ifdef ..
common-objpfx = $(..)
common-objdir = ..
else
# This is a kludge. make wizards might grok.
common-objpfx = sysdeps/../
common-objdir = .
endif
endif
# Root of the sysdeps tree.
sysdep_dir := $(..)sysdeps
export sysdep_dir := $(sysdep_dir)
# Get the values defined by options to `configure'.
include $(common-objpfx)config.make
# What flags to give to sources which call user provided callbacks
uses-callbacks = $(exceptions)
# What flags to give to tests which test stack alignment
stack-align-test-flags =
# We have a special subdir for each binary format.
# For now, only ELF is fully supported.
ifeq ($(elf),yes)
binfmt-subdir = elf
else
# This is probably better than nothing.
binfmt-subdir = aout
endif
# Complete path to sysdep dirs.
# `configure' writes a definition of `config-sysdirs' in `config.make'.
sysdirs := $(foreach D,$(config-sysdirs),$(firstword $(filter /%,$D) $(..)$D))
# Add-ons that contribute sysdeps trees get added to the include list
# after sysdeps/generic. This makes #include <sysdeps/...> work right
# to find specific add-on files without assuming the add-on directory name.
# It also means that headers can go into an add-on's base directory
# instead of the add-on needing a sysdeps/generic of its own.
sysdeps-srcdirs := $(foreach add-on,$(sysdeps-add-ons),\
$(firstword $(filter /%,$(add-on)) \
$(..)$(add-on)))
+sysdep_dirs = $(sysdirs) $(sysdeps-srcdirs)
ifdef objdir
+sysdep_dirs := $(objdir) $(+sysdep_dirs)
endif
# Run config.status to update config.make and config.h. We don't show the
# dependence of config.h to Make, because it is only touched when it
# changes and so config.status would be run every time; the dependence of
# config.make should suffice to force regeneration and re-exec, and the new
# image will notice if config.h changed.
$(common-objpfx)config.make: $(common-objpfx)config.status \
$(..)config.make.in $(..)config.h.in
cd $(<D); $(SHELL) $(<F)
# Find all the add-on and sysdeps configure fragments, to make sure we
# re-run configure when any of them changes.
$(common-objpfx)config.status: $(..)version.h $(..)configure \
$(foreach dir,$(sysdirs),\
$(wildcard $(dir)/Implies) \
$(patsubst %.in,%,\