1
0
Files
gcc-14/debian/rules.d/binary-ada.mk
Konstantin Demin c2c1923c7b initial import from Debian
version: 14.3.0-5
commit: bee30ab0fff2fd6af94c62376c8aa4221bb831e0
2025-08-11 15:00:09 +03:00

264 lines
8.3 KiB
Makefile

ifeq ($(with_libgnat),yes)
# During native builds, gnat-BV Depends:
# * libgnat because of the development symlink.
# During cross builds, gnat1 is linked statically. Only the latter remains.
$(lib_binaries) += libgnat
endif
arch_binaries := $(arch_binaries) ada-nat ada-host
ifeq ($(unprefixed_names),yes)
arch_binaries := $(arch_binaries) ada
indep_binaries := $(indep_binaries) ada-build
endif
ifneq ($(DEB_CROSS),yes)
ifneq ($(GFDL_INVARIANT_FREE),yes)
indep_binaries := $(indep_binaries) ada-doc
endif
endif
p_gbase = $(p_xbase)
p_glbase = $(p_lbase)
p_gnat_n = gnat-$(GNAT_VERSION)-$(subst _,-,$(TARGET_ALIAS))
p_gnat_h = gnat-$(GNAT_VERSION)-for-host
p_gnat_b = gnat-$(GNAT_VERSION)-for-build
p_gnat = gnat-$(GNAT_VERSION)
p_gnatsjlj= gnat-$(GNAT_VERSION)-sjlj$(cross_bin_arch)
p_lgnat = libgnat-$(GNAT_VERSION)$(cross_lib_arch)
p_lgnat_dbg = libgnat-$(GNAT_VERSION)-dbg$(cross_lib_arch)
p_gnatd = $(p_gnat)-doc
d_gbase = debian/$(p_gbase)
d_gnat_n = debian/$(p_gnat_n)
d_gnat_h = debian/$(p_gnat_h)
d_gnat_b = debian/$(p_gnat_b)
d_gnat = debian/$(p_gnat)
d_gnatsjlj = debian/$(p_gnatsjlj)
d_lgnat = debian/$(p_lgnat)
d_gnatd = debian/$(p_gnatd)
GNAT_TOOLS = gnat gnatbind gnatchop gnatclean gnatkr gnatlink \
gnatls gnatmake gnatname gnatprep gnathtml
dirs_gnat_n = \
$(docdir)/$(p_gbase) \
$(PF)/bin \
$(PF)/share/man/man1 \
$(gcc_lib_dir)/{adalib,adainclude} \
$(gcc_lexec_dir) \
usr/share/lintian/overrides
dirs_gnat = \
$(docdir)/$(p_gbase)/ada \
$(PF)/bin \
$(PF)/share/man/man1 \
usr/share/lintian/overrides
files_gnat_n = \
$(gcc_lexec_dir)/gnat1 \
$(gcc_lib_dir)/ada_target_properties \
$(gcc_lib_dir)/adainclude/*.ad[bs] \
$(gcc_lib_dir)/adainclude/*.h \
$(gcc_lib_dir)/adalib/*.ali \
$(gcc_lib_dir)/adalib/lib*.a \
$(foreach i,$(GNAT_TOOLS),$(PF)/bin/$(cmd_prefix)$(i)$(pkg_ver))
# Strip unreproducible -f*-prefix-map= options from installed .ali
# files until the proper solution BUILD_PATH_PREFIX_MAP is accepted.
sed_ali_strip_prefix_map := sed -i '/^A -f[a-z]+-prefix-map=/d'
$(binary_stamp)-libgnat: $(install_stamp)
dh_testdir
dh_testroot
mv $(install_stamp) $(install_stamp)-tmp
: # libgnat
rm -rf $(d_lgnat)
dh_install -p$(p_lgnat) $(gcc_lib_dir)/adalib/libgna{t,rl}-$(GNAT_SONAME).so $(usr_lib)
debian/dh_doclink -p$(p_lgnat) $(p_glbase)
debian/dh_rmemptydirs -p$(p_lgnat)
b=libgnat; \
v=$(GNAT_VERSION); \
for ext in preinst postinst prerm postrm; do \
for t in '' -dev -dbg; do \
if [ -f debian/$$b$$t.$$ext ]; then \
cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \
fi; \
done; \
done
$(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_lgnat) \
-V '$(p_lgnat) (>= $(shell echo $(DEB_VERSION) | sed 's/-.*//'))'
$(call cross_mangle_shlibs,$(p_lgnat))
ifneq (,$(filter $(build_type), build-native cross-build-native))
mkdir -p $(d_lgnat)/usr/share/lintian/overrides
echo package-name-doesnt-match-sonames > \
$(d_lgnat)/usr/share/lintian/overrides/$(p_lgnat)
endif
# The subst Make command below could be simplified, but ensures
# consistency with libraries building non-default multilib packages.
$(call do_strip_lib_dbg, $(p_lgnat), $(p_lgnat_dbg), $(v_dbg),,)
$(cross_shlibdeps) dh_shlibdeps -p$(p_lgnat) \
$(call shlibdirs_to_search, \
$(subst gnat-$(GNAT_SONAME),gcc-s$(GCC_SONAME),$(p_lgnat)) \
$(subst gnat-$(GNAT_SONAME),atomic$(ATOMIC_SONAME),$(p_lgnat)) \
,) \
$(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common)
$(call cross_mangle_substvars,$(p_lgnat))
ifeq ($(with_dbg),yes)
: # $(p_lgnat_dbg)
debian/dh_doclink -p$(p_lgnat_dbg) $(p_glbase)
endif
echo $(p_lgnat) $(if $(with_dbg), $(p_lgnat_dbg)) >> debian/$(lib_binaries)
trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
$(binary_stamp)-ada-nat: $(install_stamp)
dh_testdir
dh_testroot
mv $(install_stamp) $(install_stamp)-tmp
: # $(p_gnat_n)
rm -rf $(d_gnat_n)
dh_installdirs -p$(p_gnat_n) $(dirs_gnat_n)
: # Upstream does not install gnathtml.
cp src/gcc/ada/gnathtml.pl debian/tmp/$(PF)/bin/$(cmd_prefix)gnathtml$(pkg_ver)
chmod 755 debian/tmp/$(PF)/bin/$(cmd_prefix)gnathtml$(pkg_ver)
$(dh_compat2) dh_movefiles -p$(p_gnat_n) $(files_gnat_n)
ifeq ($(with_libgnat),yes)
# Similar links specific to Debian. FIXME: what is their purpose?
dh_link -p$(p_gnat_n) $(foreach lib,libgnat libgnarl,\
$(usr_lib)/$(lib)-$(GNAT_SONAME).so $(gcc_lib_dir)/adalib/$(lib).so)
endif
debian/dh_doclink -p$(p_gnat_n) $(p_gbase)
for i in $(GNAT_TOOLS); do \
case "$$i" in \
gnat) cp -p debian/gnat.1 $(d_gnat_n)/$(PF)/share/man/man1/$(cmd_prefix)gnat$(pkg_ver).1 ;; \
*) ln -sf $(cmd_prefix)gnat$(pkg_ver).1 $(d_gnat_n)/$(PF)/share/man/man1/$(cmd_prefix)$$i$(pkg_ver).1; \
esac; \
done
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
$(DWZ) \
$(d_gnat_n)/$(gcc_lexec_dir)/gnat1
endif
dh_strip -p$(p_gnat_n)
find $(d_gnat_n) -name '*.ali' | xargs $(sed_ali_strip_prefix_map)
find $(d_gnat_n) -name '*.ali' | xargs chmod 444
dh_shlibdeps -p$(p_gnat_n)
( \
echo '$(p_gnat_n) binary: hardening-no-pie'; \
echo '$(p_gnat_n) binary: non-standard-file-perm' \
) > $(d_gnat_n)/usr/share/lintian/overrides/$(p_gnat_n)
ifeq ($(GFDL_INVARIANT_FREE),yes)
echo '$(p_gnat_n) binary: binary-without-manpage' \
>> $(d_gnat_n)/usr/share/lintian/overrides/$(p_gnat_n)
endif
debian/dh_rmemptydirs -p$(p_gnat_n)
echo $(p_gnat_n) >> debian/arch_binaries
trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
$(binary_stamp)-ada-host: $(install_stamp)
dh_testdir
dh_testroot
mv $(install_stamp) $(install_stamp)-tmp
rm -rf $(d_gnat_h)
debian/dh_doclink -p$(p_gnat_h) $(p_xbase)
echo $(p_gnat_h) >> debian/arch_binaries
trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
$(binary_stamp)-ada-build: $(install_stamp)
dh_testdir
dh_testroot
mv $(install_stamp) $(install_stamp)-tmp
rm -rf $(d_gnat_b)
debian/dh_doclink -p$(p_gnat_b) $(p_cpp_b)
echo $(p_gnat_b) >> debian/indep_binaries
trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
$(binary_stamp)-ada: $(install_stamp)
dh_testdir
dh_testroot
mv $(install_stamp) $(install_stamp)-tmp
: # $(p_gnat)
rm -rf $(d_gnat)
dh_installdirs -p$(p_gnat) $(dirs_gnat)
ifeq ($(with_gnatsjlj),yes)
dh_installdirs -p$(p_gnatsjlj) $(gcc_lib_dir)
$(dh_compat2) dh_movefiles -p$(p_gnatsjlj) $(gcc_lib_dir)/rts-sjlj/adalib $(gcc_lib_dir)/rts-sjlj/adainclude
endif
debian/dh_doclink -p$(p_gnat) $(p_gbase)
ifeq ($(with_gnatsjlj),yes)
debian/dh_doclink -p$(p_gnatsjlj) $(p_gbase)
endif
cp -p src/gcc/ada/ChangeLog $(d_gnat)/$(docdir)/$(p_gbase)/ada/.
cp -p debian/ada/README.gnat $(d_gnat)/$(docdir)/$(p_gbase)/ada/.
ifneq (,$(filter $(build_type), build-native cross-build-native))
: # ship the versioned prefixed names in the gnat package.
for i in $(GNAT_TOOLS); do \
ln -sf $(cmd_prefix)$$i$(pkg_ver) \
$(d_gnat)/$(PF)/bin/$$i$(pkg_ver); \
ln -sf $(cmd_prefix)gnat$(pkg_ver).1.gz \
$(d_gnat)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \
done
endif
ifeq ($(GFDL_INVARIANT_FREE),yes)
echo '$(p_gnat) binary: binary-without-manpage' \
>> $(d_gnat)/usr/share/lintian/overrides/$(p_gnat)
endif
debian/dh_rmemptydirs -p$(p_gnat)
echo $(p_gnat) >> debian/arch_binaries
ifeq ($(with_gnatsjlj),yes)
dh_strip -p$(p_gnatsjlj)
find $(d_gnatsjlj) -name '*.ali' | xargs $(sed_ali_strip_prefix_map)
find $(d_gnatsjlj) -name '*.ali' | xargs chmod 444
dh_shlibdeps -p$(p_gnatsjlj)
echo $(p_gnatsjlj) >> debian/arch_binaries
endif
trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
$(build_gnatdoc_stamp): $(build_stamp)
mkdir -p html
rm -f html/*.info
echo -n gnat_ugn gnat_rm gnat-style | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \
sh -c 'cd html && \
echo "generating {}-$(GNAT_VERSION).info"; \
makeinfo -I $(srcdir)/gcc/doc/include -I $(srcdir)/gcc/ada \
-I $(builddir)/gcc \
-o {}-$(GNAT_VERSION).info \
$(srcdir)/gcc/ada/{}.texi'
touch $@
$(binary_stamp)-ada-doc: $(build_html_stamp) $(build_gnatdoc_stamp)
dh_testdir
dh_testroot
mv $(install_stamp) $(install_stamp)-tmp
rm -rf $(d_gnatd)
dh_installdirs -p$(p_gnatd) \
$(PF)/share/info
cp -p html/gnat*info* $(d_gnatd)/$(PF)/share/info/.
dh_installdocs -p$(p_gnatd) \
html/gnat_ugn.html html/gnat_rm.html html/gnat-style.html
echo $(p_gnatd) >> debian/indep_binaries
trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)