Build: fix assert_boolean implementation
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Tue, 23 May 2017 14:45:01 +0000 (23:45 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Tue, 23 May 2017 14:57:49 +0000 (23:57 +0900)
The current assert_boolean does not work with variables assigned with
'=' flavor instead of ':='.

For example,

 FOO = $(BAR)
 BAR := 1

Here, $(value FOO) is evaluated to $(BAR), not 1.  This is not what
we expect.  While I am here, I simplified the implementation.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
make_helpers/build_macros.mk

index 36f220e08c965c1e7bce2f32678c4f99ff063581..34d82c9a373c7b06ccd31d66f4ccbba205373642 100644 (file)
@@ -54,7 +54,7 @@ endef
 # Convenience function for verifying option has a boolean value
 # $(eval $(call assert_boolean,FOO)) will assert FOO is 0 or 1
 define assert_boolean
-    $(and $(patsubst 0,,$(value $(1))),$(patsubst 1,,$(value $(1))),$(error $(1) must be boolean))
+    $(if $(filter-out 0 1,$($1)),$(error $1 must be boolean))
 endef
 
 0-9 := 0 1 2 3 4 5 6 7 8 9