dpkg (1.18.25) stretch; urgency=medium
[dpkg] / scripts / mk / buildflags.mk
CommitLineData
1479465f
GJ
1# This Makefile snippet defines the following variables:
2#
3# CFLAGS: flags for the C compiler
4# CPPFLAGS: flags for the C preprocessor
5# CXXFLAGS: flags for the C++ compiler
6# OBJCFLAGS: flags for the Objective C compiler
7# OBJCXXFLAGS: flags for the Objective C++ compiler
8# GCJFLAGS: flags for the GNU Java compiler
9# FFLAGS: flags for the Fortran 77 compiler
10# FCFLAGS: flags for the Fortran 9x compiler
11# LDFLAGS: flags for the linker
12#
13# You can also export them in the environment by setting
14# DPKG_EXPORT_BUILDFLAGS to a non-empty value.
15#
16# This list is kept in sync with the default set of flags returned
17# by dpkg-buildflags.
18
19dpkg_lazy_eval ?= $$(or $$(value DPKG_CACHE_$(1)),$$(eval DPKG_CACHE_$(1) := $$(shell $(2)))$$(value DPKG_CACHE_$(1)))
20
21DPKG_BUILDFLAGS_LIST = CFLAGS CPPFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS \
22 GCJFLAGS FFLAGS FCFLAGS LDFLAGS
23
24define dpkg_buildflags_export_envvar
25ifdef $(1)
26DPKG_BUILDFLAGS_EXPORT_ENVVAR += $(1)="$$(value $(1))"
27endif
28endef
29
30$(eval $(call dpkg_buildflags_export_envvar,DEB_BUILD_OPTIONS))
31$(eval $(call dpkg_buildflags_export_envvar,DEB_BUILD_MAINT_OPTIONS))
32$(foreach flag,$(DPKG_BUILDFLAGS_LIST),\
33 $(foreach operation,SET STRIP APPEND PREPEND,\
34 $(eval $(call dpkg_buildflags_export_envvar,DEB_$(flag)_MAINT_$(operation)))))
35
36dpkg_buildflags_setvar = $(1) = $(call dpkg_lazy_eval,$(1),$(DPKG_BUILDFLAGS_EXPORT_ENVVAR) dpkg-buildflags --get $(1))
37
38$(foreach flag,$(DPKG_BUILDFLAGS_LIST),\
39 $(eval $(call dpkg_buildflags_setvar,$(flag))))
40
41ifdef DPKG_EXPORT_BUILDFLAGS
42 export $(DPKG_BUILDFLAGS_LIST)
43endif