summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Make.defaults2
-rw-r--r--Makefile1
-rw-r--r--include/fanalyzer.mk27
3 files changed, 30 insertions, 0 deletions
diff --git a/Make.defaults b/Make.defaults
index 1fa2bd5f..799a549d 100644
--- a/Make.defaults
+++ b/Make.defaults
@@ -91,6 +91,8 @@ endif
CFLAGS = -ggdb $(OPTIMIZATIONS) -fno-stack-protector -fno-strict-aliasing -fpic \
-fshort-wchar -Wall -Wsign-compare -Werror -fno-builtin \
-Werror=sign-compare -ffreestanding -std=gnu89 \
+ $(if $(filter-out undefined,$(FANALYZER)),-fanalyzer,) \
+ $(if $(filter-out undefined,$(COLOR)),-fdiagnostics-color=always,) \
-I$(shell $(CC) $(ARCH_CFLAGS) -print-file-name=include) \
"-DDEFAULT_LOADER=L\"$(DEFAULT_LOADER)\"" \
"-DDEFAULT_LOADER_CHAR=\"$(DEFAULT_LOADER)\"" \
diff --git a/Makefile b/Makefile
index 7609df58..a6807768 100644
--- a/Makefile
+++ b/Makefile
@@ -21,6 +21,7 @@ include $(TOPDIR)/Make.defaults
include $(TOPDIR)/Make.rules
include $(TOPDIR)/include/coverity.mk
include $(TOPDIR)/include/scan-build.mk
+include $(TOPDIR)/include/fanalyzer.mk
TARGETS = $(SHIMNAME)
TARGETS += $(SHIMNAME).debug $(MMNAME).debug $(FBNAME).debug
diff --git a/include/fanalyzer.mk b/include/fanalyzer.mk
new file mode 100644
index 00000000..1018d1da
--- /dev/null
+++ b/include/fanalyzer.mk
@@ -0,0 +1,27 @@
+GCC_BINARY ?= $(shell x=$$(which --skip-alias --skip-functions gcc 2>/dev/null) ; [ -n "$$x" ] && echo "$$x")
+
+fanalyzer-test : ; $(if $(findstring /,$(GCC_BINARY)),,$(error gcc not found))
+
+define prop
+$(if $(filter-out undefined,$(origin $(1))),$(1)=$($1),)
+endef
+
+MAKEARGS := \
+ $(call prop,ARCH) \
+ $(call prop,COLOR) \
+ $(call prop,CROSS_COMPILE)
+
+fanalyzer : | fanalyzer-test
+fanalyzer : clean-shim-objs fanalyzer-build
+
+fanalyzer-build :
+ make CC=gcc $(MAKEARGS) $(DASHJ) Cryptlib/OpenSSL/libopenssl.a Cryptlib/libcryptlib.a
+ make CC=gcc $(MAKEARGS) FANALYZER=true all
+
+fanalyzer-all : | fanalyzer-test
+fanalyzer-all : clean fanalyzer-build-all
+
+fanalyzer-build-all :
+ make CC=gcc $(MAKEARGS) FANALYZER=true all
+
+.PHONY : fanalyzer fanalyzer-build fanalyzer-all fanalyzer-build-all fanalyzer-clean