diff options
author | alisdair sullivan <alisdair.sullivan@askuity.com> | 2015-09-20 20:34:43 -0500 |
---|---|---|
committer | alisdair sullivan <alisdair.sullivan@askuity.com> | 2015-09-21 11:13:32 -0700 |
commit | 9d82215296205d2d30c152c7d7c6fcb8e4a92443 (patch) | |
tree | 3bf0479316c85e6fa59cef46cc9ca3985b1a9a5f | |
parent | e718af2af4fc4e1a2c85b5ecc84a0dadddb8bbea (diff) |
add an export to allow specifing arbitrary extra erl files to be compiled
to `rebar_erlc_compiler`
-rw-r--r-- | src/rebar_erlc_compiler.erl | 7 | ||||
-rw-r--r-- | test/rebar_compile_SUITE.erl | 33 |
2 files changed, 38 insertions, 2 deletions
diff --git a/src/rebar_erlc_compiler.erl b/src/rebar_erlc_compiler.erl index 54faea4..2976a4f 100644 --- a/src/rebar_erlc_compiler.erl +++ b/src/rebar_erlc_compiler.erl @@ -28,6 +28,7 @@ -export([compile/1, compile/3, + compile/4, clean/1]). -include("rebar.hrl"). @@ -104,6 +105,11 @@ compile(Opts, Dir, OutDir) -> fun compile_mib/3), doterl_compile(Opts, Dir, OutDir). +-spec compile(rebar_dict(), file:filename(), file:filename(), [file:filename()]) -> 'ok'. +compile(Opts, Dir, OutDir, More) -> + ErlOpts = rebar_opts:erl_opts(Opts), + doterl_compile(Opts, Dir, OutDir, More, ErlOpts). + -spec clean(file:filename()) -> 'ok'. clean(AppDir) -> MibFiles = rebar_utils:find_files(filename:join(AppDir, "mibs"), ?RE_PREFIX".*\\.mib\$"), @@ -488,6 +494,7 @@ needs_compile(Source, Target) -> filelib:last_modified(Source) > filelib:last_modified(Target). gather_src([], Srcs) -> + ?DEBUG("src_files ~p", [Srcs]), Srcs; gather_src([Dir|Rest], Srcs) -> gather_src( diff --git a/test/rebar_compile_SUITE.erl b/test/rebar_compile_SUITE.erl index f726943..7750924 100644 --- a/test/rebar_compile_SUITE.erl +++ b/test/rebar_compile_SUITE.erl @@ -25,7 +25,8 @@ only_default_transitive_deps/1, clean_all/1, override_deps/1, - profile_override_deps/1]). + profile_override_deps/1, + build_more_sources/1]). -include_lib("common_test/include/ct.hrl"). -include_lib("eunit/include/eunit.hrl"). @@ -54,7 +55,7 @@ all() -> dont_recompile_yrl_or_xrl, delete_beam_if_source_deleted, deps_in_path, checkout_priority, highest_version_of_pkg_dep, parse_transform_test, erl_first_files_test, mib_test, only_default_transitive_deps, - clean_all, override_deps, profile_override_deps]. + clean_all, override_deps, profile_override_deps, build_more_sources]. build_basic_app(Config) -> AppDir = ?config(apps, Config), @@ -631,3 +632,31 @@ profile_override_deps(Config) -> Config, RebarConfig, ["as", "a", "compile"], {ok, [{dep, "some_dep"},{dep_not_exist, "other_dep"}]} ). + +build_more_sources(Config) -> + AppDir = ?config(apps, Config), + + ASrc = <<"-module(a_src).\n-export([ok/0]).\nok() -> ok.\n">>, + BSrc = <<"-module(b_src).\n-export([ok/0]).\nok() -> ok.\n">>, + CSrc = <<"-module(c_src).\n-export([ok/0]).\nok() -> ok.\n">>, + + ok = filelib:ensure_dir(filename:join([AppDir, "more", "dummy"])), + ok = filelib:ensure_dir(filename:join([AppDir, "ebin", "dummy"])), + ok = file:write_file(filename:join([AppDir, "more", "a_src.erl"]), ASrc), + ok = file:write_file(filename:join([AppDir, "more", "b_src.erl"]), BSrc), + ok = file:write_file(filename:join([AppDir, "more", "c_src.erl"]), CSrc), + + Opts = dict:new(), + + rebar_erlc_compiler:compile(Opts, + filename:join([AppDir, "more"]), + filename:join([AppDir, "ebin"]), + [filename:join([AppDir, "more", "a_src.erl"]), + filename:join([AppDir, "more", "b_src.erl"]), + filename:join([AppDir, "more", "c_src.erl"])]), + + EbinDir = filename:join([AppDir, "ebin"]), + true = filelib:is_file(filename:join([EbinDir, "a_src.beam"])), + true = filelib:is_file(filename:join([EbinDir, "b_src.beam"])), + true = filelib:is_file(filename:join([EbinDir, "c_src.beam"])). + |