aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2016-09-13 14:04:15 +0200
committerLoïc Hoguin <[email protected]>2016-09-13 14:04:15 +0200
commitc313f4dfb03b4105eed289141a0e7feef42f8612 (patch)
tree011e6d9466e0eb8bd4aed554c14829e5f9d489e9
parent7c8215d8750913e3f8b774b560c0d22d56fe802a (diff)
parent6c546accfcb2ad6264c16f62e74d35367dabb72c (diff)
downloaderlang.mk-c313f4dfb03b4105eed289141a0e7feef42f8612.tar.gz
erlang.mk-c313f4dfb03b4105eed289141a0e7feef42f8612.tar.bz2
erlang.mk-c313f4dfb03b4105eed289141a0e7feef42f8612.zip
Merge branch 'fix-dialyzer-ERLC_OPTS-filtering' of https://github.com/rabbitmq/erlang.mk
-rw-r--r--plugins/dialyzer.mk21
-rw-r--r--test/plugin_dialyzer.mk8
2 files changed, 16 insertions, 13 deletions
diff --git a/plugins/dialyzer.mk b/plugins/dialyzer.mk
index 8c2710f..d66bcc0 100644
--- a/plugins/dialyzer.mk
+++ b/plugins/dialyzer.mk
@@ -27,14 +27,17 @@ help::
# Plugin-specific targets.
define filter_opts.erl
- Opts = binary:split(<<"$1">>, <<"-">>, [global]),
- Filtered = lists:reverse(lists:foldl(fun
- (O = <<"pa ", _/bits>>, Acc) -> [O|Acc];
- (O = <<"D ", _/bits>>, Acc) -> [O|Acc];
- (O = <<"I ", _/bits>>, Acc) -> [O|Acc];
- (_, Acc) -> Acc
- end, [], Opts)),
- io:format("~s~n", [[["-", O] || O <- Filtered]]),
+ Opts = init:get_plain_arguments(),
+ {Filtered, _} = lists:foldl(fun
+ (O, {Os, true}) -> {[O|Os], false};
+ (O = "-D", {Os, _}) -> {[O|Os], true};
+ (O = [\\$$-, \\$$D, _ | _], {Os, _}) -> {[O|Os], false};
+ (O = "-I", {Os, _}) -> {[O|Os], true};
+ (O = [\\$$-, \\$$I, _ | _], {Os, _}) -> {[O|Os], false};
+ (O = "-pa", {Os, _}) -> {[O|Os], true};
+ (_, Acc) -> Acc
+ end, {[], false}, Opts),
+ io:format("~s~n", [string:join(lists:reverse(Filtered), " ")]),
halt().
endef
@@ -51,4 +54,4 @@ dialyze:
else
dialyze: $(DIALYZER_PLT)
endif
- $(verbose) dialyzer --no_native `$(call erlang,$(call filter_opts.erl,$(ERLC_OPTS)))` $(DIALYZER_DIRS) $(DIALYZER_OPTS)
+ $(verbose) dialyzer --no_native `$(ERL) -eval "$(subst $(newline),,$(subst ",\",$(call filter_opts.erl)))" -extra $(ERLC_OPTS)` $(DIALYZER_DIRS) $(DIALYZER_OPTS)
diff --git a/test/plugin_dialyzer.mk b/test/plugin_dialyzer.mk
index 399da1d..af7a5f4 100644
--- a/test/plugin_dialyzer.mk
+++ b/test/plugin_dialyzer.mk
@@ -191,18 +191,18 @@ dialyzer-erlc-opts: build clean
$t $(MAKE) -C $(APP) -f erlang.mk bootstrap $v
$i "Create a header file in a non-standard directory"
- $t mkdir $(APP)/exotic/
- $t touch $(APP)/exotic/dialyze.hrl
+ $t mkdir $(APP)/exotic-include-path/
+ $t touch $(APP)/exotic-include-path/dialyze.hrl
$i "Create a module that includes this header"
$t printf "%s\n" \
"-module(no_warn)." \
"-export([doit/0])." \
"-include(\"dialyze.hrl\")." \
- "doit() -> ok." > $(APP)/src/no_warn.erl
+ "doit() -> ?OK." > $(APP)/src/no_warn.erl
$i "Point ERLC_OPTS to the non-standard include directory"
- $t perl -ni.bak -e 'print;if ($$.==1) {print "ERLC_OPTS += -I exotic\n"}' $(APP)/Makefile
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "ERLC_OPTS += -I exotic-include-path -DOK=ok\n"}' $(APP)/Makefile
$i "Run Dialyzer"
$t $(DIALYZER_MUTEX) $(MAKE) -C $(APP) dialyze $v