summaryrefslogtreecommitdiff
path: root/src/rebar_port_compiler.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rebar_port_compiler.erl')
-rw-r--r--src/rebar_port_compiler.erl14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/rebar_port_compiler.erl b/src/rebar_port_compiler.erl
index 3bcbb26..e684042 100644
--- a/src/rebar_port_compiler.erl
+++ b/src/rebar_port_compiler.erl
@@ -37,7 +37,11 @@
%% Supported configuration variables:
%%
-%% * port_sources - Erlang list of files and/or wildcard strings to be compiled
+%% * port_sources - Erlang list of files and/or wildcard strings to be
+%% compiled. Platform specific sources can be specified
+%% by enclosing a string in a tuple of the form
+%% {Regex, String} wherein Regex is a regular expression
+%% that is checked against the system architecture.
%%
%% * so_specs - Erlang list of tuples of the form {"priv/so_name.so", ["c_src/object_file_name.o"]} useful for
%% building multiple *.so files.
@@ -136,6 +140,14 @@ clean(Config, AppFile) ->
expand_sources([], Acc) ->
Acc;
+expand_sources([{ArchRegex, Spec} | Rest], Acc) ->
+ case rebar_utils:is_arch(ArchRegex) of
+ true ->
+ Acc2 = filelib:wildcard(Spec) ++ Acc,
+ expand_sources(Rest, Acc2);
+ false ->
+ expand_sources(Rest, Acc)
+ end;
expand_sources([Spec | Rest], Acc) ->
Acc2 = filelib:wildcard(Spec) ++ Acc,
expand_sources(Rest, Acc2).