summaryrefslogtreecommitdiffstats
path: root/scripts/mk/buildflags.mk
blob: 4b8a3d8c4a99fd61d4a0b22c45b4a92c1fe7d90e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# This Makefile fragment (since dpkg 1.16.1) defines the following host
# variables:
#
#   ASFLAGS: flags for the host assembler (since 1.21.0).
#   CFLAGS: flags for the host C compiler.
#   CPPFLAGS: flags for the host C preprocessor.
#   CXXFLAGS: flags for the host C++ compiler.
#   OBJCFLAGS: flags for the host Objective C compiler.
#   OBJCXXFLAGS: flags for the host Objective C++ compiler.
#   DFLAGS: flags for the host D compiler.
#   FFLAGS: flags for the host Fortran 77 compiler.
#   FCFLAGS: flags for the host Fortran 9x compiler.
#   LDFLAGS: flags for the host linker.
#
# And the following variables for the build tools (since dpkg 1.22.1):
#
#   ASFLAGS_FOR_BUILD: flags for the build assembler.
#   CFLAGS_FOR_BUILD: flags for the build C compiler.
#   CPPFLAGS_FOR_BUILD: flags for the build C preprocessor.
#   CXXFLAGS_FOR_BUILD: flags for the build C++ compiler.
#   OBJCFLAGS_FOR_BUILD: flags for the build Objective C compiler.
#   OBJCXXFLAGS_FOR_BUILD: flags for the build Objective C++ compiler.
#   DFLAGS_FOR_BUILD: flags for the build D compiler.
#   FFLAGS_FOR_BUILD: flags for the build Fortran 77 compiler.
#   FCFLAGS_FOR_BUILD: flags for the build Fortran 9x compiler.
#   LDFLAGS_FOR_BUILD: flags for the build linker.
#
# You can also export them in the environment by setting
# DPKG_EXPORT_BUILDFLAGS to a non-empty value.
#
# This list is kept in sync with the default set of flags returned
# by dpkg-buildflags.

dpkg_lazy_eval ?= $$(or $$(value DPKG_CACHE_$(1)),$$(eval DPKG_CACHE_$(1) := $$(shell $(2)))$$(value DPKG_CACHE_$(1)))

DPKG_BUILDFLAGS_LIST = \
  ASFLAGS \
  ASFLAGS_FOR_BUILD \
  CFLAGS \
  CFLAGS_FOR_BUILD \
  CPPFLAGS \
  CPPFLAGS_FOR_BUILD \
  CXXFLAGS \
  CXXFLAGS_FOR_BUILD \
  OBJCFLAGS \
  OBJCFLAGS_FOR_BUILD \
  OBJCXXFLAGS \
  OBJCXXFLAGS_FOR_BUILD \
  DFLAGS \
  DFLAGS_FOR_BUILD \
  FFLAGS \
  FFLAGS_FOR_BUILD \
  FCFLAGS \
  FCFLAGS_FOR_BUILD \
  LDFLAGS \
  LDFLAGS_FOR_BUILD \
  # EOL

define dpkg_buildflags_export_envvar
  ifdef $(1)
    DPKG_BUILDFLAGS_EXPORT_ENVVAR += $(1)="$$(value $(1))"
  endif
endef

$(eval $(call dpkg_buildflags_export_envvar,DEB_BUILD_OPTIONS))
$(eval $(call dpkg_buildflags_export_envvar,DEB_BUILD_MAINT_OPTIONS))
$(eval $(call dpkg_buildflags_export_envvar,DEB_BUILD_PATH))
$(foreach flag,$(DPKG_BUILDFLAGS_LIST),\
  $(foreach operation,SET STRIP APPEND PREPEND,\
    $(eval $(call dpkg_buildflags_export_envvar,DEB_$(flag)_MAINT_$(operation)))))

dpkg_buildflags_setvar = $(1) = $(call dpkg_lazy_eval,$(1),$(DPKG_BUILDFLAGS_EXPORT_ENVVAR) dpkg-buildflags --get $(1))

$(foreach flag,$(DPKG_BUILDFLAGS_LIST),\
  $(eval $(call dpkg_buildflags_setvar,$(flag))))

ifdef DPKG_EXPORT_BUILDFLAGS
  export $(DPKG_BUILDFLAGS_LIST)
endif