• Bug#872381: dpkg-dev: optimize Makefile snippets for debian/rules (2/5)

    From Nicolas Boulenguez@1:229/2 to All on Wed Jan 10 22:10:01 2024
    [continued from previous message]

    +ifndef dpkg_buildtools.mk_included
    +dpkg_buildtools.mk_included :=
    +
    +ifndef dpkg_architecture.mk_included
    +ifndef dpkg_datadir
    + dpkg_datadir := $(patsubst %/buildtools.mk,%,$(lastword $(MAKEFILE_LIST))) +endif
    include $(dpkg_datadir)/architecture.mk
    +endif

    # We set the TOOL_FOR_BUILD variables to the specified value, and the TOOL
    # variables (for the host) to their triplet-prefixed form iff they are
    @@ -74,3 +81,5 @@ $(eval $(call dpkg_buildtool_setvar,AR,ar))
    $(eval $(call dpkg_buildtool_setvar,RANLIB,ranlib))
    $(eval $(call dpkg_buildtool_setvar,PKG_CONFIG,pkgconf))
    $(eval $(call dpkg_buildtool_setvar,QMAKE,qmake))
    +
    +endif
    diff --git a/scripts/mk/default.mk b/scripts/mk/default.mk
    index 0b2fd4aca..61921e30e 100644
    --- a/scripts/mk/default.mk
    +++ b/scripts/mk/default.mk
    @@ -1,7 +1,13 @@
    # This Makefile fragment (since dpkg 1.16.1) includes all the Makefile
    # fragments that define variables that can be useful within debian/rules.

    -dpkg_datadir = $(srcdir)/mk
    +ifndef dpkg_default.mk_included
    +dpkg_default.mk_included :=
    +
    +ifndef dpkg_datadir
    + dpkg_datadir := $(patsubst %/default.mk,%,$(lastword $(MAKEFILE_LIST))) +endif
    +
    include $(dpkg_datadir)/architecture.mk
    include $(dpkg_datadir)/buildapi.mk
    ifeq ($(call dpkg_build_api_ge,1),yes)
    @@ -11,3 +17,5 @@ include $(dpkg_datadir)/buildflags.mk
    include $(dpkg_datadir)/buildopts.mk
    include $(dpkg_datadir)/pkg-info.mk
    include $(dpkg_datadir)/vendor.mk
    +
    +endif
    diff --git a/scripts/mk/pkg-info.mk b/scripts/mk/pkg-info.mk
    index bccde2317..5b38d84e9 100644
    --- a/scripts/mk/pkg-info.mk
    +++ b/scripts/mk/pkg-info.mk
    @@ -13,6 +13,9 @@
    # specified by <https://reproducible-builds.org/specs/source-date-epoch/>
    # (since dpkg 1.18.8).

    +i
  • From Nicolas Boulenguez@1:229/2 to All on Wed Apr 10 19:50:02 2024
    [continued from previous message]

    - test "$(CPPFLAGS_FOR_BUILD)" = "$(TEST_CXXFLAGS_FOR_BUILD)"
    - test "$(CXXFLAGS)" = "$(TEST_CXXFLAGS)"
    - test "$(CXXFLAGS_FOR_BUILD)" = "$(TEST_CXXFLAGS_FOR_BUILD)"
    - test "$(DFLAGS)" = "$(TEST_DFLAGS)"
    - test "$(DFLAGS_FOR_BUILD)" = "$(TEST_DFLAGS_FOR_BUILD)"
    - test "$(FCFLAGS)" = "$(TEST_FCFLAGS)"
    - test "$(FCFLAGS_FOR_BUILD)" = "$(TEST_FCFLAGS_FOR_BUILD)"
    - test "$(FFLAGS)" = "$(TEST_FFLAGS)"
    - test "$(FFLAGS_FOR_BUILD)" = "$(TEST_FFLAGS_FOR_BUILD)"
    - test "$(LDFLAGS)" = "$(TEST_LDFLAGS)"
    - test "$(LDFLAGS_FOR_BUILD)" = "$(TEST_LDFLAGS_FOR_BUILD)"
    - test "$(OBJCFLAGS)" = "$(TEST_OBJCFLAGS)"
    - test "$(OBJCFLAGS_FOR_BUILD)" = "$(TEST_OBJCFLAGS_FOR_BUILD)"
    - test "$(OBJCXXFLAGS)" = "$(TEST_OBJCXXFLAGS)"
    - test "$(OBJCXXFLAGS_FOR_BUILD)" = "$(TEST_OBJCXXFLAGS_FOR_BUILD)"
    +vars := \
    + ASFLAGS \
    + CFLAGS \
    + CPPFLAGS \
    + CXXFLAGS \
    + DFLAGS \
    + FCFLAGS \
    + FFLAGS \
    + LDFLAGS \
    + OBJCFLAGS \
    + OBJCXXFLAGS \
    + # EOL
    +loop_targets := $(vars) $(vars:=_FOR_BUILD)
    +
    +test: $(loop_targets)
    +
    +$(loop_targets):
    + test "$($@)" = "$(TEST_$@)"
    diff --git a/scripts/t/mk/buildtools.mk b/scripts/t/mk/buildtools.mk
    index 6c27c5cf2..c104ef62e 100644
    --- a/scripts/t/mk/buildtools.mk
    +++ b/scripts/t/mk/buildtools.mk
    @@ -1,33 +1,25 @@
    include $(srcdir)/mk/buildtools.mk

    -test:
    - test "$(AS)" = "$(TEST_AS)"
    - test "$(AS_FOR_BUILD)" = "$(TEST_AS_FOR_BUILD)"
    - test "$(CC)" = "$(TEST_CC)"
    - test "$(CC_FOR_BUILD)" = "$(TEST_CC_FOR_BUILD)"
    - test "$(CXX)" = "$(TEST_CXX)"
    - test "$(CXX_FOR_BUILD)" = "$(TEST_CXX_FOR_BUILD)"
    - test "$(OBJC)" = "$(TEST_OBJC)"
    - test "$(OBJC_FOR_BUILD)" = "$(TEST_OBJC_FOR_BUILD)"
    - test "$(OBJCXX)" = "$(TEST_OBJCXX)"
    - test "$(OBJCXX_FOR_BUILD)" = "$(TEST_OBJCXX_FOR_BUILD)"
    - test "$(F77)" = "$(TEST_F77)"
    - test "$(F77_FOR_BUILD)" = "$(TEST_F77_FOR_BUILD)"
    - test "$(FC)" = "$(TEST_FC)"
    - test "$(FC_FOR_BUILD)" = "$(TEST_FC_FOR_BUILD)"
    - test "$(LD)" = "$(TEST_LD)"
    - test "$(LD_FOR_BUILD)" = "$(TEST_LD_FOR_BUILD)"
    - test "$(STRIP)" = "$(TEST_STRIP)"
    - test "$(STRIP_FOR_BUILD)" = "$(TEST_STRIP_FOR_BUILD)"
    - test "$(OBJCOPY)" = "$(TEST_OBJCOPY)"
    - test "$(OBJCOPY_FOR_BUILD)" = "$(TEST_OBJCOPY_FOR_BUILD)"
    - test