Add support for first_files to port compiler

This patch adds support for first_files to the port_compiler, via the
new `port_first_files` rebar config element.
This commit is contained in:
Tim Watson 2011-09-17 00:26:24 +01:00 committed by Tuncer Ayaz
parent d228e94137
commit 0e3e94c253

View file

@ -88,18 +88,37 @@
%% %%
compile(Config, AppFile) -> compile(Config, AppFile) ->
%% Allow the user to specify that dependent files get built first
FirstFiles = expand_sources(rebar_config:get(Config,
port_first_files, []), []),
%% Compose list of sources from config file -- defaults to c_src/*.c %% Compose list of sources from config file -- defaults to c_src/*.c
Sources = expand_sources(rebar_config:get_list(Config, port_sources, Sources = expand_sources(rebar_config:get_list(Config, port_sources,
["c_src/*.c"]), []), ["c_src/*.c"]), []),
Env = setup_env(Config),
{FirstNewBins, FirstExistingBins} = case FirstFiles of
[] ->
{[], []};
_ ->
compile_each(FirstFiles, Config,
Env, [], [])
end,
case Sources of case Sources of
[] -> [] ->
ok; ok;
_ -> _ ->
Env = setup_env(Config),
%% Remove first files from found files
RestFiles = [Source || Source <- Sources,
not lists:member(Source, FirstFiles)],
%% Compile each of the sources %% Compile each of the sources
{NewBins, ExistingBins} = compile_each(Sources, Config, Env, {NewBins, ExistingBins} = compile_each(RestFiles, Config, Env,
[], []), [], []),
NewBins = FirstNewBins ++ NewBins,
ExistingBins = FirstExistingBins ++ ExistingBins,
%% Construct the driver name and make sure priv/ exists %% Construct the driver name and make sure priv/ exists
SoSpecs = so_specs(Config, AppFile, NewBins ++ ExistingBins), SoSpecs = so_specs(Config, AppFile, NewBins ++ ExistingBins),