%% -*- erlang -*-
{require_otp_vsn, ".*"}.

%% Erlang compiler options
{erl_opts, [debug_info]}.

%% This line is useful if you have gpb_eqc.erl symlinked to
%% the symlink in the test/ directory.
{eunit_compile_opts, [{i,"../include"}]}.

{post_hooks,
 [{compile,
   %"sh -exv -c '" %% use this line for debugging
   "sh -e -c '"
   "is_up_to_date () {\n"
   "    target=\"$1\"\n"
   "    shift\n"
   "    test ! -f \"$target\" && return 1\n"
   "    for f in \"$@\"\n"
   "    do\n"
   "        test \"$f\" -nt \"$target\" && return 1\n"
   "    done\n"
   "    return 0\n"
   "}\n"
   "\n"
   "is_up_to_date descr_src/gpb_descriptor.erl \\\n"
   "    descr_src/gpb_descriptor.proto || \\\n"
   "    ( echo \"Compiling gpb_descriptor.proto...\"\n"
   "    erl +B -noinput -pa ebin \\\n"
   "        -I `pwd`/descr_src -o descr_src \\\n"
   "        -s gpb_compile c `pwd`/descr_src/gpb_descriptor.proto ) || exit $?\n"
   "is_up_to_date ebin/gpb_descriptor.beam \\\n"
   "     descr_src/gpb_descriptor.erl || \\\n"
   "  ( echo \"Compiling gpb_descriptor.erl...\"\n"
   "    erlc -Idescr_src -Iinclude -o `pwd`/ebin +debug_info \\\n"
   "         descr_src/gpb_descriptor.erl ) || exit $?\n"
   "is_up_to_date ebin/gpb_compile_descr.beam \\\n"
   "    descr_src/gpb_compile_descr.erl \\\n"
   "    descr_src/gpb_descriptor.hrl || \\\n"
   "  ( echo \"Compiling gpb_compile_descr.erl...\"\n"
   "    erlc -Idescr_src -Iinclude -o `pwd`/ebin +debug_info \\\n"
   "       descr_src/gpb_compile_descr.erl ) || exit $? \\\n"
   "'"
   %% The || exit $? is needed, if sh is a bash, then with some
   %% versions of bash with -e, execution does not terminte if a
   %% subshell exits with non-zero exit code
  }]}.

%% XRef checks to perform
{xref_checks, [undefined_function_calls]}.

%% Clean files
{clean_files, [".eunit", "ebin/*.beam", "include/gpb_version.hrl",
               "descr_src/gpb_descriptor.erl", "descr_src/gpb_descriptor.hrl"]}.
