summaryrefslogtreecommitdiffstats
path: root/share/mk/configure/build-depends/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'share/mk/configure/build-depends/gcc')
-rw-r--r--share/mk/configure/build-depends/gcc/cc.mk65
1 files changed, 65 insertions, 0 deletions
diff --git a/share/mk/configure/build-depends/gcc/cc.mk b/share/mk/configure/build-depends/gcc/cc.mk
new file mode 100644
index 0000000..9481865
--- /dev/null
+++ b/share/mk/configure/build-depends/gcc/cc.mk
@@ -0,0 +1,65 @@
+# Copyright 2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_CONFIGURE_BUILD_DEPENDS_GCC_CC_INCLUDED
+MAKEFILE_CONFIGURE_BUILD_DEPENDS_GCC_CC_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/configure/build-depends/coreutils/echo.mk
+include $(MAKEFILEDIR)/configure/build-depends/grep/grep.mk
+include $(MAKEFILEDIR)/configure/build-depends/sed/sed.mk
+
+
+CC := gcc
+
+
+CC_VENDOR := \
+ $(shell \
+ $(CC) -v 2>&1 \
+ | $(SED) -n '1p;$$p' \
+ | $(SED) '/gcc version/s/.*/gcc/' \
+ | $(SED) '/clang version/s/.*/clang/' \
+ | $(SED) '/Apple LLVM version/s/.*/clang/' \
+ | $(GREP) -e '^gcc$$' -e '^clang$$' \
+ || $(ECHO) unknown; \
+ )
+
+
+COMMON_CFLAGS := \
+ -O3 \
+ -flto \
+ -Wall \
+ -Wextra \
+ -Werror \
+ -Wstrict-prototypes \
+ -Wdeclaration-after-statement \
+ -Wno-reserved-identifier \
+ -Wno-unused-macros \
+ -Wno-error=unused-parameter \
+ -Wno-error=sign-compare \
+ -Wno-error=format \
+ -Wno-error=uninitialized
+
+
+GCC_CFLAGS := -fanalyzer
+
+
+CLANG_CFLAGS := \
+ -Weverything \
+ -Wno-unsafe-buffer-usage
+
+
+DEFAULT_CFLAGS := $(COMMON_CFLAGS)
+
+ifeq ($(CC_VENDOR),gcc)
+DEFAULT_CFLAGS += $(GCC_CFLAGS)
+else ifeq ($(CC_VENDOR),clang)
+DEFAULT_CFLAGS += $(CLANG_CFLAGS)
+endif
+
+EXTRA_CFLAGS :=
+CFLAGS := $(DEFAULT_CFLAGS) $(EXTRA_CFLAGS)
+
+
+endif # include guard