%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- %% ex: ts=4 sw=4 ft=erlang et %% This is a sample rebar.conf file that shows examples of some of rebar's %% options. %% == Core == %% Extend list of always recursive commands {recursive_cmds, []}. %% Check required ERTS or OTP release version {require_erts_vsn, ".*"}. {require_otp_vsn, ".*"}. {require_min_otp_vsn, ".*"}. %% Additional library directories to add to the code path {lib_dirs, []}. %% == Erlang Compiler == %% Erlang files to compile before the rest. Rebar automatically compiles %% parse_transforms and custom behaviours before anything other than the files %% in this list. {erl_first_files, ["src/mymib1.erl", "src/mymib2.erl"]}. %% Erlang compiler options {erl_opts, [no_debug_info, {i, "myinclude"}, {src_dirs, ["src", "src2", "src3"]}, {platform_define, "(linux|solaris|freebsd|darwin)", 'HAVE_SENDFILE'}, {platform_define, "(linux|freebsd)", 'BACKLOG', 128}, {platform_define, "R13", 'old_inets'}]}. %% MIB Options? {mib_opts, []}. %% SNMP mibs to compile first? {mib_first_files, []}. %% leex options {xrl_opts, []}. %% leex files to compile first {xrl_first_files, []}. %% yecc options {yrl_opts, []}. %% yecc files to compile first {yrl_first_files, []}. %% == EDoc == %% EDoc options {edoc_opts, []}. %% == Port Compiler == %% Port compilation environment variables. See rebar_port_compiler.erl for %% more info. Default is `[]' {port_env, [{"CFLAGS", "$CFLAGS -Ifoo"}, {"freebsd", "LDFLAGS", "$LDFLAGS -lfoo"}]}. %% port_specs %% List of filenames or wildcards to be compiled. May also contain a tuple %% consisting of a regular expression to be applied against the system %% architecture as a filter. {port_specs, [{"priv/so_name.so", ["c_src/*.c"]}, {"linux", "priv/hello_linux", ["c_src/hello_linux.c"]}, {"linux", "priv/hello_linux", ["c_src/*.c"], [{env, []}]}]}. %% == escriptize == {escript_name, "application"}. {escript_incl_apps, []}. {escript_shebang, "#!/usr/bin/env escript\n"}. {escript_comment, "%%\n"}. {escript_emu_args, "%%! -pa application/application/ebin\n"}. %% == LFE Compiler == %% LFE files to compile before the rest {lfe_first_files, []}. %% Options for the LFE compiler: reuse {erl_opts, []} %% == ErlyDTL Compiler == %% Options for the ErlyDTL compiler {erlydtl_opts, []}. %% == Proto compiler == {proto_opts, [ {compiler, protobuffs}, {src_dirs, ["src"]} ]}. %% Available compilers for protocol buffer files (*.proto): %% protobuffs (default) %% gpb %% Optional src_dirs which is a list of directories where %% to look for .proto files, default is src %% Options for the gpb protocol buffer compiler, %% if selected by the proto_compiler option {gpb_opts, []}. %% == EUnit == %% Options for eunit:test() {eunit_opts, []}. %% Additional compile options for eunit. erl_opts is also used {eunit_compile_opts, []}. %% Same as erl_first_files, but used only when running 'eunit' {eunit_first_files, []}. %% == Cover == %% Whether to enable coverage reporting. Default is `false' {cover_enabled, false}. %% Whether to print coverage report to console. Default is `false' {cover_print_enabled, false}. %% Whether to export coverage report to file. Default is `false' {cover_export_enabled, false}. %% == Common Test == %% Override the default "test" directory in which SUITEs are located {ct_dir, "itest"}. %% Override the default "logs" directory in which SUITEs are logged {ct_log_dir, "test/logs"}. %% Option to pass extra parameters when launching Common Test {ct_extra_params, "-boot start_sasl -s myapp"}. %% Option to use short names (i.e., -sname test) when starting ct {ct_use_short_names, true}. %% == QuickCheck == %% If qc_mod is unspecified, rebar tries to detect Triq or EQC {qc_opts, [{qc_mod, module()}, Options]}. %% Additional compile options for qc. erl_opts is also used {qc_compile_opts, []}. %% Same as erl_first_files, but used only when running 'qc' {qc_first_files, []}. %% == Cleanup == %% Which files to cleanup {clean_files, ["file", "file2"]}. %% == OTP Applications == %% Enable validation of the OTP app module list. Default is 'true' {validate_app_modules, true}. %% == Dependencies == %% Where to put any downloaded dependencies. Default is "deps" {deps_dir, "deps"}. %% What dependencies we have, dependencies can be of 3 forms, an application %% name as an atom, eg. mochiweb, a name and a version (from the .app file), or %% an application name, a version and the SCM details on how to fetch it (SCM %% type, location and revision). %% Rebar currently supports git, hg, bzr, svn, rsync, fossil, and p4. {deps, [app_name, {rebar, "1.0.*"}, {rebar, ".*", {git, "git://github.com/rebar/rebar.git"}}, {rebar, ".*", {git, "git://github.com/rebar/rebar.git", "Rev"}}, {rebar, "1.0.*", {git, "git://github.com/rebar/rebar.git", {branch, "master"}}}, {rebar, "1.0.0", {git, "git://github.com/rebar/rebar.git", {tag, "1.0.0"}}}, %% Dependencies can be marked as 'raw'. Rebar does not require %% such dependencies to have a standard Erlang/OTP layout %% which assumes the presence of either %% "src/dependency_name.app.src" or "ebin/dependency_name.app" %% files. %% %% 'raw' dependencies can still contain 'rebar.config' and %% even can have the proper OTP directory layout, but they %% won't be compiled. %% %% Only a subset of rebar commands will be executed on the %% 'raw' subdirectories: get-deps, update-deps, check-deps, %% list-deps and delete-deps. {rebar, "", {git, "git://github.com/rebar/rebar.git", {branch, "master"}}, [raw]}, {app_name, ".*", {hg, "https://www.example.org/url"}}, {app_name, ".*", {rsync, "Url"}}, {app_name, ".*", {svn, "https://www.example.org/url"}}, {app_name, ".*", {svn, "svn://svn.example.org/url"}}, {app_name, ".*", {bzr, "https://www.example.org/url", "Rev"}}, {app_name, ".*", {fossil, "https://www.example.org/url"}}, {app_name, ".*", {fossil, "https://www.example.org/url", "Vsn"}}, {app_name, ".*", {p4, "//depot/subdir/app_dir"}}]}. %% == Subdirectories == %% Subdirectories? {sub_dirs, ["dir1", "dir2"]}. %% == Plugins == %% Plugins you wish to include. %% These can include any module on the code path, including deps. %% Alternatively, plugins can be placed as source files in the plugin_dir, in %% which case they will be compiled and loaded dynamically at runtime. {plugins, [plugin1, plugin2]}. %% Override the directory in which plugin sources can be found. %% Defaults to ./plugins {plugin_dir, "some_other_directory"}. %% == Pre/Post Command Hooks == {pre_hooks, [{clean, "./prepare_package_files.sh"}, {"linux", compile, "c_src/build_linux.sh"}, {compile, "escript generate_headers"}, {compile, "escript check_headers"}]}. {post_hooks, [{clean, "touch file1.out"}, {"freebsd", compile, "c_src/freebsd_tweaks.sh"}, {eunit, "touch file2.out"}, {compile, "touch postcompile.out"}]}. %% == xref == {xref_warnings, false}. %% optional extra paths to include in xref:set_library_path/2. %% specified relative location of rebar.config. %% e.g. {xref_extra_paths,["../gtknode/src"]} {xref_extra_paths,[]}. %% xref checks to run {xref_checks, [undefined_function_calls, undefined_functions, locals_not_used, exports_not_used, deprecated_function_calls, deprecated_functions]}. %% Optional custom xref queries (xref manual has details) specified as %% {xref_queries, [{query_string(), expected_query_result()},...]} %% The following for example removes all references to mod:*foo/4 %% functions from undefined external function calls as those are in a %% generated module {xref_queries, [{"(XC - UC) || (XU - X - B" " - (\"mod\":\".*foo\"/\"4\"))",[]}]}.