aboutsummaryrefslogtreecommitdiffstats
path: root/builddefs
diff options
context:
space:
mode:
Diffstat (limited to 'builddefs')
-rw-r--r--builddefs/build_keyboard.mk1
-rw-r--r--builddefs/build_test.mk1
-rw-r--r--builddefs/support.mk11
3 files changed, 13 insertions, 0 deletions
diff --git a/builddefs/build_keyboard.mk b/builddefs/build_keyboard.mk
index c2c47c00fb..640dedc31e 100644
--- a/builddefs/build_keyboard.mk
+++ b/builddefs/build_keyboard.mk
@@ -11,6 +11,7 @@ endif
.DEFAULT_GOAL := all
include paths.mk
+include $(BUILDDEFS_PATH)/support.mk
include $(BUILDDEFS_PATH)/message.mk
# Helper to add defines with a 'QMK_' prefix
diff --git a/builddefs/build_test.mk b/builddefs/build_test.mk
index d0de63c6f5..0c5c98e2a3 100644
--- a/builddefs/build_test.mk
+++ b/builddefs/build_test.mk
@@ -7,6 +7,7 @@ endif
OPT = g
include paths.mk
+include $(BUILDDEFS_PATH)/support.mk
include $(BUILDDEFS_PATH)/message.mk
TARGET=test/$(TEST_OUTPUT)
diff --git a/builddefs/support.mk b/builddefs/support.mk
new file mode 100644
index 0000000000..7ef7b9b041
--- /dev/null
+++ b/builddefs/support.mk
@@ -0,0 +1,11 @@
+# Helper to determine if a compiler option is supported
+# Args:
+# $(1) = option to test, if successful will be output
+# $(2) = option to use if $(1) is not supported
+# $(3) = additional arguments to pass to the compiler during the test, but aren't contained in the output
+cc-option = $(shell \
+ if { echo 'int main(){return 0;}' | $(CC) $(1) $(3) -o /dev/null -x c /dev/null >/dev/null 2>&1; }; \
+ then echo "$(1)"; else echo "$(2)"; fi)
+
+# Helper to pass comma character to make functions (use with `$(,)` to pass in `$(call ...)` arguments)
+, := ,