3097 lines
94 KiB
Makefile
3097 lines
94 KiB
Makefile
#! /usr/bin/make -f
|
|
# -*- makefile -*-
|
|
|
|
# Uncomment this to turn on verbose mode.
|
|
#export DH_VERBOSE=1
|
|
|
|
.SUFFIXES:
|
|
|
|
include debian/rules.defs
|
|
include debian/rules.parameters
|
|
|
|
ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE)))
|
|
include $(binutils_srcdir)/debian/rules.defs
|
|
endif
|
|
|
|
dh_compat2 := $(shell dpkg --compare-versions "$$(dpkg-query -f '$${Version}' -W debhelper)" lt 9.20150811ubuntu2 \
|
|
&& echo DH_COMPAT=2)
|
|
|
|
# some tools
|
|
SHELL = /bin/bash -e # brace expansion in rules file
|
|
IR = install -m 644 # Install regular file
|
|
IP = install -m 755 # Install program
|
|
IS = install -m 755 # Install script
|
|
|
|
DWZ = dwz
|
|
ifneq (,$(filter $(distrelease),jessie stretch trusty xenial))
|
|
DWZ = : dwz
|
|
endif
|
|
|
|
# dwz: debian/gccgo-11/usr/lib/gcc/mips64el-linux-gnuabi64/11/go1: Found two copies of .debug_line_str section
|
|
ifneq (,$(filter $(DEB_HOST_ARCH),mips64el hurd-amd64 hurd-i386))
|
|
DWZ = : dwz
|
|
endif
|
|
|
|
# kernel-specific ulimit hack
|
|
ifeq ($(findstring linux,$(DEB_HOST_GNU_SYSTEM)),linux)
|
|
ULIMIT_M = if [ -e /proc/meminfo ]; then \
|
|
m=`awk '/^((Mem|Swap)Free|Cached)/{m+=$$2}END{print int(m*.9)}' \
|
|
/proc/meminfo`; \
|
|
else \
|
|
m=`vmstat --free --swap-free --kilobytes|awk '{m+=$$2}END{print int(m*.9)}'`; \
|
|
fi; \
|
|
echo "Limiting memory for test runs to $${m}kB"; \
|
|
if ulimit -m $$m; then \
|
|
echo " limited to `ulimit -m`kB"; \
|
|
else \
|
|
echo " failed"; \
|
|
fi
|
|
else
|
|
ULIMIT_M = true
|
|
endif
|
|
|
|
#time_command = /usr/bin/time -v
|
|
ifeq ($(usage_stats),yes)
|
|
time_command += $(CURDIR)/debian/usage-wrapper.py $(NJOBS) --base-memory -m 2.0 -o usage-$(shell echo $@ | sed 's/.*0[1-9]-//;s/-stamp//').svg
|
|
endif
|
|
|
|
ifeq ($(locale_data),generate)
|
|
SET_LOCPATH = LOCPATH=$(CURDIR)/locales
|
|
endif
|
|
|
|
SET_PATH = PATH=$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH
|
|
ifeq ($(trunk_build),yes)
|
|
ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH
|
|
endif
|
|
ifneq (,$(findstring ppc64-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH
|
|
endif
|
|
endif
|
|
|
|
# the recipient for the test summaries. Send with: debian/rules mail-summary
|
|
S_EMAIL = gcc@packages.debian.org gcc-testresults@gcc.gnu.org
|
|
|
|
# build not yet prepared to take variables from the environment
|
|
define unsetenv
|
|
unexport $(1)
|
|
$(1) =
|
|
endef
|
|
$(foreach v, CPPFLAGS CFLAGS CXXFLAGS DFLAGS FFLAGS FCFLAGS LDFLAGS OBJCFLAGS OBJCXXFLAGS, $(if $(filter environment,$(origin $(v))),$(eval $(call unsetenv, $(v)))))
|
|
|
|
CC = $(notdir $(firstword $(wildcard \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-14 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-13 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-12 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-11 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-10 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-9 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-8 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gcc)))
|
|
CXX = $(notdir $(firstword $(wildcard \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-g++-14 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-g++-13 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-g++-12 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-g++-11 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-g++-10 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-g++-9 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-g++-8 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-g++)))
|
|
GDC = $(notdir $(firstword $(wildcard \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-14 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-13 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-12 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-11 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-10 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-9 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gdc)))
|
|
ifeq ($(with_ada),yes)
|
|
GNAT = $(notdir $(firstword $(wildcard \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-14 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-13 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-12 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-11 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-10 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-9 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-8 \
|
|
/usr/bin/$(DEB_HOST_GNU_TYPE)-gnat)))
|
|
ifneq (,$(GNAT))
|
|
CC = $(subst gnat,gcc,$(GNAT))
|
|
else ifneq (,$(filter $(distrelease), trusty))
|
|
CC = gcc-4.8
|
|
else ifneq (,$(wildcard /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc))
|
|
CC = $(DEB_HOST_GNU_TYPE)-gcc
|
|
else
|
|
CC = gcc
|
|
endif
|
|
CXX = $(subst gcc,g++,$(CC))
|
|
GDC = $(subst gcc,gdc,$(CC))
|
|
GNATBIND = $(subst gnat,gnatbind,$(GNAT))
|
|
GNATMAKE = $(subst gnat,gnatmake,$(GNAT))
|
|
endif
|
|
|
|
ifneq (,$(filter $(build_type),cross-build-native cross-build-cross))
|
|
SET_TARGET_TOOLS = \
|
|
CC_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gcc-$(BASE_VERSION) \
|
|
CXX_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-g++-$(BASE_VERSION) \
|
|
GFORTRAN_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gfortran-$(BASE_VERSION) \
|
|
GOC_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gccgo-$(BASE_VERSION) \
|
|
GNAT_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gnat-$(BASE_VERSION) \
|
|
GDC_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gdc-$(BASE_VERSION) \
|
|
GM2_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gm2-$(BASE_VERSION)
|
|
endif
|
|
|
|
ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_TARGET_GNU_TYPE))
|
|
CC_FOR_TARGET = $(builddir)/gcc/xgcc -B$(builddir)/gcc/
|
|
else
|
|
CC_FOR_TARGET = $(DEB_TARGET_GNU_TYPE)-gcc
|
|
endif
|
|
|
|
ifneq ($(derivative),Ubuntu)
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel mips mipsel))
|
|
STAGE1_CFLAGS = -g -O2
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(with_ssp_default),yes)
|
|
STAGE1_CFLAGS = -g
|
|
ifeq (,$(BOOT_CFLAGS))
|
|
BOOT_CFLAGS = -g -O2
|
|
endif
|
|
LIBCFLAGS = -g -O2
|
|
LIBCXXFLAGS = -g -O2 -fno-implicit-templates
|
|
# Only use -fno-stack-protector when known to the stage1 compiler.
|
|
cc-fno-stack-protector := $(shell if $(CC) $(CFLAGS) -fno-stack-protector \
|
|
-S -o /dev/null -xc /dev/null > /dev/null 2>&1; \
|
|
then echo "-fno-stack-protector"; fi;)
|
|
$(foreach var,STAGE1_CFLAGS BOOT_CFLAGS LIBCFLAGS LIBCXXFLAGS,$(eval \
|
|
$(var) += $(cc-fno-stack-protector)))
|
|
endif
|
|
|
|
# FIXME: passing LDFLAGS for native doesn't do anything
|
|
ifneq (,$(filter $(build_type), build-cross cross-build-cross))
|
|
CFLAGS = -g -O2
|
|
LDFLAGS = -Wl,-z,relro
|
|
ifeq ($(DEB_TARGET_ARCH),alpha)
|
|
LDFLAGS += -Wl,--no-relax
|
|
endif
|
|
else
|
|
BOOT_LDFLAGS = -Wl,-z,relro
|
|
ifeq ($(DEB_TARGET_ARCH),alpha)
|
|
BOOT_LDFLAGS += -Wl,--no-relax
|
|
endif
|
|
endif
|
|
LDFLAGS_FOR_TARGET = -Wl,-z,relro
|
|
ifeq ($(DEB_TARGET_ARCH),alpha)
|
|
LDFLAGS := $(filter-out -Wl$(COMMA)--no-relax, $(LDFLAGS)) -Wl,--no-relax
|
|
endif
|
|
|
|
ifneq (,$(findstring static,$(DEB_BUILD_OPTIONS)))
|
|
LDFLAGS += -static
|
|
endif
|
|
|
|
ifneq ($(findstring gccdebug, $(DEB_BUILD_OPTIONS)),)
|
|
CFLAGS = -O0 -g3 -fno-inline
|
|
CXXFLAGS = -O0 -g3 -fno-inline
|
|
CFLAGS_FOR_BUILD = -O0 -g3 -fno-inline
|
|
CXXFLAGS_FOR_BUILD = -O0 -g3 -fno-inline
|
|
CFLAGS_FOR_TARGET = -O0 -g3 -fno-inline
|
|
CXXFLAGS_FOR_TARGET = -O0 -g3 -fno-inline
|
|
BOOT_CFLAGS =
|
|
BOOT_LDFLAGS =
|
|
STAGE1_CFLAGS =
|
|
STAGE1_LDFLAGS =
|
|
endif
|
|
|
|
ifeq ($(DEB_TARGET_ARCH),arm64)
|
|
# Build with PAC/BTI support if enabled in the build flags
|
|
# https://wiki.debian.org/ToolChain/PACBTI
|
|
ifneq (,$(findstring -mbranch-protection=standard,$(shell DEB_HOST_ARCH=$(DEB_TARGET_ARCH) dpkg-buildflags --get CFLAGS)))
|
|
CFLAGS_SECURE = -mbranch-protection=standard
|
|
else
|
|
CFLAGS_SECURE =
|
|
endif
|
|
|
|
ifeq ($(DEB_CROSS),yes)
|
|
# Building cross compilers
|
|
CFLAGS_FOR_TARGET += $(CFLAGS_SECURE)
|
|
CXXFLAGS_FOR_TARGET += $(CFLAGS_SECURE)
|
|
else ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
|
|
# Cross build of the native compiler
|
|
CFLAGS_FOR_TARGET += $(CFLAGS_SECURE)
|
|
CXXFLAGS_FOR_TARGET += $(CFLAGS_SECURE)
|
|
else
|
|
# Native build
|
|
CFLAGS += $(CFLAGS_SECURE)
|
|
CXXFLAGS += $(CFLAGS_SECURE)
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring -fno-omit-frame-pointer,$(shell DEB_HOST_ARCH=$(DEB_TARGET_ARCH) dpkg-buildflags --get CFLAGS)))
|
|
CFLAGS_FRAME_POINTER = -fno-omit-frame-pointer
|
|
else
|
|
CFLAGS_FRAME_POINTER =
|
|
endif
|
|
|
|
ifeq ($(DEB_CROSS),yes)
|
|
# Building cross compilers
|
|
CFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER)
|
|
CXXFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER)
|
|
else ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
|
|
# Cross build of the native compiler
|
|
CFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER)
|
|
CXXFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER)
|
|
else
|
|
# Native build
|
|
CFLAGS += $(CFLAGS_FRAME_POINTER)
|
|
CXXFLAGS += $(CFLAGS_FRAME_POINTER)
|
|
endif
|
|
|
|
# set CFLAGS/LDFLAGS for the configure step only, maybe be modifed for some target
|
|
# all other flags are passed to the make step.
|
|
pass_vars = $(foreach v,$(1),$(if $($(v)),$(v)="$($(v))"))
|
|
flags_to_pass := CFLAGS CXXFLAGS LIBCFLAGS LIBCXXFLAGS LDFLAGS
|
|
|
|
docdir = usr/share/doc
|
|
|
|
# no prefix for regular builds, would disable searching for as / ld
|
|
binutils_prefix =
|
|
ifneq (,$(with_build_sysroot))
|
|
binutils_prefix = $(with_build_sysroot)/usr/bin
|
|
endif
|
|
|
|
CONFARGS = -v \
|
|
--with-pkgversion='$(distribution)$(if $(with_ibm_branch),/IBM)___$(DEB_VERSION)' \
|
|
--with-bugurl='file:///usr/share/doc/$(PKGSOURCE)/README.Bugs'
|
|
|
|
CONFARGS += \
|
|
--enable-languages=$(subst $(SPACE),$(COMMA),$(enabled_languages)) \
|
|
--prefix=/$(PF) \
|
|
--with-gcc-major-version-only \
|
|
|
|
ifneq (,$(with_build_sysroot))
|
|
CONFARGS += \
|
|
--with-as=$(binutils_prefix)/$(DEB_TARGET_GNU_TYPE)-as \
|
|
--with-ld=$(binutils_prefix)/$(DEB_TARGET_GNU_TYPE)-ld
|
|
endif
|
|
|
|
ifeq ($(versioned_packages),yes)
|
|
CONFARGS += --program-suffix=-$(BASE_VERSION)
|
|
endif
|
|
ifneq (,$(filter $(build_type),build-native cross-build-native))
|
|
CONFARGS += --program-prefix=$(cmd_prefix)
|
|
endif
|
|
|
|
ifneq (,$(filter $(DEB_STAGE),stage1 stage2))
|
|
CONFARGS += \
|
|
--disable-decimal-float \
|
|
--disable-libatomic \
|
|
--disable-libgomp \
|
|
--disable-libssp \
|
|
--disable-libquadmath \
|
|
--disable-libsanitizer \
|
|
--disable-threads \
|
|
--disable-bootstrap \
|
|
--libexecdir=/$(libexecdir) \
|
|
--libdir=/$(PF)/$(configured_libdir) \
|
|
$(if $(with_build_sysroot),--with-build-sysroot=$(with_build_sysroot)) \
|
|
$(if $(findstring build-cross, $(build_type)), \
|
|
$(if $(with_sysroot),--with-sysroot=$(with_sysroot))) \
|
|
--enable-linker-build-id
|
|
|
|
ifeq ($(with_multiarch_lib),yes)
|
|
CONFARGS += \
|
|
--enable-multiarch
|
|
endif
|
|
|
|
ifeq ($(DEB_STAGE),stage1)
|
|
CONFARGS += \
|
|
--disable-shared \
|
|
--with-newlib \
|
|
--without-headers
|
|
else
|
|
# stage2
|
|
CONFARGS += \
|
|
--enable-shared
|
|
endif
|
|
else
|
|
CONFARGS += \
|
|
--enable-shared \
|
|
--enable-linker-build-id \
|
|
|
|
ifneq ($(single_package),yes)
|
|
CONFARGS += \
|
|
--libexecdir=/$(libexecdir) \
|
|
--without-included-gettext \
|
|
--enable-threads=posix \
|
|
--libdir=/$(PF)/$(configured_libdir)
|
|
endif
|
|
|
|
ifneq ($(with_cpp),yes)
|
|
CONFARGS += --disable-cpp
|
|
endif
|
|
|
|
ifeq ($(with_nls),yes)
|
|
CONFARGS += --enable-nls
|
|
else
|
|
CONFARGS += --disable-nls
|
|
endif
|
|
|
|
ifeq ($(with_bootstrap),off)
|
|
CONFARGS += --disable-bootstrap
|
|
else ifneq ($(with_bootstrap),)
|
|
CONFARGS += --enable-bootstrap
|
|
endif
|
|
|
|
ifneq ($(with_sysroot),)
|
|
CONFARGS += --with-sysroot=$(with_sysroot)
|
|
endif
|
|
ifneq ($(with_build_sysroot),)
|
|
CONFARGS += --with-build-sysroot=$(with_build_sysroot)
|
|
endif
|
|
|
|
ifeq ($(force_gnu_locales),yes)
|
|
CONFARGS += --enable-clocale=gnu
|
|
endif
|
|
|
|
ifeq ($(with_cxx)-$(with_cxx_debug),yes-yes)
|
|
CONFARGS += --enable-libstdcxx-debug
|
|
endif
|
|
CONFARGS += --enable-libstdcxx-time=yes
|
|
CONFARGS += --with-default-libstdcxx-abi=$(libstdcxx_abi)
|
|
ifeq ($(libstdcxx_abi),gcc4-compatible)
|
|
CONFARGS += --disable-libstdcxx-dual-abi
|
|
endif
|
|
CONFARGS += --enable-libstdcxx-backtrace
|
|
|
|
ifeq (,$(filter $(DEB_TARGET_ARCH), hurd-amd64 hurd-i386))
|
|
CONFARGS += --enable-gnu-unique-object
|
|
endif
|
|
|
|
ifneq ($(with_ssp),yes)
|
|
CONFARGS += --disable-libssp
|
|
endif
|
|
|
|
ifneq ($(with_gomp),yes)
|
|
CONFARGS += --disable-libgomp
|
|
endif
|
|
|
|
ifneq ($(with_itm),yes)
|
|
CONFARGS += --disable-libitm
|
|
endif
|
|
|
|
ifneq ($(with_atomic),yes)
|
|
CONFARGS += --disable-libatomic
|
|
endif
|
|
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH),$(vtv_archs)))
|
|
ifeq ($(with_vtv),yes)
|
|
CONFARGS += --enable-vtable-verify
|
|
else
|
|
CONFARGS += --disable-vtable-verify
|
|
endif
|
|
endif
|
|
|
|
ifneq ($(with_asan),yes)
|
|
CONFARGS += --disable-libsanitizer
|
|
endif
|
|
|
|
ifneq ($(with_qmath),yes)
|
|
CONFARGS += --disable-libquadmath --disable-libquadmath-support
|
|
endif
|
|
|
|
ifeq ($(with_plugins),yes)
|
|
CONFARGS += --enable-plugin
|
|
endif
|
|
|
|
#ifeq ($(with_gold),yes)
|
|
# CONFARGS += --enable-gold --enable-ld=default
|
|
#endif
|
|
|
|
#CONFARGS += --with-plugin-ld=ld.gold
|
|
#CONFARGS += --with-plugin-ld
|
|
|
|
# enable pie-by-default on pie_archs
|
|
ifeq ($(with_pie),yes)
|
|
CONFARGS += --enable-default-pie
|
|
endif
|
|
|
|
endif # !DEB_STAGE
|
|
|
|
CONFARGS += --with-system-zlib
|
|
|
|
ifeq ($(with_phobos),yes)
|
|
CONFARGS += --enable-libphobos-checking=release
|
|
ifeq ($(DEB_CROSS),yes)
|
|
CONFARGS += --without-target-system-zlib
|
|
else
|
|
CONFARGS += --with-target-system-zlib=auto
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(with_d),yes)
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH), $(druntime_only_archs)))
|
|
CONFARGS += --with-libphobos-druntime-only=yes
|
|
else ifneq ($(with_phobos),yes)
|
|
CONFARGS += --disable-libphobos
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(with_objc)-$(with_objc_gc),yes-yes)
|
|
CONFARGS += --enable-objc-gc=auto
|
|
endif
|
|
|
|
ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), i486-linux-gnu i586-linux-gnu i686-linux-gnu))
|
|
ifeq ($(multilib),yes)
|
|
ifeq ($(biarch64),yes)
|
|
CONFARGS += --enable-targets=all
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), x86_64-linux-gnu x86_64-linux-gnux32 x86_64-gnu s390x-linux-gnu sparc64-linux-gnu))
|
|
ifneq ($(biarch32),yes)
|
|
CONFARGS += --disable-multilib
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), powerpc-linux-gnu powerpc-linux-gnuspe))
|
|
CONFARGS += --enable-secureplt
|
|
ifeq ($(biarch64),yes)
|
|
CONFARGS += --disable-softfloat --with-cpu=default32
|
|
ifeq ($(multilib),yes)
|
|
CONFARGS += --disable-softfloat \
|
|
--enable-targets=powerpc-linux,powerpc64-linux
|
|
endif
|
|
else
|
|
CONFARGS += --disable-multilib
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring powerpc64le-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --enable-secureplt
|
|
ifeq ($(derivative),Ubuntu)
|
|
ifneq (,$(filter $(distrelease), jessie trusty))
|
|
CONFARGS += --with-cpu=power7 --with-tune=power8
|
|
else ifneq (,$(filter $(distrelease), xenial bionic focal hirsute impish))
|
|
CONFARGS += --with-cpu=power8
|
|
else
|
|
CONFARGS += --with-cpu=power9
|
|
endif
|
|
endif
|
|
CONFARGS += --enable-targets=powerpcle-linux
|
|
CONFARGS += --disable-multilib
|
|
endif
|
|
|
|
ifneq (,$(findstring powerpc64-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --enable-secureplt
|
|
ifeq ($(biarch32),yes)
|
|
ifeq ($(multilib),yes)
|
|
CONFARGS += --disable-softfloat --enable-targets=powerpc64-linux,powerpc-linux
|
|
endif
|
|
else
|
|
CONFARGS += --disable-multilib
|
|
endif
|
|
ifeq ($(derivative),Ubuntu)
|
|
CONFARGS += --with-cpu-32=power7 --with-cpu-64=power7
|
|
endif
|
|
endif
|
|
|
|
# FIXME: only needed for isl-0.13 for now
|
|
#CONFARGS += --disable-isl-version-check
|
|
|
|
ifneq (,$(findstring cross-build-,$(build_type)))
|
|
# FIXME: requires isl headers for the target
|
|
#CONFARGS += --without-isl
|
|
# FIXME: build currently fails build the precompiled headers
|
|
CONFARGS += --disable-libstdcxx-pch
|
|
endif
|
|
|
|
ifeq ($(with_multiarch_lib),yes)
|
|
CONFARGS += --enable-multiarch
|
|
endif
|
|
|
|
ifneq (,$(findstring alpha,$(DEB_TARGET_GNU_CPU)))
|
|
CONFARGS += --with-cpu=ev56
|
|
endif
|
|
|
|
ifneq (,$(findstring aarch64,$(DEB_TARGET_GNU_CPU)))
|
|
# requires binutils 2.25.90 or newer
|
|
ifeq (,$(filter $(distrelease), precise trusty))
|
|
CONFARGS += --enable-fix-cortex-a53-843419
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring softfloat,$(DEB_TARGET_GNU_CPU)))
|
|
CONFARGS += --with-float=soft
|
|
endif
|
|
|
|
ifneq (,$(findstring arc-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --disable-multilib
|
|
endif
|
|
|
|
ifneq (,$(findstring arm-vfp,$(DEB_TARGET_GNU_CPU)))
|
|
CONFARGS += --with-fpu=vfp
|
|
endif
|
|
|
|
ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU)))
|
|
ifeq ($(multilib),yes)
|
|
CONFARGS += --enable-multilib
|
|
endif
|
|
CONFARGS += --disable-sjlj-exceptions
|
|
ifneq (,$(filter %armhf,$(DEB_TARGET_ARCH)))
|
|
ifeq ($(distribution),Raspbian)
|
|
with_arm_arch = armv6+fp
|
|
else
|
|
ifneq (,$(filter $(distrelease), jessie stretch buster bullseye xenial bionic focal hirsute))
|
|
with_arm_fpu = vfpv3-d16
|
|
with_arm_arch = armv7-a
|
|
else
|
|
with_arm_fpu =
|
|
with_arm_arch = armv7-a+fp
|
|
endif
|
|
endif
|
|
else
|
|
# armel
|
|
ifeq ($(derivative),Debian)
|
|
ifneq (,$(filter $(distrelease), jessie stretch))
|
|
with_arm_arch = armv4t
|
|
else
|
|
with_arm_arch = armv5te
|
|
endif
|
|
else ifneq (,$(filter $(distrelease), precise))
|
|
with_arm_arch = armv7-a+fp
|
|
else
|
|
with_arm_arch = armv5t # starting with quantal
|
|
CONFARGS += --with-specs='%{mfloat-abi=hard:-march=armv7-a___-mcpu=generic-armv7-a___-mfloat-abi=hard}'
|
|
endif
|
|
endif
|
|
CONFARGS += --with-arch=$(with_arm_arch)
|
|
ifneq (,$(with_arm_fpu))
|
|
CONFARGS += --with-fpu=$(with_arm_fpu)
|
|
endif
|
|
CONFARGS += --with-float=$(float_abi)
|
|
ifeq ($(with_arm_thumb),yes)
|
|
CONFARGS += --with-mode=thumb
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(DEB_TARGET_GNU_CPU),$(findstring $(DEB_TARGET_GNU_CPU),m68k))
|
|
CONFARGS += --disable-werror
|
|
endif
|
|
# FIXME: correct fix-warnings.dpatch
|
|
ifeq ($(derivative),Ubuntu)
|
|
CONFARGS += --disable-werror
|
|
else ifeq ($(derivative),Debian)
|
|
CONFARGS += --disable-werror
|
|
endif
|
|
|
|
ifneq (,$(findstring loongarch64-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --disable-multilib
|
|
endif
|
|
|
|
ifneq (,$(findstring sparc-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
ifeq ($(biarch64),yes)
|
|
CONFARGS += --enable-targets=all
|
|
CONFARGS += --with-cpu-32=ultrasparc
|
|
else
|
|
CONFARGS += --with-cpu=ultrasparc
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --with-cpu-32=ultrasparc
|
|
ifeq ($(biarch32),yes)
|
|
CONFARGS += --enable-targets=all
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring ia64-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
ifneq ($(with_internal_libunwind),yes)
|
|
CONFARGS += --with-system-libunwind
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring sh4-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --with-cpu=sh4 --with-multilib-list=m4,m4-nofpu
|
|
endif
|
|
|
|
ifneq (,$(findstring m68k-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --disable-multilib
|
|
endif
|
|
|
|
ifneq (,$(findstring riscv64-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --disable-multilib
|
|
CONFARGS += --with-arch=rv64gc --with-abi=lp64d
|
|
endif
|
|
|
|
ifneq (,$(findstring s390x-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
ifeq ($(derivative),Ubuntu)
|
|
ifneq (,$(filter $(distrelease),xenial bionic focal))
|
|
CONFARGS += --with-arch=zEC12
|
|
else ifneq (,$(filter $(distrelease),jammy kinetic))
|
|
CONFARGS += --with-arch=z13 --with-tune=z15
|
|
else
|
|
CONFARGS += --with-arch=z13 --with-tune=z16
|
|
endif
|
|
else # Debian
|
|
CONFARGS += --with-arch=z196
|
|
endif
|
|
ifneq (,$(filter $(distrelease),stretch buster bullseye bookworm xenial bionic focal jammy lunar mantic))
|
|
CONFARGS += --enable-s390-excess-float-precision
|
|
else
|
|
CONFARGS += --disable-s390-excess-float-precision
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(DEB_TARGET_ARCH_OS),linux)
|
|
ifneq (,$(findstring $(DEB_TARGET_ARCH), alpha powerpc ppc64 ppc64el s390 s390x sparc sparc64))
|
|
CONFARGS += --with-long-double-128
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(filter $(derivative),Ubuntu))
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH), ppc64el))
|
|
ifneq (,$(filter $(distrelease),precise xenial bionic focal jammy noble oracular plucky))
|
|
# ieee default
|
|
else
|
|
CONFARGS += --with-long-double-format=ieee
|
|
endif
|
|
endif
|
|
else ifneq (,$(filter $(derivative),Debian))
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH), ppc64el))
|
|
ifneq (,$(filter $(distrelease),jessie stretch buster bullseye bookworm trixie))
|
|
# ieee default
|
|
else
|
|
CONFARGS += --with-long-double-format=ieee
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(filter $(derivative),Ubuntu))
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 x32))
|
|
ifneq (,$(filter $(distrelease),precise xenial bionic))
|
|
CONFARGS += --disable-cet
|
|
else
|
|
CONFARGS += --enable-cet
|
|
endif
|
|
endif
|
|
else ifneq (,$(filter $(derivative),Debian))
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 x32))
|
|
ifneq (,$(filter $(distrelease),jessie stretch buster bullseye))
|
|
CONFARGS += --disable-cet
|
|
else
|
|
CONFARGS += --enable-cet
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386))
|
|
ifneq (,$(filter $(derivative),Ubuntu))
|
|
CONFARGS += --with-arch-32=i686
|
|
else # Debian
|
|
ifneq (,$(filter $(distrelease), jessie))
|
|
CONFARGS += --with-arch-32=i586
|
|
else
|
|
CONFARGS += --with-arch-32=i686
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(DEB_TARGET_ARCH),amd64)
|
|
CONFARGS += --with-abi=m64
|
|
endif
|
|
ifeq ($(DEB_TARGET_ARCH),x32)
|
|
CONFARGS += --with-abi=mx32
|
|
endif
|
|
ifeq ($(multilib),yes)
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386))
|
|
CONFARGS += --with-multilib-list=m32,m64$(if $(filter yes,$(biarchx32)),$(COMMA)mx32)
|
|
else ifeq ($(DEB_TARGET_ARCH),x32)
|
|
CONFARGS += --with-multilib-list=mx32,m64,m32
|
|
endif
|
|
CONFARGS += --enable-multilib
|
|
endif
|
|
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH), hurd-i386))
|
|
CONFARGS += --with-arch=i686
|
|
endif
|
|
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH), hurd-amd64))
|
|
CONFARGS += --disable-multilib
|
|
endif
|
|
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 hurd-amd64 hurd-i386))
|
|
CONFARGS += --with-tune=generic
|
|
endif
|
|
|
|
ifneq (,$(findstring mips-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx
|
|
CONFARGS += --with-lxc1-sxc1=no
|
|
ifeq ($(multilib),yes)
|
|
ifeq ($(biarchn32)-$(biarch64),yes-yes)
|
|
CONFARGS += --enable-targets=all
|
|
CONFARGS += --with-arch-64=mips64r2
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring mipsel-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx
|
|
CONFARGS += --with-madd4=no
|
|
CONFARGS += --with-lxc1-sxc1=no
|
|
ifeq ($(multilib),yes)
|
|
ifeq ($(biarchn32)-$(biarch64),yes-yes)
|
|
CONFARGS += --enable-targets=all
|
|
CONFARGS += --with-arch-64=mips64r2
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
#FIXME: howto for mipsn32?
|
|
ifneq (,$(findstring mips64el-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --with-madd4=no
|
|
ifeq ($(multilib),yes)
|
|
ifeq ($(biarch64)-$(biarch32),yes-yes)
|
|
CONFARGS += --enable-targets=all
|
|
CONFARGS += --with-arch-64=mips64r2
|
|
CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring mips64-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE)))
|
|
ifeq ($(multilib),yes)
|
|
ifeq ($(biarch64)-$(biarch32),yes-yes)
|
|
CONFARGS += --enable-targets=all
|
|
CONFARGS += --with-arch-64=mips64r2
|
|
CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring mips64el-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --with-mips-plt
|
|
CONFARGS += --with-arch-64=mips64r2
|
|
CONFARGS += --with-madd4=no
|
|
ifeq ($(multilib),yes)
|
|
ifeq ($(biarchn32)-$(biarch32),yes-yes)
|
|
CONFARGS += --enable-targets=all
|
|
CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring mips64-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --with-mips-plt
|
|
CONFARGS += --with-arch-64=mips64r2
|
|
ifeq ($(multilib),yes)
|
|
ifeq ($(biarchn32)-$(biarch32),yes-yes)
|
|
CONFARGS += --enable-targets=all
|
|
CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring mipsisa32r6-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6
|
|
ifeq ($(multilib),yes)
|
|
ifeq ($(biarchn32)-$(biarch64),yes-yes)
|
|
CONFARGS += --enable-targets=all
|
|
CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring mipsisa32r6el-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6
|
|
ifeq ($(multilib),yes)
|
|
ifeq ($(biarchn32)-$(biarch64),yes-yes)
|
|
CONFARGS += --enable-targets=all
|
|
CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
#FIXME: howto for mipsn32?
|
|
ifneq (,$(findstring mipsisa64r6el-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --with-mips-plt
|
|
ifeq ($(multilib),yes)
|
|
ifeq ($(biarch64)-$(biarch32),yes-yes)
|
|
CONFARGS += --enable-targets=all
|
|
CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6
|
|
CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring mipsisa64r6-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --with-mips-plt
|
|
ifeq ($(multilib),yes)
|
|
ifeq ($(biarch64)-$(biarch32),yes-yes)
|
|
CONFARGS += --enable-targets=all
|
|
CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6
|
|
CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring mipsisa64r6el-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --with-mips-plt
|
|
CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6
|
|
ifeq ($(multilib),yes)
|
|
ifeq ($(biarchn32)-$(biarch32),yes-yes)
|
|
CONFARGS += --enable-targets=all
|
|
CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring mipsisa64r6-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --with-mips-plt
|
|
CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6
|
|
ifeq ($(multilib),yes)
|
|
ifeq ($(biarchn32)-$(biarch32),yes-yes)
|
|
CONFARGS += --enable-targets=all
|
|
CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring mips,$(DEB_TARGET_GNU_TYPE)))
|
|
ifeq (,$(filter yes,$(biarch32) $(biarchn32) $(biarch64)))
|
|
CONFARGS += --disable-multilib
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring s390-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
ifeq ($(multilib),yes)
|
|
ifeq ($(biarch64),yes)
|
|
CONFARGS += --enable-targets=all
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(findstring hppa-linux,$(DEB_TARGET_GNU_TYPE)))
|
|
CONFARGS += --disable-libstdcxx-pch
|
|
endif
|
|
|
|
ifneq (,$(offload_targets))
|
|
ifneq (,$(filter nvptx-none, $(offload_targets)))
|
|
offload_opt = nvptx-none=$(CURDIR)/$(d)-nvptx/$(PF)
|
|
endif
|
|
ifneq (,$(filter $(gcn_target_name), $(offload_targets)))
|
|
offload_opt += $(gcn_target_name)=$(CURDIR)/$(d)-gcn/$(PF)
|
|
endif
|
|
CONFARGS += \
|
|
--enable-offload-targets=$(subst $(SPACE),$(COMMA),$(strip $(offload_opt))) \
|
|
--enable-offload-defaulted
|
|
ifeq ($(with_offload_nvptx),yes)
|
|
CONFARGS += --without-cuda-driver
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(trunk_build),yes)
|
|
ifeq ($(findstring --disable-werror, $(CONFARGS)),)
|
|
CONFARGS += --disable-werror
|
|
endif
|
|
enable_checking = yes
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 mips64el ppc64 ppc64el s390x))
|
|
enable_checking = yes,extra,rtl
|
|
endif
|
|
else
|
|
enable_checking = yes
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 mips64el ppc64 ppc64el s390x))
|
|
enable_checking = yes,extra,rtl
|
|
endif
|
|
enable_checking = release
|
|
endif
|
|
CONFARGS += --enable-checking=$(enable_checking)
|
|
|
|
ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE)))
|
|
CONFARGS += $(BINUTILS_GCCCONF)
|
|
endif
|
|
|
|
CONFARGS += \
|
|
--build=$(DEB_BUILD_GNU_TYPE) \
|
|
--host=$(DEB_HOST_GNU_TYPE) \
|
|
--target=$(TARGET_ALIAS)
|
|
|
|
ifeq ($(DEB_CROSS),yes)
|
|
CONFARGS += \
|
|
--program-prefix=$(TARGET_ALIAS)- \
|
|
--includedir=/$(PFL)/include
|
|
endif
|
|
|
|
ifeq ($(with_bootstrap),off)
|
|
bootstrap_target =
|
|
else ifeq ($(with_bootstrap),profiled)
|
|
bootstrap_target = profiledbootstrap
|
|
bootstrap_target = profiledbootstrap-lean
|
|
else ifeq ($(with_bootstrap),)
|
|
ifneq (, $(filter $(PKGSOURCE),gcc-$(BASE_VERSION) gcc-snapshot))
|
|
bootstrap_target = bootstrap
|
|
endif
|
|
ifneq (,$(DEB_STAGE))
|
|
bootstrap_target = bootstrap
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(with_lto_build),yes)
|
|
CONFARGS += \
|
|
--with-build-config=bootstrap-lto-lean \
|
|
--enable-link-serialization=$(CPUS_LTOLINK)
|
|
endif
|
|
|
|
# this is the default, set in /usr/share/dejagnu/remote.exp
|
|
# by a local dejagnu patch.
|
|
DEJAGNU_TIMEOUT=300
|
|
# Increase the timeout for one testrun on slow architectures
|
|
ifeq ($(derivative),Debian)
|
|
ifneq (,$(findstring $(DEB_TARGET_ARCH),armel armhf arm64))
|
|
DEJAGNU_TIMEOUT=300
|
|
else ifneq (,$(findstring $(DEB_TARGET_ARCH),hppa m68k riscv64 sparc))
|
|
DEJAGNU_TIMEOUT=600
|
|
else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),x86_64 i386 i486 i586 i686))
|
|
DEJAGNU_TIMEOUT=180
|
|
endif
|
|
ifeq ($(DEB_TARGET_GNU_SYSTEM),gnu)
|
|
DEJAGNU_TIMEOUT=900
|
|
endif
|
|
else ifeq ($(derivative),Ubuntu)
|
|
ifneq (,$(findstring $(DEB_TARGET_ARCH), armel armhf arm64))
|
|
DEJAGNU_TIMEOUT=300
|
|
else ifneq (,$(findstring $(DEB_TARGET_ARCH), riscv64))
|
|
DEJAGNU_TIMEOUT=600
|
|
else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),x86_64 i386 i486 i586 i686 power))
|
|
DEJAGNU_TIMEOUT=180
|
|
endif
|
|
endif
|
|
|
|
DEJAGNU_RUNS =
|
|
ifneq ($(trunk_build),yes)
|
|
ifeq ($(with_ssp),yes)
|
|
# the buildds are just slow ... don't check the non-default
|
|
ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),hppa m68k mips sh4))
|
|
DEJAGNU_RUNS =
|
|
else ifneq (,$(filter $(DEB_TARGET_ARCH),armel))
|
|
DEJAGNU_RUNS =
|
|
else ifneq ($(single_package),yes)
|
|
DEJAGNU_RUNS += $(if $(filter yes,$(with_ssp_default)),-fno-stack-protector,-fstack-protector)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(derivative),Ubuntu)
|
|
ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU)))
|
|
ifeq ($(with_arm_thumb),yes)
|
|
#DEJAGNU_RUNS += -marm
|
|
else
|
|
DEJAGNU_RUNS += -mthumb
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
# no b-d on g++-multilib, this is run by the built compiler
|
|
abi_run_check = $(strip $(if $(wildcard build/runcheck$(1).out), \
|
|
$(shell cat build/runcheck$(1).out), \
|
|
$(shell CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/ -static-libgcc $(1)" bash debian/runcheck.sh)))
|
|
ifeq ($(biarch32),yes)
|
|
DEJAGNU_RUNS += $(call abi_run_check,$(if $(filter $(DEB_TARGET_ARCH_CPU),mips64 mips64el mipsn32 mipsn32el),-mabi=32,-m32))
|
|
endif
|
|
ifeq ($(biarch64),yes)
|
|
DEJAGNU_RUNS += $(call abi_run_check,$(if $(filter $(DEB_TARGET_ARCH_CPU),mips mipsel),-mabi=64,-m64))
|
|
endif
|
|
ifeq ($(biarchn32),yes)
|
|
DEJAGNU_RUNS += $(call abi_run_check,-mabi=n32)
|
|
endif
|
|
ifeq ($(biarchx32),yes)
|
|
DEJAGNU_RUNS += $(call abi_run_check,-mx32)
|
|
endif
|
|
|
|
# used in the libgo testsuite, not using dejagnu
|
|
export CHECK_MULTISUBDIRS = \
|
|
$(if $(filter -m32 -mabi=32, $(DEJAGNU_RUNS)), /32) \
|
|
$(if $(filter -m64 -mabi=64, $(DEJAGNU_RUNS)), /64) \
|
|
$(if $(filter -mabi=n32, $(DEJAGNU_RUNS)), /n32) \
|
|
$(if $(filter -mx32, $(DEJAGNU_RUNS)), /x32)
|
|
|
|
ifneq (,$(strip $(DEJAGNU_RUNS)))
|
|
RUNTESTFLAGS = RUNTESTFLAGS="--target_board=unix\{,$(subst $(SPACE),$(COMMA),$(strip $(DEJAGNU_RUNS)))\}"
|
|
else
|
|
RUNTESTFLAGS = RUNTESTFLAGS="--target_board=unix"
|
|
endif
|
|
|
|
# PF is the installation prefix for the package without the leading slash.
|
|
# It's "usr" for gcc releases.
|
|
ifneq (,$(PF))
|
|
# use value set in the environment
|
|
else ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE)))
|
|
PF = usr/lib/gcc-snapshot
|
|
else ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE)))
|
|
PF = usr/lib/gcc-toolchain-$(BASE_VERSION)
|
|
else
|
|
PF = usr
|
|
endif
|
|
|
|
# PFL is the installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds
|
|
PFL = $(PF)
|
|
# RPF is the base prefix or installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds
|
|
# DEP17: move to /usr in trixie and noble
|
|
ifneq (,$(filter $(distrelease),jessie stretch buster bullseye bookworm precise trusty xenial bionic focal groovy hirsute impish jammy kinetic lunar mantic))
|
|
RPF =
|
|
else
|
|
RPF = $(PF)
|
|
endif
|
|
|
|
ifeq ($(DEB_CROSS),yes)
|
|
ifneq ($(DEB_STAGE),rtlibs)
|
|
PFL = $(PF)/$(DEB_TARGET_GNU_TYPE)
|
|
RPF = $(PF)/$(DEB_TARGET_GNU_TYPE)
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(with_multiarch_lib),yes)
|
|
ifeq ($(DEB_CROSS),yes)
|
|
libdir = lib
|
|
else
|
|
libdir = lib/$(DEB_TARGET_MULTIARCH)
|
|
endif
|
|
else
|
|
libdir = lib
|
|
endif
|
|
configured_libdir = lib
|
|
|
|
hppa64libexecdir= $(PF)/libexec
|
|
|
|
# /usr/libexec doesn't follow the FHS
|
|
ifeq ($(single_package),yes)
|
|
libdir = lib
|
|
libexecdir = $(PF)/libexec
|
|
versiondir = $(BASE_VERSION)
|
|
else
|
|
libexecdir = $(PF)/$(configured_libdir)
|
|
libexecdir = $(PF)/libexec
|
|
versiondir = $(BASE_VERSION)
|
|
endif
|
|
buildlibdir = $(builddir)/$(TARGET_ALIAS)
|
|
|
|
# install cross compilers in /usr/lib/gcc-cross, native ones in /usr/lib/gcc
|
|
gcc_subdir_name = gcc
|
|
ifneq ($(single_package),yes)
|
|
ifeq ($(DEB_CROSS),yes)
|
|
gcc_subdir_name = gcc-cross
|
|
endif
|
|
endif
|
|
|
|
gcc_lib_dir = $(PF)/$(configured_libdir)/$(gcc_subdir_name)/$(TARGET_ALIAS)/$(versiondir)
|
|
gcc_lexec_dir = $(libexecdir)/$(gcc_subdir_name)/$(TARGET_ALIAS)/$(versiondir)
|
|
|
|
lib32loc = lib32
|
|
ifneq (,$(findstring mips,$(DEB_TARGET_GNU_TYPE)))
|
|
lib32loc = libo32
|
|
endif
|
|
lib32 = $(PF)/$(lib32loc)
|
|
lib64 = lib64
|
|
libn32 = lib32
|
|
libx32 = libx32
|
|
|
|
p_l= $(1)$(cross_lib_arch)
|
|
p_d= $(1)-dbg$(cross_lib_arch)
|
|
d_l= debian/$(p_l)
|
|
d_d= debian/$(p_d)
|
|
|
|
ifeq ($(DEB_CROSS),yes)
|
|
usr_lib = $(PFL)/lib
|
|
else
|
|
usr_lib = $(PFL)/$(libdir)
|
|
endif
|
|
usr_lib32 = $(PFL)/$(lib32loc)
|
|
usr_libn32 = $(PFL)/lib32
|
|
usr_libx32 = $(PFL)/libx32
|
|
usr_lib64 = $(PFL)/lib64
|
|
|
|
ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes)
|
|
libdir = lib/$(DEB_TARGET_MULTIARCH)
|
|
usr_lib = $(PF)/lib/$(DEB_TARGET_MULTIARCH)
|
|
endif
|
|
|
|
gcc_lib_dir32 = $(gcc_lib_dir)/$(biarch32subdir)
|
|
gcc_lib_dirn32 = $(gcc_lib_dir)/$(biarchn32subdir)
|
|
gcc_lib_dirx32 = $(gcc_lib_dir)/$(biarchx32subdir)
|
|
gcc_lib_dir64 = $(gcc_lib_dir)/$(biarch64subdir)
|
|
|
|
libgcc_dir = $(RPF)/$(libdir)
|
|
# yes, really; lib32gcc_s ends up in usr
|
|
libgcc_dir32 = $(PFL)/$(lib32loc)
|
|
libgcc_dirn32 = $(RPF)/lib32
|
|
# libx32gcc_s also ends up in usr
|
|
libgcc_dirx32 = $(PFL)/libx32
|
|
libgcc_dir64 = $(RPF)/lib64
|
|
|
|
# install_gcc_lib(lib,soname,flavour,package)
|
|
define install_gcc_lib
|
|
mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3))/
|
|
rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so}
|
|
dh_link -p$(4) \
|
|
/$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so
|
|
endef
|
|
|
|
# do_strip_lib_dbg(pkg,pkg_dbg,version,excludes)
|
|
define do_strip_lib_dbg
|
|
dh_strip -p$(strip $(1)) $(4) \
|
|
$(if $(with_dbg),--dbg-package=$(strip $(2)),--dbgsym-migration='$(strip $(2)) (<< $(strip $(3)))')
|
|
endef
|
|
|
|
checkdirs = $(builddir)
|
|
|
|
# FIXME: MULTIARCH_DIRNAME needed for g++-multiarch-incdir.diff
|
|
MULTIARCH_DIRNAME := $(DEB_TARGET_MULTIARCH)
|
|
export MULTIARCH_DIRNAME
|
|
|
|
default: build
|
|
|
|
configure: $(configure_dependencies)
|
|
|
|
$(configure_dummy_stamp):
|
|
touch $(configure_dummy_stamp)
|
|
|
|
$(configure_stamp):
|
|
dh_testdir
|
|
: # give information about the build process
|
|
@echo "------------------------ Build process variables ------------------------"
|
|
@echo "Memory on this machine:"
|
|
@egrep '^(Mem|Swap)' /proc/meminfo || true
|
|
@echo "Number of parallel processes used for the build: $(USE_CPUS)"
|
|
@echo "DEB_BUILD_OPTIONS: $$DEB_BUILD_OPTIONS"
|
|
@echo "Package source: $(PKGSOURCE)"
|
|
@echo "GCC version: $(GCC_VERSION)"
|
|
@echo "Base Debian version: $(BASE_VERSION)"
|
|
@echo 'Package Metadata: $(ELF_PACKAGE_METADATA)'
|
|
@echo -e "Configured with: $(subst ___, ,$(foreach i,$(CONFARGS),$(i)\n\t))"
|
|
ifeq ($(DEB_CROSS),yes)
|
|
@echo "Building cross compiler for $(DEB_TARGET_ARCH)"
|
|
endif
|
|
@echo "Using shell $(SHELL)"
|
|
@echo "Architecture: $(DEB_TARGET_ARCH) (GNU: $(TARGET_ALIAS))"
|
|
@echo "Compilers: $(CC) / $(CXX) / $(GDC) / $(GNAT)"
|
|
@echo "CPPFLAGS: $(CPPFLAGS)"
|
|
@echo "CFLAGS: $(CFLAGS)"
|
|
@echo "LDFLAGS: $(LDFLAGS)"
|
|
@echo "BOOT_CFLAGS: $(BOOT_CFLAGS)"
|
|
@echo "DEBIAN_BUILDARCH: $(DEBIAN_BUILDARCH)"
|
|
@echo "Install prefix: /$(PF)"
|
|
ifeq ($(biarchn32)-$(biarch64),yes-yes)
|
|
@echo "Will build the triarch compilers (o32/n32/64, defaulting to o32)"
|
|
else ifeq ($(biarchn32)-$(biarch32),yes-yes)
|
|
@echo "Will build the triarch compilers (o32/n32/64, defaulting to 64)"
|
|
else ifeq ($(biarch64)-$(biarch32),yes-yes)
|
|
@echo "Will build the triarch compilers (x32/64/32, defaulting to x32)"
|
|
else ifeq ($(biarch64)-$(biarchx32),yes-yes)
|
|
@echo "Will build the triarch compilers (32/64/x32, defaulting to 32bit)"
|
|
else ifeq ($(biarch32)-$(biarchx32),yes-yes)
|
|
@echo "Will build the triarch compilers (64/32/x32, defaulting to 64bit)"
|
|
else
|
|
ifeq ($(biarch64),yes)
|
|
@echo "Will build the biarch compilers (32/64, defaulting to 32bit)"
|
|
else
|
|
ifeq ($(biarch32),yes)
|
|
@echo "Will build the biarch compilers (64/32, defaulting to 64bit)"
|
|
else
|
|
@echo "Will not build the biarch compilers"
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(with_cxx),yes)
|
|
@echo "Will build the C++ compiler"
|
|
else
|
|
@echo "Will not build the C++ compiler: $(with_cxx)"
|
|
endif
|
|
ifeq ($(with_objc),yes)
|
|
@echo "Will build the ObjC compiler."
|
|
ifeq ($(with_objc_gc),yes)
|
|
@echo "Will build the extra ObjC runtime for garbage collection."
|
|
else
|
|
@echo "Will not build the extra ObjC runtime for garbage collection."
|
|
endif
|
|
else
|
|
@echo "Will not build the ObjC compiler: $(with_objc)"
|
|
endif
|
|
ifeq ($(with_objcxx),yes)
|
|
@echo "Will build the Obj-C++ compiler"
|
|
else
|
|
@echo "Will not build the Obj-C++ compiler: $(with_objcxx)"
|
|
endif
|
|
ifeq ($(with_fortran),yes)
|
|
@echo "Will build the Fortran 95 compiler."
|
|
else
|
|
@echo "Will not build the Fortran 95 compiler: $(with_fortran)"
|
|
endif
|
|
ifeq ($(with_ada),yes)
|
|
@echo "Will build the Ada compiler."
|
|
ifeq ($(with_libgnat),yes)
|
|
@echo "Will build the shared Ada libraries."
|
|
else
|
|
@echo "Will not build the shared Ada libraries."
|
|
endif
|
|
else
|
|
@echo "Will not build the Ada compiler: $(with_ada)"
|
|
endif
|
|
ifeq ($(with_go),yes)
|
|
@echo "Will build the Go compiler."
|
|
else
|
|
@echo "Will not build the Go compiler: $(with_go)"
|
|
endif
|
|
ifeq ($(with_d),yes)
|
|
@echo "Will build the D compiler"
|
|
ifeq ($(with_phobos),yes)
|
|
@echo "Will build the phobos D runtime library."
|
|
else
|
|
@echo "Will not build the phobos D runtime library: $(with_phobos)"
|
|
endif
|
|
else
|
|
@echo "Will not build the D compiler: $(with_d)"
|
|
endif
|
|
ifeq ($(with_m2),yes)
|
|
@echo "Will build the Modula-2 compiler."
|
|
else
|
|
@echo "Will not build the Modula-2 compiler: $(with_m2)"
|
|
endif
|
|
ifeq ($(with_rs),yes)
|
|
@echo "Will build the Rust compiler."
|
|
else
|
|
@echo "Will not build the Rust compiler: $(with_rs)"
|
|
endif
|
|
ifneq (,$(offload_targets))
|
|
@echo "Will build with offload compilers: $(offload_targets)."
|
|
else
|
|
@echo "Will build without offload compilers: $(with_offload_nvptx) / $(with_offload_gcn)"
|
|
endif
|
|
ifeq ($(with_ssp),yes)
|
|
@echo "Will build with SSP support."
|
|
else
|
|
@echo "Will build without SSP support: $(with_ssp)"
|
|
endif
|
|
ifeq ($(with_check),yes)
|
|
@echo "Will run the testsuite."
|
|
else
|
|
@echo "Will not run the testsuite: $(with_check)"
|
|
endif
|
|
ifeq ($(with_nls),yes)
|
|
@echo "Will enable national language support."
|
|
else
|
|
@echo "Will disable national language support: $(with_nls)"
|
|
endif
|
|
@echo "-----------------------------------------------------------------------------"
|
|
@echo ""
|
|
ifeq ($(with_check),yes)
|
|
@if echo "spawn true" | /usr/bin/expect -f - >/dev/null; then \
|
|
: ; \
|
|
else \
|
|
echo "expect is failing on your system with the above error, which means the GCC"; \
|
|
echo "testsuite will fail. Please resolve the above issues and retry the build."; \
|
|
echo "-----------------------------------------------------------------------------"; \
|
|
exit 1; \
|
|
fi
|
|
endif
|
|
rm -f $(configure_stamp) $(build_stamp)
|
|
cat debian/README.Debian $(patch_stamp) > debian/README.Debian.$(DEB_TARGET_ARCH)
|
|
|
|
rm -rf $(builddir)
|
|
mkdir $(builddir)
|
|
|
|
ifneq (,$(filter musl-%,$(DEB_TARGET_ARCH)))
|
|
# We have to unconditionally link -lssp_nonshared on musl (see
|
|
# musl-ssp.diff). While gcc provides it, it comes a little late in the
|
|
# build for bootstrapping so we provide an empty one.
|
|
mkdir $(builddir)/gcc
|
|
ar rcs $(builddir)/gcc/libssp_nonshared.a
|
|
endif
|
|
|
|
: # some tools like gettext are built with a newer libstdc++
|
|
mkdir -p bin
|
|
for i in msgfmt; do \
|
|
install -m755 debian/bin-wrapper.in bin/$$i; \
|
|
done
|
|
ifeq ($(with_ada),yes)
|
|
: # gnat still needs the unversioned gnatmake and gnatbind
|
|
ln -sf /usr/bin/$(GNATBIND) bin/gnatbind
|
|
ln -sf /usr/bin/$(GNATMAKE) bin/gnatmake
|
|
endif
|
|
|
|
: # configure
|
|
if cd $(builddir) \
|
|
&& $(SET_PATH) \
|
|
$(call pass_vars, CC CXX GDC GNATBIND GNATMAKE $(flags_to_pass) \
|
|
CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD \
|
|
CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \
|
|
$(SET_SHELL) $(SET_TARGET_TOOLS) \
|
|
$(BINUTILS_GCCENV) \
|
|
../src/configure $(subst ___, ,$(CONFARGS)); \
|
|
then \
|
|
: ; \
|
|
else \
|
|
s=$$?; \
|
|
cat $(builddir)/config.log; \
|
|
exit $$s; \
|
|
fi
|
|
|
|
: # multilib builds without b-d on gcc-multilib (used in FLAGS_FOR_TARGET)
|
|
if [ -d /usr/include/$(DEB_TARGET_MULTIARCH)/asm ]; then \
|
|
mkdir -p $(builddir)/sys-include; \
|
|
ln -sf /usr/include/$(DEB_TARGET_MULTIARCH)/asm $(builddir)/sys-include/asm; \
|
|
fi
|
|
: # Fall back to the host crypt.h when target is unavailable as the
|
|
: #sizeof(struct crypt_data) is unlikely to change, needed by libsanitizer.
|
|
if [ ! -f /usr/include/crypt.h ] && \
|
|
[ ! -f /usr/include/$(DEB_TARGET_MULTIARCH)/crypt.h ] && \
|
|
[ -f /usr/include/$(DEB_HOST_MULTIARCH)/crypt.h ]; then \
|
|
mkdir -p $(builddir)/sys-include; \
|
|
ln -sf /usr/include/$(DEB_HOST_MULTIARCH)/crypt.h \
|
|
$(builddir)/sys-include/crypt.h; \
|
|
fi
|
|
|
|
touch $(configure_stamp)
|
|
|
|
build: $(sort $(build_arch_dependencies) $(build_indep_dependencies))
|
|
build-arch: $(build_arch_dependencies)
|
|
build-indep: $(build_indep_dependencies)
|
|
|
|
$(build_dummy_stamp):
|
|
touch $(build_dummy_stamp)
|
|
|
|
$(build_locale_stamp):
|
|
ifeq ($(locale_data)-$(with_cxx),generate-yes)
|
|
: # build locales needed by libstdc++ testsuite
|
|
rm -rf locales
|
|
mkdir locales
|
|
-USE_CPUS=$(USE_CPUS) sh debian/locale-gen
|
|
endif
|
|
touch $(build_locale_stamp)
|
|
|
|
MAX_BUILD_TRIES = 1
|
|
ifeq ($(distribution)-$(DEB_HOST_ARCH),Ubuntu-armhf)
|
|
MAX_BUILD_TRIES = 3
|
|
endif
|
|
|
|
$(build_stamp): $(configure_stamp) $(build_locale_stamp)
|
|
@echo === START $@ ===
|
|
dh_testdir
|
|
rm -f bootstrap-protocol*
|
|
@echo TTTTT $$(date -R)
|
|
ifeq ($(build_type),build-native)
|
|
: # build native compiler
|
|
set +e; \
|
|
set -o pipefail; \
|
|
try=0; \
|
|
while [ $$try -lt $(MAX_BUILD_TRIES) ]; do \
|
|
try=$$(expr $$try + 1); \
|
|
echo "=========== BUILD ($$try) =========="; \
|
|
$(SET_PATH) \
|
|
$(SET_SHELL) \
|
|
$(SET_LOCPATH) \
|
|
$(BINUTILS_GCCENV) \
|
|
$(time_command) $(MAKE) $(NJOBS) -C $(builddir) $(bootstrap_target) \
|
|
$(call pass_vars, CC $(flags_to_pass) \
|
|
STAGE1_CFLAGS STAGE1_LDFLAGS \
|
|
BOOT_CFLAGS BOOT_LDFLAGS \
|
|
CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD \
|
|
CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \
|
|
2>&1 | tee bootstrap-protocol$$try \
|
|
; \
|
|
status=$$?; \
|
|
echo $$status > status; \
|
|
echo === TIME $@ ===; \
|
|
if [ $$status -eq 0 ] || [ $$try -eq $(MAX_BUILD_TRIES) ]; then \
|
|
exit $$status; \
|
|
fi; \
|
|
done
|
|
else ifneq (,$(filter $(build_type),build-cross cross-build-native cross-build-cross))
|
|
: # build cross compiler for $(TARGET_ALIAS)
|
|
( \
|
|
set +e; \
|
|
$(SET_PATH) \
|
|
$(SET_LOCPATH) \
|
|
$(time_command) $(MAKE) $(NJOBS) -C $(builddir) \
|
|
$(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \
|
|
CFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \
|
|
; \
|
|
echo $$? > status; \
|
|
echo === TIME $@ ===; \
|
|
) 2>&1 | tee bootstrap-protocol
|
|
endif
|
|
@echo TTTTT $$(date -R)
|
|
s=`cat status`; rm -f status; \
|
|
if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \
|
|
for log in $$(find $(builddir) -name config.log); do \
|
|
case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \
|
|
echo LOGFILE START $$log; \
|
|
cat $$log; \
|
|
echo LOGFILE END $$log; \
|
|
done; \
|
|
fi; \
|
|
test $$s -eq 0
|
|
|
|
for h in $$(find $(builddir) -name omp.h); do \
|
|
echo "=================== OMP_H HEADER $$h ====================== "; \
|
|
cat $$h; \
|
|
done
|
|
|
|
if [ -f $(srcdir)/contrib/warn_summary ]; then \
|
|
rm -f bootstrap-summary; \
|
|
/bin/sh $(srcdir)/contrib/warn_summary $$(ls bootstrap-protocol* | head -1) \
|
|
> bootstrap-summary; \
|
|
fi
|
|
|
|
touch $(build_stamp)
|
|
@echo === END $@ ===
|
|
|
|
ifneq ($(build_type),build-native)
|
|
BUILT_CC = $(CC)
|
|
BUILT_CXX = $(CXX)
|
|
else
|
|
BUILT_CC = $(builddir)/gcc/xgcc -B$(builddir)/gcc/
|
|
BUILT_CXX = $(builddir)/gcc/xg++ -B$(builddir)/gcc/ \
|
|
-B$(builddir)/$(TARGET_ALIAS)/libatomic/.libs \
|
|
-B$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/src/.libs \
|
|
-B$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/libsupc++/.libs \
|
|
-I$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/include \
|
|
-I$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/include/$(TARGET_ALIAS) \
|
|
-I$(srcdir)/libstdc++-v3/libsupc++ \
|
|
-L$(builddir)/$(TARGET_ALIAS)/libatomic/.libs \
|
|
-L$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/src/.libs \
|
|
-L$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/libsupc++/.libs
|
|
endif
|
|
|
|
CONFARGS_JIT := \
|
|
$(filter-out --enable-languages=% \
|
|
--enable-libstdcxx-debug %bootstrap,\
|
|
$(CONFARGS)) \
|
|
--enable-languages=c++,jit \
|
|
--enable-host-shared \
|
|
--disable-bootstrap
|
|
|
|
# are other libs also safe to disable?
|
|
CONFARGS_JIT += \
|
|
--disable-libada \
|
|
--disable-libgfortran \
|
|
--disable-libgm2 \
|
|
--disable-libgo \
|
|
--disable-libphobos \
|
|
--disable-libquadmath \
|
|
|
|
$(configure_jit_stamp): $(build_stamp)
|
|
@echo === START $@ ===
|
|
dh_testdir
|
|
rm -f $(configure_jit_stamp) $(build_jit_stamp)
|
|
rm -rf $(builddir_jit)
|
|
mkdir $(builddir_jit)
|
|
|
|
: # configure jit
|
|
cd $(builddir_jit) && \
|
|
$(SET_PATH) \
|
|
$(SET_SHELL) \
|
|
CC="$(BUILT_CC)" \
|
|
CXX="$(BUILT_CXX)" \
|
|
$(BINUTILS_GCCENV) \
|
|
../src/configure $(subst ___, ,$(CONFARGS_JIT))
|
|
touch $(configure_jit_stamp)
|
|
|
|
$(build_jit_stamp): $(configure_jit_stamp)
|
|
@echo === START $@ ===
|
|
dh_testdir
|
|
( \
|
|
set +e; \
|
|
$(SET_PATH) \
|
|
$(SET_SHELL) \
|
|
$(SET_LOCPATH) \
|
|
$(BINUTILS_GCCENV) \
|
|
LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \
|
|
biarch_multidir_names=none \
|
|
$(time_command) $(MAKE) $(NJOBS) -C $(builddir_jit) \
|
|
$(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \
|
|
CFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \
|
|
; \
|
|
echo $$? > status; \
|
|
echo === TIME $@ ===; \
|
|
) 2>&1 | tee jit-protocol
|
|
|
|
s=`cat status`; rm -f status; \
|
|
if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \
|
|
for log in $$(find $(builddir_jit) -name config.log); do \
|
|
case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \
|
|
echo LOGFILE START $$log; \
|
|
cat $$log; \
|
|
echo LOGFILE END $$log; \
|
|
done; \
|
|
fi; \
|
|
test $$s -eq 0
|
|
|
|
ifeq ($(with_check),yes)
|
|
# FIXME: #782444
|
|
-DEB_BUILD_OPTIONS='$(DEB_BUILD_OPTIONS) gcc-ice=nodump,norepro' \
|
|
$(MAKE) -C $(builddir_jit)/gcc check-jit \
|
|
RUNTESTFLAGS="-v -v"
|
|
mkdir -p $(builddir)/gcc/testsuite/jit
|
|
cp -p $(builddir_jit)/gcc/testsuite/jit/jit.{log,sum} \
|
|
$(builddir)/gcc/testsuite/jit/.
|
|
endif
|
|
|
|
: # do the install in the build target, to save disk space
|
|
rm -rf $(d)-jit
|
|
mkdir -p $(d)-jit/$(PF)
|
|
|
|
$(SET_PATH) \
|
|
biarch_multidir_names=none \
|
|
$(MAKE) -C $(builddir_jit) \
|
|
CC="$(CC_FOR_TARGET)" \
|
|
$(call pass_vars, $(flags_to_pass)) \
|
|
DESTDIR=$(CURDIR)/$(d)-jit \
|
|
install
|
|
|
|
find $(d)-jit ! -type d
|
|
|
|
mkdir -p $(d)-jit/$(usr_lib)
|
|
mkdir -p $(d)-jit/$(gcc_lib_dir)/include
|
|
mv $(d)-jit/$(PF)/include/libgccjit*.h \
|
|
$(d)-jit/$(gcc_lib_dir)/include/.
|
|
ifneq ($(PF)/lib,$(usr_lib))
|
|
mv $(d)-jit/$(PF)/lib/libgccjit.so* \
|
|
$(d)-jit/$(usr_lib)/.
|
|
endif
|
|
cd $(d)-jit && tar cvfJ ../../installed-jit.tar.xz \
|
|
$(gcc_lib_dir)/include/libgccjit*.h \
|
|
$(usr_lib)/libgccjit.so* \
|
|
$(PF)/share/info/libgccjit*
|
|
rm -rf $(d)-jit
|
|
|
|
ifeq ($(save_disk_space),yes)
|
|
rm -rf $(builddir_jit)
|
|
endif
|
|
|
|
touch $(build_jit_stamp)
|
|
@echo === END $@ ===
|
|
|
|
CONFARGS_NVPTX := \
|
|
--prefix=/$(PF) \
|
|
--libexecdir=/$(libexecdir) \
|
|
--with-gcc-major-version-only \
|
|
--disable-bootstrap \
|
|
--disable-sjlj-exceptions \
|
|
--enable-newlib-io-long-long \
|
|
--target=nvptx-none \
|
|
--enable-as-accelerator-for=$(DEB_TARGET_GNU_TYPE) \
|
|
--enable-languages=c,c++,fortran,lto \
|
|
--enable-checking=release \
|
|
--with-system-zlib \
|
|
--without-isl
|
|
|
|
# --with-build-time-tools=/$(PF)/nvptx-none/bin
|
|
|
|
CONFARGS_NVPTX += --program-prefix=nvptx-none-
|
|
ifeq ($(versioned_packages),yes)
|
|
CONFARGS_NVPTX += --program-suffix=-$(BASE_VERSION)
|
|
endif
|
|
|
|
# FIXME: must not be run in parallel with jit and hppa64 builds ...
|
|
$(configure_nvptx_stamp): $(build_stamp) \
|
|
$(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \
|
|
$(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp))
|
|
@echo === START $@ ===
|
|
dh_testdir
|
|
rm -f $(configure_nvptx_stamp) $(build_nvptx_stamp)
|
|
rm -rf src-nvptx $(builddir_nvptx)
|
|
cp -al src src-nvptx
|
|
rm -rf src-nvptx/newlib
|
|
cp -a $(newlib_srcdir)/newlib src-nvptx/newlib
|
|
mkdir $(builddir_nvptx)
|
|
|
|
: # configure nvptx offload
|
|
cd $(builddir_nvptx) && \
|
|
$(SET_PATH) \
|
|
$(SET_SHELL) \
|
|
CC="$(BUILT_CC)" \
|
|
CXX="$(BUILT_CXX)" \
|
|
../src-nvptx/configure $(subst ___, ,$(CONFARGS_NVPTX))
|
|
touch $(configure_nvptx_stamp)
|
|
|
|
$(build_nvptx_stamp): $(configure_nvptx_stamp) \
|
|
$(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \
|
|
$(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp))
|
|
@echo === START $@ ===
|
|
ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib
|
|
( \
|
|
set +e; \
|
|
$(SET_PATH) \
|
|
$(SET_SHELL) \
|
|
$(SET_LOCPATH) \
|
|
LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \
|
|
biarch_multidir_names=none \
|
|
$(time_command) $(MAKE) $(NJOBS) -C $(builddir_nvptx) \
|
|
$(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \
|
|
CFLAGS_FOR_TARGET) \
|
|
; \
|
|
echo $$? > status; \
|
|
echo === TIME $@ ===; \
|
|
) 2>&1 | tee nvptx-protocol
|
|
|
|
s=`cat status`; rm -f status; \
|
|
if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \
|
|
for log in $$(find $(builddir_nvptx) -name config.log); do \
|
|
case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \
|
|
echo LOGFILE START $$log; \
|
|
cat $$log; \
|
|
echo LOGFILE END $$log; \
|
|
done; \
|
|
fi; \
|
|
test $$s -eq 0
|
|
|
|
rm -f $(srcdir)/newlib
|
|
touch $(build_nvptx_stamp)
|
|
@echo === END $@ ===
|
|
|
|
CONFARGS_GCN := \
|
|
--prefix=/$(PF) \
|
|
--libexecdir=/$(libexecdir) \
|
|
--with-gcc-major-version-only \
|
|
--disable-bootstrap \
|
|
--disable-sjlj-exceptions \
|
|
--enable-newlib-io-long-long \
|
|
--target=$(gcn_target_name) \
|
|
--enable-as-accelerator-for=$(DEB_TARGET_GNU_TYPE) \
|
|
--enable-languages=c,fortran,lto \
|
|
--enable-checking=release \
|
|
--disable-libstdcxx-pch \
|
|
--disable-libquadmath-support \
|
|
--with-system-zlib \
|
|
--without-isl \
|
|
--without-gnu-as \
|
|
--without-gnu-ld \
|
|
--with-build-time-tools=$(CURDIR)/bin-gcn
|
|
|
|
# --without-headers \
|
|
|
|
CONFARGS_GCN += --program-prefix=$(gcn_target_name)-
|
|
ifeq ($(versioned_packages),yes)
|
|
CONFARGS_GCN += --program-suffix=-$(BASE_VERSION)
|
|
endif
|
|
|
|
# FIXME: must not be run in parallel with jit and hppa64 builds ...
|
|
$(configure_gcn_stamp): $(build_stamp) \
|
|
$(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \
|
|
$(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) \
|
|
$(if $(filter yes, $(with_offload_nvptx)), $(build_nvptx_stamp))
|
|
@echo === START $@ ===
|
|
dh_testdir
|
|
|
|
rm -rf bin-gcn
|
|
ifeq ($(gcn_tools_llvm_version),tools)
|
|
ln -s /usr/$(gcn_target_name)/bin bin-gcn
|
|
else
|
|
mkdir bin-gcn
|
|
ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar bin-gcn/ar
|
|
ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc bin-gcn/as
|
|
ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld bin-gcn/ld
|
|
ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm bin-gcn/nm
|
|
ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib bin-gcn/ranlib
|
|
endif
|
|
ls -l /
|
|
ls -l /usr
|
|
-ls -l usr/$(gcn_target_name)
|
|
-ls -l usr/$(gcn_target_name)/bin
|
|
ls -l bin-gcn
|
|
ls -lL bin-gcn
|
|
bin-gcn/as --version
|
|
bin-gcn/ld --version
|
|
|
|
rm -f $(configure_gcn_stamp) $(build_gcn_stamp)
|
|
rm -rf src-gcn $(builddir_gcn)
|
|
cp -al src src-gcn
|
|
rm -rf src-gcn/newlib
|
|
cp -a $(newlib_srcdir)/newlib src-gcn/newlib
|
|
mkdir $(builddir_gcn)
|
|
|
|
: # configure gcn offload
|
|
cd $(builddir_gcn) && \
|
|
$(SET_PATH) \
|
|
$(SET_SHELL) \
|
|
CC="$(BUILT_CC)" \
|
|
CXX="$(BUILT_CXX)" \
|
|
../src-gcn/configure $(subst ___, ,$(CONFARGS_GCN))
|
|
touch $(configure_gcn_stamp)
|
|
|
|
$(build_gcn_stamp): $(configure_gcn_stamp) \
|
|
$(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \
|
|
$(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) \
|
|
$(if $(filter yes, $(with_offload_nvptx)), $(build_nvptx_stamp))
|
|
@echo === START $@ ===
|
|
ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib
|
|
( \
|
|
set +e; \
|
|
$(SET_PATH) \
|
|
$(SET_SHELL) \
|
|
$(SET_LOCPATH) \
|
|
LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \
|
|
biarch_multidir_names=none \
|
|
$(time_command) $(MAKE) $(NJOBS) -C $(builddir_gcn) \
|
|
$(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \
|
|
CFLAGS_FOR_TARGET) \
|
|
; \
|
|
echo $$? > status; \
|
|
echo === TIME $@ ===; \
|
|
) 2>&1 | tee amdgcn-protocol
|
|
|
|
s=`cat status`; rm -f status; \
|
|
if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \
|
|
for log in $$(find $(builddir_gcn) -name config.log); do \
|
|
case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \
|
|
echo LOGFILE START $$log; \
|
|
cat $$log; \
|
|
echo LOGFILE END $$log; \
|
|
done; \
|
|
fi; \
|
|
test $$s -eq 0
|
|
|
|
rm -f $(srcdir)/newlib
|
|
touch $(build_gcn_stamp)
|
|
@echo === END $@ ===
|
|
|
|
ifeq ($(versioned_packages),yes)
|
|
hppa64_configure_flags += --program-suffix=-$(BASE_VERSION)
|
|
endif
|
|
|
|
$(configure_hppa64_stamp): $(build_stamp) \
|
|
$(if $(filter yes, $(with_jit)), $(build_jit_stamp))
|
|
@echo === START $@ ===
|
|
dh_testdir
|
|
rm -f $(configure_hppa64_stamp) $(build_hppa64_stamp)
|
|
rm -rf $(builddir_hppa64)
|
|
mkdir $(builddir_hppa64)
|
|
: # configure hppa64
|
|
cd $(builddir_hppa64) && \
|
|
$(SET_PATH) \
|
|
$(SET_SHELL) \
|
|
CC="$(BUILT_CC)" \
|
|
CXX="$(BUILT_CXX)" \
|
|
$(call pass_vars, $(flags_to_pass)) \
|
|
../src/configure \
|
|
--enable-languages=c \
|
|
--prefix=/$(PF) \
|
|
--libexecdir=/$(hppa64libexecdir) \
|
|
--with-gcc-major-version-only \
|
|
--disable-shared \
|
|
--disable-nls \
|
|
--disable-threads \
|
|
--disable-libatomic \
|
|
--disable-libgomp \
|
|
--disable-libitm \
|
|
--disable-libssp \
|
|
--disable-libquadmath \
|
|
--enable-plugin \
|
|
--with-system-zlib \
|
|
--with-as=/usr/bin/hppa64-linux-gnu-as \
|
|
--with-ld=/usr/bin/hppa64-linux-gnu-ld \
|
|
--includedir=/usr/hppa64-linux-gnu/include \
|
|
--build=$(DEB_BUILD_GNU_TYPE) \
|
|
--host=$(DEB_HOST_GNU_TYPE) \
|
|
--target=hppa64-linux-gnu
|
|
touch $(configure_hppa64_stamp)
|
|
|
|
$(build_hppa64_stamp): $(configure_hppa64_stamp) \
|
|
$(if $(filter yes, $(with_jit)), $(build_jit_stamp))
|
|
@echo === START $@ ===
|
|
if [ -f $(srcdir)/gcc/distro-defaults.h ]; then \
|
|
if [ ! -f $(srcdir)/gcc/distro-defaults.h.saved ]; then \
|
|
mv $(srcdir)/gcc/distro-defaults.h $(srcdir)/gcc/distro-defaults.h.saved; \
|
|
fi; \
|
|
echo '/* Empty distro-defaults for hppa64 cross build */' \
|
|
> $(srcdir)/gcc/distro-defaults.h; \
|
|
fi
|
|
$(SET_PATH) \
|
|
$(SET_SHELL) \
|
|
$(SET_LOCPATH) \
|
|
LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \
|
|
$(time_command) $(MAKE) $(NJOBS) -C $(builddir_hppa64) \
|
|
$(call pass_vars, \
|
|
CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET)
|
|
if [ -f $(srcdir)/gcc/distro-defaults.h.saved ]; then \
|
|
mv -f $(srcdir)/gcc/distro-defaults.h.saved $(srcdir)/gcc/distro-defaults.h; \
|
|
fi
|
|
|
|
: # do the install in the build target, to save disk space
|
|
rm -rf $(d_hppa64)
|
|
mkdir -p $(d_hppa64)/$(PF)
|
|
|
|
$(SET_PATH) \
|
|
$(MAKE) -C $(builddir_hppa64) \
|
|
$(call pass_vars, CC $(flags_to_pass)) \
|
|
DESTDIR=$(CURDIR)/$(d_hppa64) \
|
|
install
|
|
|
|
: # remove files not needed
|
|
rm -rf $(d_hppa64)/$(PF)/info $(d_hppa64)/$(PF)/share/info
|
|
rm -rf $(d_hppa64)/$(PF)/man $(d_hppa64)/$(PF)/share/man
|
|
rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/plugin
|
|
rm -f $(d_hppa64)/$(PF)/lib/libiberty.a
|
|
rm -f $(d_hppa64)/$(PF)/lib/libcc1.*
|
|
rm -f $(d_hppa64)/$(PF)/bin/*{gcov,gcov-dump,gcov-tool,gccbug,gcc,lto-dump}
|
|
|
|
rm -rf $(d_hppa64)/$(PF)/hppa64-linux-gnu
|
|
rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/install-tools
|
|
rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/g++-mapper-server
|
|
rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/include-fixed
|
|
|
|
ifeq ($(versioned_packages),yes)
|
|
for i in cpp gcc-ar gcc-nm gcc-ranlib; do \
|
|
mv -f $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i \
|
|
$(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i$(pkg_ver); \
|
|
done
|
|
endif
|
|
mkdir -p $(d_hppa64)/$(PF)/share/man/man1
|
|
for i in gcc-ar gcc-nm gcc-ranlib; do \
|
|
ln -sf $$i$(pkg_ver).1.gz \
|
|
$(d_hppa64)/$(PF)/share/man/man1/hppa64-linux-gnu-$$i$(pkg_ver).1.gz; \
|
|
done
|
|
ifneq ($(GFDL_INVARIANT_FREE),yes)
|
|
for i in cpp gcc; do \
|
|
ln -sf $$i$(pkg_ver).1.gz \
|
|
$(d_hppa64)/$(PF)/share/man/man1/hppa64-linux-gnu-$$i$(pkg_ver).1.gz; \
|
|
done
|
|
endif
|
|
|
|
: # remove '*.la' and '*.lai' files, not shipped in any package.
|
|
find $(d_hppa64) -name '*.la' -o -name '*.lai' | xargs -r rm -f
|
|
|
|
: # remove rpath settings from binaries and shared libs
|
|
for i in $$(chrpath -k $(d_hppa64)/$(PF)/bin/* $(d_hppa64)/$(PFL)/lib*/lib*.so.* \
|
|
$(d_hppa64)/$(gcc_lib_dir)/plugin/* \
|
|
$(if $(filter $(with_multiarch_lib),yes), \
|
|
$(d_hppa64)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) \
|
|
2>/dev/null | awk -F: '/R(UN)?PATH=/ {print $$1}'); \
|
|
do \
|
|
[ -h $$i ] && continue; \
|
|
chrpath --delete $$i; \
|
|
echo "removed RPATH/RUNPATH: $$i"; \
|
|
done
|
|
|
|
: # fix permissions of liblto_plugin.so
|
|
chmod 644 $(d_hppa64)/$(PF)/libexec/gcc/hppa64-linux-gnu/$(BASE_VERSION)/liblto_plugin.so
|
|
|
|
cd $(d_hppa64) && tar cvfJ ../../installed-hppa64.tar.xz usr
|
|
rm -rf $(d_hppa64)
|
|
|
|
ifeq ($(save_disk_space),yes)
|
|
rm -rf $(builddir_hppa64)
|
|
endif
|
|
touch $(build_hppa64_stamp)
|
|
@echo === END $@ ===
|
|
|
|
ifeq ($(with_ada),yes)
|
|
MANUALS = \
|
|
$(srcdir)/gcc/ada/gnat_ugn.texi \
|
|
$(srcdir)/gcc/ada/gnat_rm.texi
|
|
endif
|
|
MANUALS += \
|
|
$(srcdir)/gcc/doc/gccint.texi \
|
|
$(srcdir)/gcc/doc/gcc.texi \
|
|
$(srcdir)/gcc/doc/cpp.texi \
|
|
$(srcdir)/gcc/doc/cppinternals.texi
|
|
ifeq ($(with_fortran),yes)
|
|
MANUALS += $(srcdir)/gcc/fortran/gfortran.texi
|
|
endif
|
|
ifeq ($(with_ada),yes)
|
|
MANUALS += $(srcdir)/gcc/ada/gnat-style.texi
|
|
endif
|
|
ifeq ($(with_gomp),yes)
|
|
MANUALS += $(srcdir)/libgomp/libgomp.texi
|
|
endif
|
|
ifeq ($(with_itm),yes)
|
|
MANUALS += $(srcdir)/libitm/libitm.texi
|
|
endif
|
|
ifeq ($(with_qmath),yes)
|
|
MANUALS += $(srcdir)/libquadmath/libquadmath.texi
|
|
endif
|
|
ifeq ($(with_go),yes)
|
|
MANUALS += $(srcdir)/gcc/go/gccgo.texi
|
|
endif
|
|
ifeq ($(with_d),yes)
|
|
MANUALS += $(srcdir)/gcc/d/gdc.texi
|
|
endif
|
|
ifeq ($(with_m2),yes)
|
|
MANUALS += $(srcdir)/gcc/doc/gm2.texi
|
|
endif
|
|
|
|
html-docs: $(build_html_stamp)
|
|
#$(build_html_stamp): $(stampdir)/05-build-html-split
|
|
$(build_html_stamp): $(stampdir)/05-build-html-nosplit
|
|
|
|
html-makeinfo-split: $(stampdir)/05-build-html-split
|
|
$(stampdir)/05-build-html-split: $(build_stamp)
|
|
mkdir -p html
|
|
rm -f html/*.html
|
|
cd $(builddir)/gcc; \
|
|
echo -n $(MANUALS) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \
|
|
sh -c 'outname=`basename {} .texi`.html; \
|
|
outname=`basename {} .texi`; \
|
|
echo "generating $$outname ..."; \
|
|
makeinfo --html --number-sections \
|
|
-I $(srcdir)/gcc/doc/include -I `dirname {}` \
|
|
-I $(srcdir)/gcc/p/doc \
|
|
-I $(srcdir)/gcc/p/doc/generated \
|
|
-I $(builddir)/gcc \
|
|
-I $(builddir)/gcc/m2 \
|
|
-I $(buildlibdir)/libquadmath \
|
|
-o $${outname} \
|
|
{}'
|
|
touch $@
|
|
|
|
html-makeinfo-nosplit: $(stampdir)/05-build-html-nosplit
|
|
$(stampdir)/05-build-html-nosplit: $(build_stamp)
|
|
mkdir -p html
|
|
rm -f html/*.html
|
|
cd $(builddir)/gcc; \
|
|
echo -n $(MANUALS) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \
|
|
sh -c 'outname=`basename {} .texi`.html; \
|
|
echo "generating $$outname ..."; \
|
|
makeinfo --html --number-sections --no-split \
|
|
-I $(srcdir)/gcc/doc/include -I `dirname {}` \
|
|
-I $(srcdir)/gcc/p/doc \
|
|
-I $(srcdir)/gcc/p/doc/generated \
|
|
-I $(builddir)/gcc \
|
|
-I $(builddir)/gcc/m2 \
|
|
-I $(buildlibdir)/libquadmath \
|
|
-o $(CURDIR)/html/$${outname} \
|
|
{}'
|
|
touch $@
|
|
|
|
# start the script only on architectures known to have slow autobuilders ...
|
|
logwatch_archs := amd64 i386 alpha armel armhf arm64 loong64 m68k \
|
|
mips mipsel mips64el riscv64 s390x sparc64 x32 hurd-amd64 hurd-i386
|
|
ifneq (,$(filter $(DEB_HOST_ARCH),$(logwatch_archs)))
|
|
start_logwatch = yes
|
|
endif
|
|
|
|
check: $(check_stamp)
|
|
$(check_stamp): $(filter $(build_stamp) $(build_jit_stamp) $(build_hppa64_stamp) $(build_nvptx_stamp) $(build_gcn_stamp), $(build_dependencies)) \
|
|
$(if $(filter nvptx-none, $(offload_targets)), $(install_nvptx_stamp)) \
|
|
$(if $(filter $(gcn_target_name), $(offload_targets)), $(install_gcn_stamp))
|
|
@echo === START $@ ===
|
|
rm -f test-protocol
|
|
rm -f $(builddir)/runcheck*
|
|
|
|
-chmod 755 $(srcdir)/contrib/test_summary
|
|
|
|
: # needed for the plugin tests to succeed
|
|
ln -sf gcc $(builddir)/prev-gcc
|
|
ln -sf $(DEB_TARGET_GNU_TYPE) $(builddir)/prev-$(DEB_TARGET_GNU_TYPE)
|
|
|
|
ifneq ($(with_common_libs),yes)
|
|
ifeq ($(with_cxx),yes)
|
|
ifeq (,$(filter $(DEB_TARGET_ARCH), armel armhf mipsel mips64el))
|
|
: # libstdc++6 built from newer gcc-X source, run testsuite against the installed lib
|
|
|
|
: # jit test results should not end up in the libstdc++-test-summary report
|
|
if [ -f $(builddir)/gcc/testsuite/jit/jit.sum ]; then \
|
|
mv $(builddir)/gcc/testsuite/jit/jit.log $(builddir)/gcc/testsuite/jit/jit.LOG; \
|
|
mv $(builddir)/gcc/testsuite/jit/jit.sum $(builddir)/gcc/testsuite/jit/jit.SUM; \
|
|
fi
|
|
|
|
sed 's/-L[^ "]*//g' $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags \
|
|
> $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags.installed
|
|
-$(ULIMIT_M); \
|
|
set +e; \
|
|
for d in $(buildlibdir)/libstdc++-v3/testsuite; do \
|
|
echo "Running testsuite in $$d ..."; \
|
|
TEST_INSTALLED=1 \
|
|
$(SET_SHELL) \
|
|
$(SET_LOCPATH) \
|
|
$(SET_PATH) \
|
|
DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \
|
|
DEB_GCC_NO_O3=1 \
|
|
$(MAKE) -k -C $$d $(NJOBS_TESTS) check $(RUNTESTFLAGS); \
|
|
done 2>&1 | tee test-protocol2
|
|
|
|
cd $(builddir); \
|
|
BOOT_CFLAGS="$(BOOT_CFLAGS)" \
|
|
$(srcdir)/contrib/test_summary -m "$(S_EMAIL)" > ../raw-test-summary
|
|
-( \
|
|
sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary; \
|
|
awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF; \
|
|
) > libstdc++-test-summary
|
|
echo 'BEGIN installed libstdc++-v3 test-summary'
|
|
cat libstdc++-test-summary
|
|
echo 'END installed libstdc++-v3 test-summary'
|
|
find $(buildlibdir)/libstdc++-v3/testsuite -name '*.log' -o -name '*.sum' \
|
|
| xargs -r rm -f
|
|
|
|
if [ -f $(builddir)/gcc/testsuite/jit/jit.SUM ]; then \
|
|
mv $(builddir)/gcc/testsuite/jit/jit.LOG $(builddir)/gcc/testsuite/jit/jit.log; \
|
|
mv $(builddir)/gcc/testsuite/jit/jit.SUM $(builddir)/gcc/testsuite/jit/jit.sum; \
|
|
fi
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(start_logwatch),yes)
|
|
: # start logwatch script for regular output during test runs
|
|
chmod +x debian/logwatch.sh
|
|
-debian/logwatch.sh -t 900 -p $(builddir)/logwatch.pid \
|
|
-m 'testsuite still running ...' \
|
|
test-protocol \
|
|
$(builddir) \
|
|
&
|
|
endif
|
|
|
|
: # FIXME: https://gcc.gnu.org/PR103944
|
|
rm -f $(srcdir)/libphobos/testsuite/libphobos.gc/forkgc2.d
|
|
|
|
-$(ULIMIT_M); \
|
|
set +e; \
|
|
for d in $(checkdirs); do \
|
|
echo "Running testsuite in $$d ..."; \
|
|
$(SET_SHELL) \
|
|
$(SET_LOCPATH) \
|
|
$(SET_PATH) \
|
|
EXTRA_TEST_PFLAGS=-g0 \
|
|
DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \
|
|
DEB_BUILD_OPTIONS='$(DEB_BUILD_OPTIONS) gcc-ice=nodump,norepro' \
|
|
DEB_GCC_NO_O3=1 \
|
|
$(time_command) $(MAKE) -k -C $$d $(NJOBS_TESTS) check $(RUNTESTFLAGS); \
|
|
done 2>&1 | tee test-protocol
|
|
|
|
-ps aux | fgrep logwatch | fgrep -v fgrep
|
|
-if [ -f $(builddir)/logwatch.pid ]; then \
|
|
kill -1 `cat $(builddir)/logwatch.pid`; \
|
|
sleep 1; \
|
|
kill -9 `cat $(builddir)/logwatch.pid`; \
|
|
rm -f $(builddir)/logwatch.pid; \
|
|
fi
|
|
-ps aux | fgrep logwatch | fgrep -v fgrep
|
|
|
|
ifeq ($(with_ada),yes)
|
|
-if [ -f $(builddir)/acats-killer.pid ]; then \
|
|
kill -1 `cat $(builddir)/acats-killer.pid`; \
|
|
sleep 1; \
|
|
kill -9 `cat $(builddir)/acats-killer.pid`; \
|
|
rm -f $(builddir)/acats-killer.pid; \
|
|
fi
|
|
endif
|
|
|
|
if [ -x $(srcdir)/contrib/test_summary ]; then \
|
|
rm -f test-summary; \
|
|
( \
|
|
cd $(builddir); \
|
|
echo '' > ts-include; \
|
|
echo '' >> ts-include; \
|
|
if [ -f $(builddir)/gcc/.bad_compare ]; then \
|
|
echo 'Bootstrap comparison failure:' >> ts-include; \
|
|
cat $(builddir)/gcc/.bad_compare >> ts-include; \
|
|
echo '' >> ts-include; \
|
|
echo '' >> ts-include; \
|
|
fi; \
|
|
echo "Build Dependencies:" >> ts-include; \
|
|
dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \
|
|
libgmp*-dev libmpfr-dev libmpc-dev libisl-dev \
|
|
| fgrep -v '<none>' >> ts-include; \
|
|
echo '' >> ts-include; \
|
|
cat ../$(patch_stamp) >> ts-include; \
|
|
BOOT_CFLAGS="$(BOOT_CFLAGS)" \
|
|
$(srcdir)/contrib/test_summary \
|
|
-i ts-include -m "$(S_EMAIL)" \
|
|
) > raw-test-summary; \
|
|
if [ -n "$(testsuite_tarball)" ]; then \
|
|
echo "Test suite used: $(testsuite_srcdir)" > test-summary; \
|
|
echo " Do not interpret the results on its own" >> test-summary; \
|
|
echo " but compare them with the results from" >> test-summary; \
|
|
echo " the gcc-snapshot package." >> test-summary; \
|
|
fi; \
|
|
sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary \
|
|
>> test-summary; \
|
|
awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF >> test-summary; \
|
|
if [ -f bootstrap-summary -a "$(bootstrap_target)" != profiledbootstrap ]; then \
|
|
echo '' >> test-summary; \
|
|
cat bootstrap-summary >> test-summary; \
|
|
fi; \
|
|
echo 'BEGIN test-summary'; \
|
|
cat test-summary; \
|
|
echo 'END test-summary'; \
|
|
fi
|
|
ifeq ($(with_d),yes)
|
|
: # the D test failures for the non-default multilibs are known, ignore them
|
|
egrep -v '^(FAIL|UNRESOLVED): (runnable|fail_c|comp)' test-summary > test-summary.tmp
|
|
mv -f test-summary.tmp test-summary
|
|
endif
|
|
|
|
: # prepare the inclusion of the test results
|
|
rm -rf $(d_tst)
|
|
mkdir -p $(d_tst)/$(docdir)/$(p_xbase)/test
|
|
echo "TEST COMPARE BEGIN"
|
|
for i in test-summary testsuite-comparision; do \
|
|
[ -f $$i ] || continue; \
|
|
cp -p $$i $(d_tst)/$(docdir)/$(p_xbase)/$$i; \
|
|
done
|
|
# more than one libgo.sum, avoid it
|
|
cp -p $$(find $(builddir)/gcc/testsuite -maxdepth 2 \( -name '*.sum' -o -name '*.log' \)) \
|
|
$$(find $(buildlibdir)/*/testsuite -maxdepth 1 \( -name '*.sum' -o -name '*.log' \) ! -name 'libgo.*') \
|
|
$(d_tst)/$(docdir)/$(p_xbase)/test/
|
|
ifeq ($(with_go),yes)
|
|
cp -p $(buildlibdir)/libgo/libgo.sum \
|
|
$(d_tst)/$(docdir)/$(p_xbase)/test/
|
|
endif
|
|
ifeq (0,1)
|
|
cd $(builddir); \
|
|
for i in $(CURDIR)/$(d_tst)/$(docdir)/$(p_xbase)/test/*.sum; do \
|
|
b=$$(basename $$i); \
|
|
if [ -f /usr/share/doc/$(p_xbase)/test/$$b.gz ]; then \
|
|
zcat /usr/share/doc/$(p_xbase)/test/$$b.gz > /tmp/$$b; \
|
|
if sh $(srcdir)/contrib/test_summary /tmp/$$b $$i; then \
|
|
echo "$$b: OK"; \
|
|
else \
|
|
echo "$$b: FAILURES"; \
|
|
fi; \
|
|
rm -f /tmp/$$b; \
|
|
else \
|
|
echo "Test summary for $$b is not available"; \
|
|
fi; \
|
|
done
|
|
endif
|
|
echo "TEST COMPARE END"
|
|
|
|
ifneq ($(with_common_libs),yes)
|
|
if [ -f libstdc++-test-summary ]; then \
|
|
cp libstdc++-test-summary \
|
|
$(d_tst)/$(docdir)/$(p_xbase)/libstdc++-installed-test-summary; \
|
|
fi
|
|
if [ -f $(buildlibdir)/libstdc++-v3/testsuite/libstdc++-installed.LOG ]; then \
|
|
cp $(buildlibdir)/libstdc++-v3/testsuite/libstdc++-installed.LOG \
|
|
$(d_tst)/$(docdir)/$(p_xbase)/test/libstdc++-installed.log; \
|
|
cp $(buildlibdir)/libstdc++-v3/testsuite/libstdc++-installed.SUM \
|
|
$(d_tst)/$(docdir)/$(p_xbase)/test/libstdc++-installed.sum; \
|
|
fi
|
|
endif
|
|
|
|
if which xz 2>&1 >/dev/null; then \
|
|
echo -n $(d_tst)/$(docdir)/$(p_xbase)/test/* \
|
|
| xargs -d ' ' -L 1 -P $(USE_CPUS) xz -9v; \
|
|
fi
|
|
|
|
-cp usage-*.svg $(d_tst)/$(docdir)/$(p_xbase)/.
|
|
-if which xz 2>&1 >/dev/null; then \
|
|
echo -n $(d_tst)/$(docdir)/$(p_xbase)/*.svg \
|
|
| xargs -d ' ' -L 1 -P $(USE_CPUS) xz -9v; \
|
|
fi
|
|
|
|
cd $(d_tst) && tar cvf ../../installed-testlogs.tar usr
|
|
rm -rf $(d_tst)
|
|
|
|
ifeq ($(save_disk_space),yes)
|
|
rm -rf $(builddir)/gcc/testsuite/*
|
|
rm -f usage-*.svg
|
|
endif
|
|
touch $(check_stamp)
|
|
|
|
$(check_inst_stamp): $(check_stamp)
|
|
rm -f test-inst-protocol
|
|
@echo === START $@ ===
|
|
|
|
ifeq ($(start_logwatch),yes)
|
|
: # start logwatch script for regular output during test runs
|
|
chmod +x debian/logwatch.sh
|
|
-debian/logwatch.sh -t 900 -p $(builddir)/logwatch-inst.pid \
|
|
-m 'testsuite (installed) still running ...' \
|
|
test-inst-protocol \
|
|
$(builddir) \
|
|
&
|
|
endif
|
|
|
|
rm -rf check-inst
|
|
mkdir check-inst
|
|
|
|
echo "Running testsuite ..."
|
|
-$(ULIMIT_M) ; \
|
|
$(SET_SHELL) \
|
|
$(SET_LOCPATH) \
|
|
EXTRA_TEST_PFLAGS=-g0 \
|
|
DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \
|
|
DEB_BUILD_OPTIONS='$(DEB_BUILD_OPTIONS) gcc-ice=nodump,norepro' \
|
|
cd check-inst && $(srcdir)/contrib/test_installed \
|
|
--with-gcc=gcc-$(CC) --with-g++=$(CXX) --with-g77=$(subst gcc,gfortran,$(CC)) \
|
|
2>&1 | tee test-inst-protocol
|
|
|
|
-ps aux | fgrep logwatch | fgrep -v fgrep
|
|
if [ -f $(builddir)/logwatch-inst.pid ]; then \
|
|
kill -1 `cat $(builddir)/logwatch-inst.pid`; \
|
|
else \
|
|
true; \
|
|
fi
|
|
-ps aux | fgrep logwatch | fgrep -v fgrep
|
|
|
|
-chmod 755 $(srcdir)/contrib/test_summary
|
|
if [ -x $(srcdir)/contrib/test_summary ]; then \
|
|
rm -f test-inst-summary; \
|
|
( \
|
|
cd check-inst; \
|
|
echo '' > ts-include; \
|
|
echo '' >> ts-include; \
|
|
echo "Build Dependencies:" >> ts-include; \
|
|
dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \
|
|
libgmp*-dev libmpfr-dev libmpc-dev libisl*-dev \
|
|
| fgrep -v '<none>' >> ts-include; \
|
|
echo '' >> ts-include; \
|
|
echo 'Results for the installed GCC-3.3 compilers' >> ts-include; \
|
|
$(srcdir)/contrib/test_summary \
|
|
-i ts-include -m "$(S_EMAIL)" \
|
|
) > raw-test-inst-summary; \
|
|
sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-inst-summary \
|
|
>> test-inst-summary; \
|
|
awk '/^cat/, /^EOF/' raw-test-inst-summary \
|
|
| grep -v EOF >> test-inst-summary; \
|
|
echo 'BEGIN test-installed-summary'; \
|
|
cat test-inst-summary; \
|
|
echo 'END test-installed-summary'; \
|
|
fi
|
|
|
|
chmod 755 debian/reduce-test-diff.awk
|
|
if diff -u test-inst-summary test-summary \
|
|
| debian/reduce-test-diff.awk > diff-summary; \
|
|
then \
|
|
mv -f diff-summary testsuite-comparision; \
|
|
else \
|
|
( \
|
|
echo "WARNING: New failures in gcc-3.4 compared to gcc-3.3"; \
|
|
echo ''; \
|
|
cat diff-summary; \
|
|
) > testsuite-comparision; \
|
|
rm -f diff-summary; \
|
|
fi
|
|
touch $(check_inst_stamp)
|
|
|
|
clean: debian/control
|
|
dh_testdir
|
|
rm -f pxxx status
|
|
rm -f *-summary *-protocol testsuite-comparision summary-diff
|
|
rm -f $(srcdir)/gcc/po/*.gmo
|
|
rm -rf src-nvptx src-gcn
|
|
rm -f debian/lib{gcc,objc,stdc++}{-v3,[0-9]}*.{{pre,post}{inst,rm},shlibs}
|
|
fs=`echo debian/*BV* debian/*CXX* debian/*LC* debian/*MF* | sort -u`; \
|
|
for f in $$fs; do \
|
|
[ -f $$f ] || continue; \
|
|
f2=$$(echo $$f \
|
|
| sed 's/BV/$(BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LC/$(GCC_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \
|
|
rm -f $$f2; \
|
|
done
|
|
rm -f debian/lib*gcc-s1.symbols
|
|
rm -f debian/lib*{atomic$(ATOMIC_SONAME),gfortran$(FORTRAN_SONAME),gomp$(GOMP_SONAME),itm$(ITM_SONAME),quadmath$(QUADMATH_SONAME),stdc++$(CXX_SONAME)}.symbols
|
|
find debian -maxdepth 1 -name '*-cross.symbols' -type l | xargs -r rm -f
|
|
rm -f debian/gcc-{XX,ar,nm,ranlib}-$(BASE_VERSION).1
|
|
rm -f debian/shlibs.local debian/shlibs.common* debian/substvars.local
|
|
rm -f debian/*.debhelper
|
|
-[ -d debian/bugs ] && $(MAKE) -C debian/bugs clean
|
|
rm -f debian/README.libstdc++-baseline debian/README.Bugs debian/README.Debian.$(DEB_TARGET_ARCH)
|
|
rm -f debian/arch_binaries* debian/indep_binaries*
|
|
rm -rf bin bin-gcn locales share
|
|
rm -rf check-inst
|
|
rm -f usage-*.svg
|
|
rm -f installed-*.tar*
|
|
dh_clean
|
|
ifneq (,$(filter $(build_type), build-cross cross-build-cross))
|
|
$(cross_clean) dh_clean
|
|
endif
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# some abbrevations for the package names and directories;
|
|
# p_XXX is the package name, d_XXX is the package directory
|
|
# these macros are only used in the binary-* targets.
|
|
|
|
ifeq ($(versioned_packages),yes)
|
|
pkg_ver := -$(BASE_VERSION)
|
|
endif
|
|
|
|
# if native or rtlibs build
|
|
ifeq ($(if $(filter yes,$(DEB_CROSS)),$(if $(filter rtlibs,$(DEB_STAGE)),native,cross),native),native)
|
|
p_base = gcc$(pkg_ver)-base
|
|
p_lbase = $(p_base)
|
|
p_xbase = gcc$(pkg_ver)-base
|
|
else
|
|
# only triggered if DEB_CROSS set
|
|
p_base = gcc$(pkg_ver)$(cross_bin_arch)-base
|
|
p_lbase = gcc$(pkg_ver)-cross-base$(GCC_PORTS_BUILD)
|
|
p_xbase = gcc$(pkg_ver)$(cross_bin_arch)-base
|
|
endif
|
|
p_cpp_b = cpp$(pkg_ver)-for-build
|
|
p_hppa64 = gcc$(pkg_ver)-hppa64-linux-gnu
|
|
|
|
# needed for shlibs.common* generation
|
|
ifeq (,$(p_lgcc))
|
|
p_lgcc = libgcc-s$(GCC_SONAME)$(cross_lib_arch)
|
|
endif
|
|
ifeq (,$(p_lib))
|
|
p_lib = libstdc++$(CXX_SONAME)$(cross_lib_arch)
|
|
endif
|
|
p_tst = gcc$(pkg_ver)-test-results
|
|
|
|
d = debian/tmp
|
|
d_base = debian/$(p_base)
|
|
d_xbase = debian/$(p_xbase)
|
|
d_lgcc = debian/$(p_lgcc)
|
|
d_hppa64= debian/$(p_hppa64)
|
|
d_tst = debian/$(p_tst)
|
|
|
|
common_substvars = \
|
|
$(shell awk "{printf \"'-V%s' \", \$$0}" debian/substvars.local)
|
|
|
|
ifeq ($(DEB_CROSS),yes)
|
|
lib_binaries := indep_binaries
|
|
else
|
|
lib_binaries := arch_binaries
|
|
endif
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE)))
|
|
include debian/rules.d/binary-snapshot.mk
|
|
else ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE)))
|
|
include debian/rules.d/binary-toolchain.mk
|
|
else
|
|
|
|
ifneq ($(with_base_only),yes)
|
|
ifneq ($(DEB_CROSS),yes)
|
|
ifeq ($(with_source),yes)
|
|
include debian/rules.d/binary-source.mk
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq ($(BACKPORT),true)
|
|
|
|
ifeq ($(with_gccbase),yes)
|
|
include debian/rules.d/binary-base.mk
|
|
endif
|
|
|
|
ifneq ($(with_base_only),yes)
|
|
|
|
# always include to get some definitions
|
|
include debian/rules.d/binary-libgcc.mk
|
|
|
|
ifeq ($(with_libqmath),yes)
|
|
include debian/rules.d/binary-libquadmath.mk
|
|
endif
|
|
|
|
ifeq ($(with_libgmath),yes)
|
|
include debian/rules.d/binary-libgccmath.mk
|
|
endif
|
|
|
|
ifeq ($(with_libgomp),yes)
|
|
include debian/rules.d/binary-libgomp.mk
|
|
endif
|
|
|
|
ifeq ($(with_libitm),yes)
|
|
include debian/rules.d/binary-libitm.mk
|
|
endif
|
|
|
|
ifeq ($(with_libatomic),yes)
|
|
include debian/rules.d/binary-libatomic.mk
|
|
endif
|
|
|
|
ifeq ($(with_libbacktrace),yes)
|
|
include debian/rules.d/binary-libbacktrace.mk
|
|
endif
|
|
|
|
ifeq ($(with_cdev),yes)
|
|
include debian/rules.d/binary-cpp.mk
|
|
endif
|
|
|
|
ifeq ($(with_libssp),yes)
|
|
include debian/rules.d/binary-libssp.mk
|
|
endif
|
|
|
|
ifeq ($(with_objcxx),yes)
|
|
include debian/rules.d/binary-objcxx.mk
|
|
endif
|
|
|
|
ifeq ($(with_objc),yes)
|
|
include debian/rules.d/binary-objc.mk
|
|
include debian/rules.d/binary-libobjc.mk
|
|
endif
|
|
|
|
ifeq ($(with_go),yes)
|
|
include debian/rules.d/binary-go.mk
|
|
endif
|
|
|
|
ifeq ($(with_cxxdev),yes)
|
|
include debian/rules.d/binary-cxx.mk
|
|
endif
|
|
ifeq ($(with_cxx),yes)
|
|
include debian/rules.d/binary-libstdcxx.mk
|
|
endif
|
|
|
|
ifeq ($(with_libasan),yes)
|
|
include debian/rules.d/binary-libasan.mk
|
|
endif
|
|
|
|
ifeq ($(with_liblsan),yes)
|
|
include debian/rules.d/binary-liblsan.mk
|
|
endif
|
|
|
|
ifeq ($(with_libtsan),yes)
|
|
include debian/rules.d/binary-libtsan.mk
|
|
endif
|
|
|
|
ifeq ($(with_libubsan),yes)
|
|
include debian/rules.d/binary-libubsan.mk
|
|
endif
|
|
|
|
ifeq ($(with_libhwasan),yes)
|
|
include debian/rules.d/binary-libhwasan.mk
|
|
endif
|
|
|
|
ifeq ($(with_libvtv),yes)
|
|
include debian/rules.d/binary-libvtv.mk
|
|
endif
|
|
|
|
ifeq ($(with_f77),yes)
|
|
include debian/rules.d/binary-f77.mk
|
|
endif
|
|
|
|
ifeq ($(with_fortran),yes)
|
|
include debian/rules.d/binary-fortran.mk
|
|
endif
|
|
|
|
ifeq ($(with_ada),yes)
|
|
include debian/rules.d/binary-ada.mk
|
|
endif
|
|
|
|
ifeq ($(with_d),yes)
|
|
include debian/rules.d/binary-d.mk
|
|
endif
|
|
|
|
ifeq ($(with_m2),yes)
|
|
include debian/rules.d/binary-m2.mk
|
|
endif
|
|
|
|
ifeq ($(with_rs),yes)
|
|
include debian/rules.d/binary-rust.mk
|
|
endif
|
|
|
|
ifeq ($(with_libcc1),yes)
|
|
include debian/rules.d/binary-libcc1.mk
|
|
endif
|
|
|
|
ifeq ($(with_jit),yes)
|
|
include debian/rules.d/binary-libgccjit.mk
|
|
endif
|
|
|
|
ifeq ($(with_offload_nvptx),yes)
|
|
include debian/rules.d/binary-nvptx.mk
|
|
endif
|
|
|
|
ifeq ($(with_offload_gcn),yes)
|
|
include debian/rules.d/binary-gcn.mk
|
|
endif
|
|
|
|
ifeq ($(with_libnof),yes)
|
|
ifeq ($(DEB_TARGET_GNU_CPU),powerpc)
|
|
include debian/rules.d/binary-nof.mk
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(with_softfloat),yes)
|
|
include debian/rules.d/binary-softfloat.mk
|
|
endif
|
|
|
|
# gcc must be moved/built after g77 and g++
|
|
ifeq ($(with_cdev),yes)
|
|
include debian/rules.d/binary-gcc.mk
|
|
endif
|
|
|
|
ifeq ($(with_hppa64),yes)
|
|
include debian/rules.d/binary-hppa64.mk
|
|
endif
|
|
|
|
endif # with_base_only
|
|
endif # BACKPORT
|
|
endif # ($(single_package),yes)
|
|
|
|
# ----------------------------------------------------------------------
|
|
install: $(install_dependencies)
|
|
|
|
$(install_dummy_stamp): $(build_dummy_stamp)
|
|
@echo === START $@ ===
|
|
touch $(install_dummy_stamp)
|
|
|
|
$(install_snap_stamp): $(build_dependencies)
|
|
@echo === START $@ ===
|
|
dh_testdir
|
|
dh_testroot
|
|
dh_prep
|
|
|
|
: # Install directories
|
|
rm -rf $(d)
|
|
mkdir -p $(d)/$(PF)
|
|
|
|
ifeq ($(with_hppa64),yes)
|
|
: # install files prepared in the hppa64 build target
|
|
cd $(d) && tar xvf ../../installed-hppa64.tar.xz
|
|
endif
|
|
|
|
: # Install everything
|
|
$(SET_PATH) \
|
|
$(SET_SHELL) \
|
|
$(MAKE) -C $(builddir) \
|
|
$(call pass_vars, $(flags_to_pass)) \
|
|
DESTDIR=$(CURDIR)/$(d) \
|
|
infodir=/$(PF)/share/info \
|
|
mandir=/$(PF)/share/man \
|
|
install
|
|
|
|
ls -l $(d)/$(PF)/bin
|
|
|
|
for i in ar nm ranlib; do \
|
|
cp debian/gcc-$$i-$(BASE_VERSION).1 \
|
|
$(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i.1; \
|
|
done
|
|
|
|
if [ ! -x $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc ]; then \
|
|
mv $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-14* $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc; \
|
|
else \
|
|
rm -f $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-14*; \
|
|
fi
|
|
rm -rf $(d)/$(gcc_lib_dir)/include-fixed
|
|
|
|
ifneq ($(configured_libdir),$(libdir))
|
|
for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.py' '*.spec'; do \
|
|
mv $(d)/$(PF)/$(configured_libdir)/$$i \
|
|
$(d)/$(PF)/$(libdir)/. || true; \
|
|
done
|
|
endif
|
|
|
|
ifeq ($(with_jit),yes)
|
|
: # install files prepared in the jit build target
|
|
cd $(d) && tar xvf ../../installed-jit.tar.xz
|
|
endif
|
|
|
|
-ls -l $(d)/usr
|
|
if [ -d $(d)/usr/man/man1 ]; then \
|
|
mv $(d)/usr/man/man1/* $(d)/usr/share/man/man1/; \
|
|
fi
|
|
|
|
chmod 755 debian/dh_*
|
|
touch $(install_snap_stamp)
|
|
|
|
|
|
$(install_tc_stamp): $(build_dependencies)
|
|
@echo === START $@ ===
|
|
dh_testdir
|
|
dh_testroot
|
|
dh_prep
|
|
|
|
: # Install directories
|
|
rm -rf $(d)
|
|
mkdir -p $(d)/$(PF)
|
|
|
|
ifeq ($(with_hppa64),yes)
|
|
: # install files prepared in the hppa64 build target
|
|
cd $(d) && tar xvf ../../installed-hppa64.tar.xz
|
|
endif
|
|
|
|
: # Install everything
|
|
$(SET_PATH) \
|
|
$(SET_SHELL) \
|
|
$(MAKE) -C $(builddir) \
|
|
$(call pass_vars, $(flags_to_pass)) \
|
|
DESTDIR=$(CURDIR)/$(d) \
|
|
infodir=/$(PF)/share/info \
|
|
mandir=/$(PF)/share/man \
|
|
install
|
|
|
|
ls -l $(d)/$(PF)/bin
|
|
|
|
for i in ar nm ranlib; do \
|
|
cp debian/gcc-$$i-$(BASE_VERSION).1 \
|
|
$(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i.1; \
|
|
done
|
|
|
|
if [ ! -x $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc ]; then \
|
|
mv $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-13* $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc; \
|
|
else \
|
|
rm -f $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-13*; \
|
|
fi
|
|
rm -rf $(d)/$(gcc_lib_dir)/include-fixed
|
|
|
|
ifneq ($(configured_libdir),$(libdir))
|
|
for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.py' '*.spec'; do \
|
|
mv $(d)/$(PF)/$(configured_libdir)/$$i \
|
|
$(d)/$(PF)/$(libdir)/. || true; \
|
|
done
|
|
endif
|
|
|
|
ifeq ($(with_jit),yes)
|
|
: # install files prepared in the jit build target
|
|
cd $(d) && tar xvf ../../installed-jit.tar.xz
|
|
endif
|
|
|
|
-ls -l $(d)/usr
|
|
if [ -d $(d)/usr/man/man1 ]; then \
|
|
mv $(d)/usr/man/man1/* $(d)/usr/share/man/man1/; \
|
|
fi
|
|
|
|
chmod 755 debian/dh_*
|
|
touch $(install_tc_stamp)
|
|
|
|
|
|
$(install_stamp): $(build_stamp)
|
|
@echo === START $@ ===
|
|
dh_testdir
|
|
dh_testroot
|
|
dh_prep $(if $(filter yes,$(with_hppa64)),-N$(p_hppa64))
|
|
|
|
if [ -f $(binary_stamp)-hppa64 ]; then \
|
|
mv $(binary_stamp)-hppa64 saved-stamp-hppa64; \
|
|
fi
|
|
rm -f $(binary_stamp)*
|
|
if [ -f saved-stamp-hppa64 ]; then \
|
|
mv saved-stamp-hppa64 $(binary_stamp)-hppa64; \
|
|
fi
|
|
|
|
: # Install directories
|
|
rm -rf $(d)
|
|
mkdir -p $(d)/$(libdir) $(d)/$(PF) $(d)/$(PF)/$(libdir)/debug
|
|
ifeq ($(biarch32),yes)
|
|
mkdir -p $(d)/$(PF)/$(lib32loc)/debug
|
|
endif
|
|
ifeq ($(biarch64),yes)
|
|
mkdir -p $(d)/$(PF)/lib64/debug
|
|
endif
|
|
ifeq ($(biarchn32),yes)
|
|
mkdir -p $(d)/$(PF)/$(libn32)/debug
|
|
endif
|
|
ifeq ($(biarchx32),yes)
|
|
mkdir -p $(d)/$(PF)/libx32/debug
|
|
endif
|
|
|
|
ifneq (,$(filter $(DEB_TARGET_GNU_CPU),x86_64 sparc64 s390x powerpc64))
|
|
ifneq ($(DEB_TARGET_ARCH),x32)
|
|
: # link lib to lib64 and $(PF)/lib to $(PF)/lib64
|
|
: # (this works when CONFARGS contains '--disable-multilib')
|
|
ln -s $(configured_libdir) $(d)/lib64
|
|
mkdir -p $(d)/$(PF)/$(configured_libdir)
|
|
ln -s $(configured_libdir) $(d)/$(PF)/lib64
|
|
endif
|
|
endif
|
|
ifeq ($(DEB_TARGET_ARCH),x32)
|
|
: # link lib to libx32 and $(PF)/lib to $(PF)/libx32
|
|
ln -s $(configured_libdir) $(d)/libx32
|
|
mkdir -p $(d)/$(PF)/$(configured_libdir)
|
|
ln -s $(configured_libdir) $(d)/$(PF)/libx32
|
|
endif
|
|
|
|
: # Install everything
|
|
$(SET_PATH) \
|
|
$(SET_SHELL) \
|
|
$(MAKE) -C $(builddir) \
|
|
$(call pass_vars, $(flags_to_pass)) \
|
|
DESTDIR=$(CURDIR)/$(d) \
|
|
infodir=/$(PF)/share/info \
|
|
mandir=/$(PF)/share/man \
|
|
install
|
|
|
|
@echo III: =============== upstream install $(DEB_TARGET_ARCH) ===============
|
|
find $(d) ! -type d
|
|
@echo III: =============== end upstream install $(DEB_TARGET_ARCH) ===============
|
|
|
|
ifeq ($(with_m2),yes)
|
|
ifneq (,$(filter $(build_type), build-cross cross-build-cross))
|
|
: # FIXME: libm2 libs are installed wrong for libgm2
|
|
for i in $(d)/$(PF)/lib/libm2*; do \
|
|
test -e $$i || continue; \
|
|
echo mv $$i $(d)/$(PFL)/lib/. ; \
|
|
mv $$i $(d)/$(PFL)/lib/. ; \
|
|
done
|
|
endif
|
|
endif
|
|
|
|
rm -rf $(d)/$(gcc_lib_dir)/include-fixed
|
|
|
|
ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes)
|
|
@echo configured_libdir=$(configured_libdir) / libdir=$(libdir) / usr_lib=$(usr_lib)
|
|
ls $(d)/$(PF)/$(TARGET_ALIAS)/lib
|
|
set -x; \
|
|
if [ -d $(d)/$(PF)/$(TARGET_ALIAS)/lib ]; then \
|
|
cp -a $(d)/$(PF)/$(TARGET_ALIAS)/lib/* $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/.; \
|
|
fi
|
|
for d in $$(cd $(d)/$(PF)/$(TARGET_ALIAS); echo lib?*); do \
|
|
[ -d $(d)/$(PF)/$(TARGET_ALIAS)/$$d ] || continue; \
|
|
cp -a $(d)/$(PF)/$(TARGET_ALIAS)/$$d/* $(d)/$(PF)/$$d/.; \
|
|
done
|
|
else
|
|
ifneq ($(configured_libdir),$(libdir))
|
|
for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.o' '*.py' '*.spec'; do \
|
|
mv $(d)/$(PF)/$(configured_libdir)/$$i \
|
|
$(d)/$(PF)/$(libdir)/. || true; \
|
|
done
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(cmd_prefix))
|
|
for i in $(d)/$(PF)/share/info/$(cmd_prefix)*; do \
|
|
[ -f "$$i" ] || continue; \
|
|
mv $$i $$(echo $$i | sed 's/$(cmd_prefix)//'); \
|
|
done
|
|
endif
|
|
|
|
ifeq ($(with_libcxxdbg),yes)
|
|
: # FIXME: the libstdc++ gdb.py file is installed with a wrong name
|
|
for i in $$(find $(d)/$(PF) -name libstdc++_pic.a-gdb.py); do \
|
|
[ -f $$i ] || continue; \
|
|
d=$$(dirname $$i); \
|
|
b=$$(basename $$i); \
|
|
t=$$(cd $$d; echo libstdc++.so.*.*.*)-gdb.py; \
|
|
mv $$i $$d/$$t; \
|
|
done
|
|
endif
|
|
|
|
: # fix permissions of liblto_plugin.so
|
|
chmod 644 $(d)/$(gcc_lexec_dir)/liblto_plugin.so
|
|
|
|
: # remove rpath settings from binaries and shared libs
|
|
for i in $$(chrpath -k $(d)/$(PF)/bin/* $(d)/$(PFL)/lib*/lib*.so.* \
|
|
$(d)/$(gcc_lib_dir)/plugin/* \
|
|
$(if $(filter $(with_multiarch_lib),yes), \
|
|
$(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) \
|
|
2>/dev/null | awk -F: '/R(UN)?PATH=/ {print $$1}'); \
|
|
do \
|
|
[ -h $$i ] && continue; \
|
|
chrpath --delete $$i; \
|
|
echo "removed RPATH/RUNPATH: $$i"; \
|
|
done
|
|
|
|
: # remove '*.la' and '*.lai' files, not shipped in any package.
|
|
find $(d) -name '*.la' -o -name '*.lai' | xargs -r rm -f
|
|
|
|
ifeq ($(GFDL_INVARIANT_FREE),yes)
|
|
for i in gcc gcov; do \
|
|
I=`echo $$i | tr a-z A-Z`; \
|
|
sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \
|
|
debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \
|
|
done
|
|
|
|
ifeq ($(with_fortran),yes)
|
|
for i in g77; do \
|
|
I=`echo $$i | tr a-z A-Z`; \
|
|
sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \
|
|
debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \
|
|
done
|
|
endif
|
|
endif
|
|
|
|
ifneq ($(with_libgnat),yes)
|
|
rm -f $(d)/$(gcc_lib_dir)/adalib/lib*.so*
|
|
endif
|
|
|
|
# ifeq ($(with_ada),yes)
|
|
# : # rename files (versioned ada binaries)
|
|
# for i in ; do \
|
|
# mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \
|
|
# mv $(d)/$(PF)/share/man/man1/$$i.1 \
|
|
# $(d)/$(PF)/share/man/man1/$$i-$(GNAT_VERSION).1; \
|
|
# done
|
|
# for i in $(GNAT_TOOLS); do \
|
|
# mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \
|
|
# done
|
|
# endif
|
|
|
|
for i in ar nm ranlib; do \
|
|
cp debian/gcc-$$i-$(BASE_VERSION).1 \
|
|
$(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i$(pkg_ver).1; \
|
|
done
|
|
|
|
chmod 755 debian/dh_*
|
|
|
|
ifneq ($(with_common_libs),yes)
|
|
# for native builds, the default ml libs are always available; no need for a placeholder
|
|
# apparently this changed with newer dpkg versions (1.18.7?) ...
|
|
echo 'libgcc_s $(GCC_SONAME) $(p_lgcc)' > debian/shlibs.common
|
|
echo 'libstdc++ $(CXX_SONAME) $(p_lib)' >> debian/shlibs.common
|
|
echo 'libquadmath $(QUADMATH_SONAME) libquadmath$(QUADMATH_SONAME)$(cross_lib_arch)' >> debian/shlibs.common
|
|
echo 'libatomic $(ATOMIC_SONAME) libatomic$(ATOMIC_SONAME)$(cross_lib_arch)' >> debian/shlibs.common
|
|
$(foreach ml,32 64 n32 x32, \
|
|
echo 'libgcc_s $(GCC_SONAME) $(subst lib,lib$(ml),$(p_lgcc))' > debian/shlibs.common$(ml); \
|
|
echo 'libstdc++ $(CXX_SONAME) $(subst lib,lib$(ml),$(p_lib))' >> debian/shlibs.common$(ml); \
|
|
echo 'libquadmath $(QUADMATH_SONAME) lib$(ml)quadmath$(QUADMATH_SONAME)$(cross_lib_arch)' >> debian/shlibs.common$(ml); \
|
|
echo 'libatomic $(ATOMIC_SONAME) lib$(ml)atomic$(ATOMIC_SONAME)$(cross_lib_arch)' >> debian/shlibs.common$(ml); \
|
|
)
|
|
endif
|
|
|
|
@echo III: =============== fixed install $(DEB_TARGET_ARCH) ===============
|
|
find $(d) ! -type d -print
|
|
@echo III: =============== end fixed install $(DEB_TARGET_ARCH) ===============
|
|
touch $(install_stamp)
|
|
|
|
$(install_jit_stamp): $(build_jit_stamp) $(install_stamp)
|
|
@echo === START $@ ===
|
|
dh_testdir
|
|
dh_testroot
|
|
|
|
: # install files prepared in the jit build target
|
|
cd $(d) && tar xvf ../../installed-jit.tar.xz
|
|
|
|
@echo XXXXX `date -R`
|
|
touch $(install_jit_stamp)
|
|
|
|
$(install_nvptx_stamp): $(build_nvptx_stamp)
|
|
@echo === START $@ ===
|
|
dh_testdir
|
|
ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib
|
|
rm -rf $(d)-nvptx
|
|
mkdir -p $(d)-nvptx/$(PF)
|
|
|
|
$(SET_PATH) \
|
|
biarch_multidir_names=none \
|
|
$(MAKE) -C $(builddir_nvptx) \
|
|
CC="$(CC_FOR_TARGET)" \
|
|
$(call pass_vars, $(flags_to_pass)) \
|
|
DESTDIR=$(CURDIR)/$(d)-nvptx \
|
|
install
|
|
|
|
find $(d)-nvptx
|
|
@echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
rm -rf $(d)-nvptx/$(libexecdir)/$(gcc_subdir_name)/nvptx-none/$(versiondir)/install-tools
|
|
rm -rf $(d)-nvptx/$(libexecdir)/$(gcc_subdir_name)/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/{install-tools,plugin,cc1,cc1plus,f951}
|
|
rm -rf $(d)-nvptx/$(PF)/share/{info,man/man7,locale}
|
|
rm -rf $(d)-nvptx/$(PF)/share/man/man1/*-{gcov,gfortran,g++,cpp}.1
|
|
rm -rf $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/{install-tools,plugin}
|
|
rm -rf $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/{install-tools,plugin,include-fixed}
|
|
rm -rf $(d)-nvptx/$(PF)/lib/libc[cp]1*
|
|
rm -rf $(d)-nvptx/$(PF)/lib{32,64,n32,x32}
|
|
|
|
mv -f $(d)-nvptx/$(PF)/nvptx-none/lib/*.{a,spec} \
|
|
$(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/
|
|
mv -f $(d)-nvptx/$(PF)/nvptx-none/lib/mgomp/*.{a,spec} \
|
|
$(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/mgomp/
|
|
mv -f $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/*.a \
|
|
$(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/
|
|
mv -f $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/mgomp/*.a \
|
|
$(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/mgomp/
|
|
find $(d)-nvptx -name \*.la | xargs rm -f
|
|
rm -rf $(d)-nvptx/$(PF)/nvptx-none/include
|
|
-find $(d)-nvptx -type d -empty -delete
|
|
|
|
: # a complete compiler installation needed for running the tests
|
|
ifneq ($(single_package),yes)
|
|
ln -sf lib $(d)-nvptx/$(PF)/libexec
|
|
endif
|
|
ln -sf /usr/bin/nvptx-none-ar $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/ar
|
|
ln -sf /usr/bin/nvptx-none-as $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/as
|
|
ln -sf /usr/bin/nvptx-none-ld $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/ld
|
|
ln -sf /usr/bin/nvptx-none-ranlib $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/ranlib
|
|
|
|
@echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
find $(d)-nvptx
|
|
@echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
|
|
rm -f $(srcdir)/newlib
|
|
@echo XXXXX `date -R`
|
|
touch $(install_nvptx_stamp)
|
|
|
|
$(install_gcn_stamp): $(build_gcn_stamp)
|
|
@echo === START $@ ===
|
|
dh_testdir
|
|
ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib
|
|
rm -rf $(d)-gcn
|
|
mkdir -p $(d)-gcn/$(PF)
|
|
|
|
$(SET_PATH) \
|
|
biarch_multidir_names=none \
|
|
$(MAKE) -C $(builddir_gcn) \
|
|
CC="$(CC_FOR_TARGET)" \
|
|
$(call pass_vars, $(flags_to_pass)) \
|
|
DESTDIR=$(CURDIR)/$(d)-gcn \
|
|
install
|
|
|
|
find $(d)-gcn
|
|
@echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
rm -rf $(d)-gcn/$(libexecdir)/$(gcc_subdir_name)/$(gcn_target_name)/$(versiondir)/install-tools
|
|
rm -rf $(d)-gcn/$(libexecdir)/$(gcc_subdir_name)/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/{install-tools,plugin,cc1,cc1plus,f951}
|
|
rm -rf $(d)-gcn/$(PF)/share/{info,man/man7,locale}
|
|
rm -rf $(d)-gcn/$(PF)/bin/*-{gcov*,lto-dump}-$(versiondir)
|
|
rm -rf $(d)-gcn/$(PF)/share/man/man1/*-{cpp,gcov*,gfortran,g++,lto-dump}-$(versiondir).1
|
|
rm -rf $(d)-gcn/$(PF)/lib/gcc/$(gcn_target_name)/$(versiondir)/{install-tools,plugin}
|
|
rm -rf $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/{install-tools,plugin,include-fixed}
|
|
rm -rf $(d)-gcn/$(PF)/lib/libc[cp]1*
|
|
rm -rf $(d)-gcn/$(PF)/lib{32,64,n32,x32}
|
|
|
|
for d in . $$(cd $(d)-gcn/$(PF)/$(gcn_target_name)/lib && echo gfx9* gfx1*); do \
|
|
mv -f $(d)-gcn/$(PF)/$(gcn_target_name)/lib/$$d/*.{a,spec} \
|
|
$(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/$$d/.; \
|
|
mv -f $(d)-gcn/$(PF)/lib/gcc/$(gcn_target_name)/$(versiondir)/$$d/*.a \
|
|
$(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/$$d/.; \
|
|
done
|
|
|
|
find $(d)-gcn -name \*.la | xargs rm -f
|
|
rm -rf $(d)-gcn/$(PF)/$(gcn_target_name)/include
|
|
rm -rf $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/include
|
|
rm -rf $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/gfx*
|
|
|
|
: # a complete compiler installation needed for running the tests
|
|
ifneq ($(single_package),yes)
|
|
ln -sf lib $(d)-gcn/$(PF)/libexec
|
|
endif
|
|
ifeq ($(gcn_tools_llvm_version),tools)
|
|
for t in ar as ld nm ranlib; do \
|
|
ln -sf /usr/$(gcn_target_name)/bin/$$t \
|
|
$(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/$$t; \
|
|
done
|
|
else
|
|
ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar \
|
|
$(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar
|
|
ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc \
|
|
$(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/as
|
|
ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld \
|
|
$(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld
|
|
ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm \
|
|
$(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm
|
|
ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib \
|
|
$(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib
|
|
endif
|
|
: # fix permissions of liblto_plugin.so
|
|
chmod 644 $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/liblto_plugin.so
|
|
|
|
-find $(d)-gcn -type d -empty -delete
|
|
@echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
find $(d)-gcn
|
|
@echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
|
|
rm -f $(srcdir)/newlib
|
|
@echo XXXXX `date -R`
|
|
touch $(install_gcn_stamp)
|
|
|
|
$(install_hppa64_stamp): $(build_hppa64_stamp)
|
|
@echo === START $@ ===
|
|
dh_testdir
|
|
dh_testroot
|
|
rm -rf $(d_hppa64)
|
|
mkdir -p $(d_hppa64)/$(PF)
|
|
|
|
: # install files prepared in the hppa64 build target
|
|
cd $(d_hppa64) && tar xvf ../../installed-hppa64.tar.xz
|
|
|
|
touch $(install_hppa64_stamp)
|
|
|
|
# ----------------------------------------------------------------------
|
|
# Build architecture-dependent files here.
|
|
debian/arch_binaries.all: $(foreach i,$(arch_binaries),$(binary_stamp)-$(i))
|
|
cd debian; xargs -r du -s < arch_binaries | sort -nr | awk '{print $$2}' \
|
|
> arch_binaries.tmp
|
|
mv debian/arch_binaries.tmp debian/arch_binaries
|
|
sed -i 's/ /\n/g' debian/arch_binaries.epoch || touch debian/arch_binaries.epoch
|
|
cat debian/arch_binaries debian/arch_binaries.epoch > debian/arch_binaries.all
|
|
|
|
# see #879054 for the "test ! -s" tests, needed for the rtlibs stage
|
|
binary-arch: $(foreach i,$(arch_binaries),$(binary_stamp)-$(i)) debian/arch_binaries.all
|
|
test ! -s debian/arch_binaries.all || \
|
|
dh_compress $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) \
|
|
-X.log.xz -X.sum.xz -X.c -X.txt -X.tag -X.map -XREADME.Bugs
|
|
test ! -s debian/arch_binaries.all || \
|
|
dh_fixperms $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p))
|
|
ifeq ($(with_ada),yes)
|
|
find $$(ls -d $(d_gnat) $(d_gnatsjlj) $(d_snap) 2>/dev/null) \
|
|
-name '*.ali' | xargs -r chmod 444
|
|
endif
|
|
@set -e; \
|
|
pkgs="$$(sed 's/^/-p/;/-for-host/d' debian/arch_binaries | xargs)"; \
|
|
if [ -n "$$pkgs" ]; then \
|
|
echo dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \
|
|
dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \
|
|
fi
|
|
@set -e; \
|
|
pkgs="$$(sed -n 's/^/-p/;/-for-host/p' debian/arch_binaries | xargs)"; \
|
|
if [ -n "$$pkgs" ]; then \
|
|
echo $(cross_gencontrol) dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \
|
|
$(cross_gencontrol) dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \
|
|
fi
|
|
@set -e; \
|
|
pkgs='$(strip $(foreach p,$(shell echo `cat debian/arch_binaries.epoch`),-p$(p)))'; \
|
|
if [ -n "$$pkgs" ]; then \
|
|
echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \
|
|
dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \
|
|
fi
|
|
ifneq ($(single_package),yes)
|
|
ifeq ($(with_libcompatgcc),yes)
|
|
cp -p debian/.debhelper/generated/$(p_lgcc)/triggers \
|
|
debian/.debhelper/generated/$(subst gcc-s,gcc,$(p_lgcc))/.
|
|
endif
|
|
endif
|
|
test ! -s debian/arch_binaries.all || \
|
|
dh_installdeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p))
|
|
test ! -s debian/arch_binaries.all || \
|
|
dh_md5sums $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p))
|
|
test ! -s debian/arch_binaries.all || \
|
|
dh_builddeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p))
|
|
ifeq ($(with_check),yes)
|
|
@echo Done
|
|
# : # Send Email about sucessfull build.
|
|
# # cat raw-test-summary | sh; echo "Sent mail to $(S_EMAIL)"
|
|
endif
|
|
|
|
ifneq ($(single_package),yes)
|
|
: # remove empty directories, when all components are in place
|
|
-find $(d) -type d -empty -delete
|
|
|
|
@echo "Listing installed files not included in any package:"
|
|
-find $(d) ! -type d
|
|
endif
|
|
-du -s -BM .
|
|
-du -s -BM ..
|
|
@echo XXXXX `date -R`
|
|
|
|
# ----------------------------------------------------------------------
|
|
# Build architecture-independent files here.
|
|
debian/indep_binaries.all: $(foreach i,$(indep_binaries),$(binary_stamp)-$(i))
|
|
cd debian; xargs -r du -s < indep_binaries | sort -nr | awk '{print $$2}' \
|
|
> indep_binaries.tmp
|
|
mv debian/indep_binaries.tmp debian/indep_binaries
|
|
sed -i 's/ /\n/g' debian/indep_binaries.epoch || touch debian/indep_binaries.epoch
|
|
cat debian/indep_binaries debian/indep_binaries.epoch > debian/indep_binaries.all
|
|
|
|
binary-indep: $(foreach i,$(indep_binaries),$(binary_stamp)-$(i)) debian/indep_binaries.all
|
|
find debian -name _formulas.log -delete -print
|
|
dh_compress $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) \
|
|
-X.log.xz -X.sum.xz -X.c -X.txt -X.tag -X.map -XREADME.Bugs
|
|
dh_fixperms $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p))
|
|
: # the export should be harmless for the binary indep packages of a native build
|
|
export DEB_HOST_ARCH=$(TARGET); \
|
|
dh_gencontrol $(foreach p,$(shell echo `cat debian/indep_binaries`),-p$(p)) \
|
|
-- -v$(DEB_VERSION) $(common_substvars)
|
|
@set -e; \
|
|
export DEB_HOST_ARCH=$(TARGET); \
|
|
pkgs='$(strip $(foreach p,$(shell echo `cat debian/indep_binaries.epoch`),-p$(p)))'; \
|
|
if [ -n "$$pkgs" ]; then \
|
|
echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \
|
|
dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \
|
|
fi
|
|
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH), mips mipsel mips64 mips64el mipsn32 mipsn32el))
|
|
for p in `cat debian/indep_binaries debian/indep_binaries.epoch`; do \
|
|
p=$${p#-p*}; \
|
|
case "$$p" in \
|
|
lib64*) echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/libn?32[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_l64gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \
|
|
libn32*) echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/lib64[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_ln32gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \
|
|
esac; \
|
|
done
|
|
endif
|
|
|
|
dh_installdeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p))
|
|
dh_md5sums $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p))
|
|
dh_builddeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p))
|
|
|
|
@echo XXXXX `date -R`
|
|
|
|
source diff:
|
|
@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
|
|
|
|
binary: binary-indep binary-arch
|
|
.PHONY: build build-indep build-arch clean binary-indep binary-arch binary
|
|
.PRECIOUS: $(stampdir)/%-stamp debian/indep_binaries.all debian/arch_binaries.all
|
|
.NOTPARALLEL:
|