summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
authorJerome Forissier <jerome@forissier.org>2020-05-28 11:34:00 +0200
committerJérôme Forissier <jerome@forissier.org>2020-06-08 19:19:34 +0200
commit32f2546819a079c5a349638295c8ed1b6388c3ef (patch)
tree411bf33022284363443e5a2a5e0af0ec20810d2b /mk
parent65401337ca064f6c2866b6881e3d93edbf7f2921 (diff)
build: introduce ld-option macro
Adds a makefile macro to test if the linker supports a given option. Signed-off-by: Jerome Forissier <jerome@forissier.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
Diffstat (limited to 'mk')
-rw-r--r--mk/cc-option.mk8
1 files changed, 8 insertions, 0 deletions
diff --git a/mk/cc-option.mk b/mk/cc-option.mk
index 4699fbcc..4e77786a 100644
--- a/mk/cc-option.mk
+++ b/mk/cc-option.mk
@@ -7,3 +7,11 @@ $(if $($(_var_name)),$(1),$(2))
endef
cc-option = $(strip $(call _cc-option,$(1),$(2)))
+_ld-option-supported = $(if $(shell $(LD$(sm)) -v $(1) 2>/dev/null >/dev/null || echo "Not supported"),,1)
+_ld-opt-cached-var-name = $(subst =,~,$(subst $(empty) $(empty),,$(strip cached-ld-option-$(1)-$(LD$(sm)))))
+define _ld-option
+$(eval _var_name := $(call _ld-opt-cached-var-name,$(1)))
+$(eval $(_var_name) := $(if $(filter $(origin $(_var_name)),undefined),$(call _ld-option-supported,$(1)),$($(_var_name))))
+$(if $($(_var_name)),$(1),$(2))
+endef
+ld-option = $(strip $(call _ld-option,$(1),$(2)))