%% -*- 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 ==

%% 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, ["mymib1", "mymib2"]}.

%% 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, []}.

%% == 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, and rsync.
{deps, [application_name,
        {application_name, "1.0.*"},
        {application_name, "1.0.*",
         {git, "git://github.com/rebar/rebar.git", {branch, "master"}}},
        %% 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.
        {application_name, "",
         {git, "git://github.com/rebar/rebar.git", {branch, "master"}},
         [raw]}]}.

%% == 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}.

%% 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\"))",[]}]}.
