From 30610b6e7c14c06c16acf2e86f362a9b5394940d Mon Sep 17 00:00:00 2001 From: Andre Maroneze <andre.maroneze@cea.fr> Date: Wed, 16 Jun 2021 23:01:25 +0200 Subject: [PATCH] [analysis-scripts] add .wp target and rules to analysis makefile --- share/analysis-scripts/analysis.mk | 34 ++++++++++++++++++++++++++++-- share/analysis-scripts/template.mk | 3 +++ tests/fc_script/oracle/GNUmakefile | 3 +++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/share/analysis-scripts/analysis.mk b/share/analysis-scripts/analysis.mk index 3483b89d6d4..a55aa48895f 100644 --- a/share/analysis-scripts/analysis.mk +++ b/share/analysis-scripts/analysis.mk @@ -35,6 +35,7 @@ # EVAFLAGS flags to use with the Eva plugin # EVABUILTINS Eva builtins to be set (via -eva-builtin) # EVAUSESPECS Eva functions to be overridden by specs (-eva-use-spec) +# WPFLAGS flags to use with the WP plugin # # FLAMEGRAPH If set (to any value), running an analysis will produce an # SVG + HTML flamegraph at the end. @@ -127,6 +128,7 @@ EVAFLAGS ?= \ -calldeps -from-verbose 0 \ $(if $(EVABUILTINS), -eva-builtin=$(call fc_list,$(EVABUILTINS)),) \ $(if $(EVAUSESPECS), -eva-use-spec $(call fc_list,$(EVAUSESPECS)),) +WPFLAGS ?= FCFLAGS ?= FCGUIFLAGS ?= @@ -157,7 +159,7 @@ SHELL := $(shell which bash) .FORCE: .SUFFIXES: # Disable make builtins -%.parse/command %.eva/command: +%.parse/command %.eva/command %.wp/command: @# %.parse: SOURCES = $(filter-out %/command,$^) @@ -184,7 +186,7 @@ SHELL := $(shell which bash) printf 'cmd_args=%q\n' "$(subst ",\",$(wordlist 2,999,$(PARSE)))" } >> $@/stats.txt mv $@/{running,command} - touch $@ # Update timestamp and prevents remake if nothing changes + touch $@ # Update timestamp and prevent remake if nothing changes %.eva: EVA = $(FRAMAC) $(FCFLAGS) -eva $(EVAFLAGS) %.eva: PARSE_RESULT = $(word 1,$(subst ., ,$*)).parse @@ -226,6 +228,34 @@ SHELL := $(shell which bash) mv $@/{running,command} touch $@ # Update timestamp and prevents remake if nothing changes +%.wp: WP = $(FRAMAC) $(FCFLAGS) -wp $(WPFLAGS) +%.wp: PARSE_RESULT = $(word 1,$(subst ., ,$*)).parse +%.wp: $$(PARSE_RESULT) $$(shell $(DIR)cmd-dep.sh $$@/command $$(WP)) $(if $(BENCHMARK),.FORCE,) + @$(call display_command,$(WP)) + mkdir -p $@ + mv -f $@/{command,running} + { + $(call time_with_output,$@/stats.txt) \ + $(WP) \ + -load $(PARSE_RESULT)/framac.sav -save $@/framac.sav \ + -kernel-log w:$@/warnings.log \ + -wp-log w:$@/warnings.log \ + -then \ + -report-csv $@/alarms.csv -report-no-proven \ + -report-log w:$@/warnings.log \ + || ($(RM) $@/stats.txt && false) # Prevents having error code reporting in stats.txt + } 2>&1 | + tee $@/wp.log + { + printf 'timestamp=%q\n' "$(HR_TIMESTAMP)"; + printf 'warnings=%s\n' "`cat $@/warnings.log | grep ':\[\(wp\|kernel\)\]' | wc -l`"; + printf 'alarms=%s\n' "`expr $$(cat $@/alarms.csv | wc -l) - 1`"; + printf 'cmd_args=%q\n' "$(subst ",\",$(wordlist 2,999,$(WP)))"; + printf 'benchmark_tag=%s' "$(BENCHMARK)" + } >> $@/stats.txt + mv $@/{running,command} + touch $@ # Update timestamp and prevent remake if nothing changes + %.gui: % $(FRAMAC_GUI) $(FCGUIFLAGS) -load $^/framac.sav & diff --git a/share/analysis-scripts/template.mk b/share/analysis-scripts/template.mk index d054288c0ac..c11e644b851 100644 --- a/share/analysis-scripts/template.mk +++ b/share/analysis-scripts/template.mk @@ -27,6 +27,9 @@ FCFLAGS += \ EVAFLAGS += \ -eva-warn-key builtins:missing-spec=abort \ +## WP-specific flags +WPFLAGS += \ + ## GUI-only flags FCGUIFLAGS += \ diff --git a/tests/fc_script/oracle/GNUmakefile b/tests/fc_script/oracle/GNUmakefile index 56b2b677e28..b008f5ad7e5 100644 --- a/tests/fc_script/oracle/GNUmakefile +++ b/tests/fc_script/oracle/GNUmakefile @@ -29,6 +29,9 @@ FCFLAGS += \ EVAFLAGS += \ -eva-warn-key builtins:missing-spec=abort \ +## WP-specific flags +WPFLAGS += \ + ## GUI-only flags FCGUIFLAGS += \ -- GitLab