#! /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)) # 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_ENDIAN ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_ENDIAN) DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH) DEB_BUILD_ARCH_BITS ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH_BITS) DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) DEB_SOURCE_PACKAGE := $(strip $(shell egrep '^Source: ' debian/control | cut -f 2 -d ':')) DEB_VERSION := $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ') GLIBC_VERSION = $(shell echo $(DEB_VERSION) | sed -e 's/.*://' -e 's/[+-].*//') SOURCE_DATE_EPOCH ?= $(shell dpkg-parsechangelog -STimestamp) # The minimum package version with which these packages are compatible. shlib_dep_ver = $(GLIBC_VERSION) shlib_dep = $(libc) (>= $(shlib_dep_ver)) DEB_BUILDDIR ?= $(build-tree)/$(DEB_HOST_ARCH)-$(curpass) DEB_BUILDDIRLIBC ?= $(build-tree)/$(DEB_HOST_ARCH)-libc GLIBC_SOURCES = $(filter-out debian $(shell basename $(stamp)) $(build-tree), $(wildcard *)) # 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 # 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 GLIBC_PASSES ?= libc prefix=/usr bindir=$(prefix)/bin datadir=$(prefix)/share complocaledir=$(prefix)/lib/locale sysconfdir=/etc libexecdir=$(prefix)/lib rootsbindir=/sbin includedir=$(prefix)/include docdir=$(prefix)/share/doc mandir=$(prefix)/share/man sbindir=$(prefix)/sbin vardbdir=/var/lib/misc rtlddir=/lib slibdir=/lib/$(DEB_HOST_MULTIARCH) libdir=/usr/lib/$(DEB_HOST_MULTIARCH) mvec = no BASE_CC = gcc BASE_CXX = g++ BASE_MIG = mig DEB_GCC_VERSION ?= -8 RUN_TESTSUITE = yes TIMEOUTFACTOR = 25 # Set cross and native compiler names, including version. CC = $(DEB_HOST_GNU_TYPE)-$(BASE_CC)$(DEB_GCC_VERSION) -no-pie -fno-PIE CXX = $(DEB_HOST_GNU_TYPE)-$(BASE_CXX)$(DEB_GCC_VERSION) -no-pie -fno-PIE MIG = $(DEB_HOST_GNU_TYPE)-$(BASE_MIG) BUILD_CC = $(DEB_BUILD_GNU_TYPE)-$(BASE_CC) BUILD_CXX = $(DEB_BUILD_GNU_TYPE)-$(BASE_CXX) BUILD_CFLAGS = -O2 -g HOST_CFLAGS = -pipe -O2 -g $(call xx,extra_cflags) # 32-bit MIPS builders have a 2GB memory space. This is not enough to # build test-tgmath3.o with GCC, unless tweaking the garbage collector. ifeq ($(findstring mips,$(DEB_BUILD_ARCH))-$(DEB_BUILD_ARCH_BITS), mips-32) CC += --param ggc-min-expand=10 endif 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) # Which build pass are we on? curpass = $(filter-out %_,$(subst _,_ ,$@)) ifneq ($(filter stage1,$(DEB_BUILD_PROFILES)),) DEB_ARCH_REGULAR_PACKAGES = $(libc)-dev DEB_INDEP_REGULAR_PACKAGES = DEB_UDEB_PACKAGES = ifeq ($(filter nocheck,$(DEB_BUILD_OPTIONS)),) DEB_BUILD_OPTIONS+=nocheck endif else DEB_ARCH_REGULAR_PACKAGES = $(libc) $(libc)-dev $(libc)-dbg $(libc)-pic libc-bin libc-dev-bin multiarch-support DEB_INDEP_REGULAR_PACKAGES = glibc-doc glibc-source libc-l10n locales DEB_UDEB_PACKAGES = $(libc)-udeb ## Locales can only be pre-generated during native compiles ifeq ($(DEB_HOST_ARCH),$(DEB_BUILD_ARCH)) DEB_ARCH_REGULAR_PACKAGES += locales-all endif endif # Generic kernel version check define kernel_check (if [ $(CURRENT_KERNEL_VERSION) -lt $(1) ]; then \ false; \ fi) endef # Include libidn for both NPTL and FBTL 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 ifneq ($(filter stage1,$(DEB_BUILD_PROFILES)),) DEB_ARCH_REGULAR_PACKAGES += $(foreach p,$(DEB_ARCH_MULTILIB_PACKAGES), $(if $(findstring -dev,$(p)), $(p))) else DEB_ARCH_REGULAR_PACKAGES += $(DEB_ARCH_MULTILIB_PACKAGES) endif # Don't run dh_strip on this package NOSTRIP_$(libc)-dbg = 1 # Put the debug files from these packages in $(libc)-dbg DEBUG_$(libc) = 1 DEBUG_libc6-xen = 1 DEBUG_libc6.1-alphaev67 = 1 ifeq ($(filter stage1,$(DEB_BUILD_PROFILES)),) ifeq ($(threads),yes) DEB_ARCH_REGULAR_PACKAGES += nscd endif endif # And now the rules... include debian/rules.d/*.mk clean:: unpatch rm -rf $(patsubst %,debian/tmp-%,$(GLIBC_PASSES)) rm -rf $(build-tree) rm -rf $(stamp) rm -rf debian/include rm -f debian/control.in/libc0.1 debian/control.in/libc0.3 \ debian/control.in/libc6 debian/control.in/libc6.1 \ debian/*.preinst.* # Required Debian targets build-arch: $(stamp)info \ $(patsubst %,$(stamp)build_%,$(GLIBC_PASSES)) \ $(patsubst %,$(stamp)check_%,$(GLIBC_PASSES)) ifeq ($(filter stage1,$(DEB_BUILD_PROFILES)),) build-arch: $(stamp)build_C.UTF-8 \ $(stamp)build_locales-all endif build-indep: $(stamp)source build: build-arch build-indep binary-indep: build-indep testroot debian/control $(build-tree) \ $(patsubst %,$(stamp)binaryinst_%,$(DEB_INDEP_REGULAR_PACKAGES)) binary-arch: build-arch testroot debian/control $(build-tree) \ $(patsubst %,$(stamp)binaryinst_%,$(DEB_ARCH_REGULAR_PACKAGES)) \ $(patsubst %,$(stamp)binaryinst_%,$(DEB_UDEB_PACKAGES)) binary: binary-indep binary-arch testroot: dh_testroot