#! /usr/bin/make -f # -*- makefile -*- # debian/rules file for GNU libc. # Copyright 1998, 1999 by Joel Klecker # Copyright 2000 Ben Collins # Copyright 2003 Jeff Bailey # This Makefile is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # What are the phases to building glibc? # Unpack main tarball # Do any necessary overlays # Apply patches # Determine how many builds there are to do. For Each build: # Create build directory # Configure # Build # Test as desired # Install to package directories # Run debian magic to build packages. # Things you may need to customise: # These are done as absolute paths so that in the case of filesystem size # limitations, they can be overridden and spread all over. build-tree := build-tree stamp := $(CURDIR)/stamp-dir/ DUMMY := $(shell mkdir -p $(stamp)) # The minimum package version with which these packages are compatible. include debian/shlibver shlib_dep = $(libc) (>= $(shlib_dep_ver)) # The version of the C library that locales needs for its format. include debian/locales-depver # Beyond here you shouldn't need to customise anything: export SHELL = /bin/bash -e DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) DEB_HOST_GNU_CPU ?= $(shell dpkg-architecture -qDEB_HOST_GNU_CPU) DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_HOST_GNU_SYSTEM ?= $(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM) DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH) DEB_BUILD_GNU_CPU ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_CPU) DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) DEB_BUILD_GNU_SYSTEM ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_SYSTEM) DEB_HOST_GNU_CPU_ALT ?= DEB_HOST_GNU_TYPE_ALT ?= DEB_SOURCE_PACKAGE := $(strip $(shell egrep '^Source: ' debian/control | cut -f 2 -d ':')) DEB_VERSION := $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ') EGLIBC_VERSION = $(shell echo $(DEB_VERSION) | sed -e 's/-.*//') DEB_SRCDIR ?= $(CURDIR) DEB_BUILDDIR ?= $(build-tree)/$(DEB_HOST_ARCH)-$(curpass) EGLIBC_SOURCES = $(addprefix $(shell basename $(CURDIR))/, \ $(filter-out debian $(shell basename $(stamp)) $(build-tree), $(wildcard *))) # The kernel uses different CPU appreviations (uname output) than the GNU # tools do (config.sub). Map them. KERNEL_HOST_CPU := $(subst powerpc,ppc,$(DEB_HOST_GNU_CPU)) # Support multiple makes at once based on number of processors ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) NJOBS := -j $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) endif ifeq ($(DEB_HOST_ARCH),lpia) export DEB_BUILD_OPTIMIZING_SIZE=0 endif ifeq ($(DEB_HOST_ARCH),hppa) ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) DEB_BUILD_OPTIONS += nocheck export DEB_BUILD_OPTIONS endif endif # use the package settings, not the settings from the environment define unsetenv unexport $(1) $(1) = endef $(foreach v, CPPFLAGS CFLAGS CXXFLAGS LDFLAGS, $(if $(filter environment,$(origin $(v))),$(eval $(call unsetenv, $(v))))) # Default setup EGLIBC_PASSES ?= libc prefix=/usr bindir=$(prefix)/bin datadir=$(prefix)/share localedir=$(prefix)/lib/locale sysconfdir=/etc libexecdir=$(prefix)/lib rootsbindir=/sbin includedir=$(prefix)/include docdir=$(prefix)/share/doc mandir=$(prefix)/share/man sbindir=$(prefix)/sbin slibdir=/lib libdir=/usr/lib BUILD_CC = gcc-4.4 -fno-stack-protector -U_FORTIFY_SOURCE BUILD_CXX = g++-4.4 -fno-stack-protector -U_FORTIFY_SOURCE RUN_TESTSUITE = yes # Set CC and CXX for cross-compiling ifneq ($(DEB_HOST_ARCH),$(DEB_BUILD_ARCH)) CC = $(DEB_HOST_GNU_TYPE)-gcc CXX = $(DEB_HOST_GNU_TYPE)-g++ else CC = $(BUILD_CC) CXX = $(BUILD_CXX) endif BUILD_CFLAGS = -O2 -g HOST_CFLAGS = -pipe -O2 -fstrict-aliasing -g $(call xx,extra_cflags) configure_target := $(DEB_HOST_GNU_TYPE) # Normally we'll just use this for --build. If the architecture requires # that build daemons be able to run a particular optimized library, then # they can set the --build to match --host for that optimized build. # Among other things this lets tests run. configure_build := $(DEB_BUILD_GNU_TYPE) log_build = $(build-tree)/log-build-$(call xx,configure_target)-$(curpass) log_test = $(build-tree)/log-test-$(call xx,configure_target)-$(curpass) log_results = $(build-tree)/test-results-$(call xx,configure_target)-$(curpass) log_expected = debian/testsuite-checking/expected-results-$(call xx,configure_target)-$(curpass) # Which build pass are we on? curpass = $(filter-out %_,$(subst _,_ ,$@)) DEB_ARCH_REGULAR_PACKAGES = $(libc) $(libc)-dev $(libc)-dbg $(libc)-prof $(libc)-pic libc-bin libc-dev-bin DEB_INDEP_REGULAR_PACKAGES = glibc-doc eglibc-source DEB_UDEB_PACKAGES = $(libc)-udeb libnss-dns-udeb libnss-files-udeb # Generic kernel version check define kernel_check (if [ $(CURRENT_KERNEL_VERSION) -lt $(1) ]; then \ false; \ fi) endef # Include libidn for both NPTL and LinuxThreads targets. standard-add-ons = libidn, # Pull in all the per-arch magic! -include debian/sysdeps/$(DEB_HOST_ARCH_OS).mk -include debian/sysdeps/$(DEB_HOST_ARCH).mk # Don't run dh_strip on this package NOSTRIP_$(libc)-dbg = 1 ifeq ($(threads),yes) DEB_ARCH_REGULAR_PACKAGES += nscd endif # And now the rules... include debian/rules.d/*.mk clean:: unpatch make -C $(CURDIR)/linuxthreads/man clean rm -f $(CURDIR)/po/*.mo rm -rf $(patsubst %,debian/tmp-%,$(EGLIBC_PASSES)) rm -rf $(build-tree) rm -rf $(stamp) rm -rf debian/include rm -f manual/stamp-* rm -f po/*.mo # Required Debian targets binary-indep: build testroot debian/control $(build-tree) \ $(patsubst %,$(stamp)binaryinst_%,$(DEB_INDEP_REGULAR_PACKAGES)) binary-arch: build testroot debian/control $(build-tree) \ $(patsubst %,$(stamp)binaryinst_%,$(DEB_ARCH_REGULAR_PACKAGES)) \ $(patsubst %,$(stamp)binaryinst_%,$(DEB_UDEB_PACKAGES)) binary: binary-indep binary-arch pre-build: #ifneq (,$(filter $(DEB_HOST_ARCH), armel i386)) # @echo Build it ... #else # @echo Explicitely fail the build for architecture $(DEB_HOST_ARCH) # false #endif build: pre-build $(stamp)info \ $(patsubst %,$(stamp)build_%,$(EGLIBC_PASSES)) \ $(patsubst %,$(stamp)check_%,$(EGLIBC_PASSES)) \ $(stamp)source $(stamp)doc testroot: dh_testroot