Packages
gpb
5.0.0
5.0.0
4.21.7
4.21.6
4.21.5
4.21.4
4.21.3
4.21.2
4.21.1
4.21.0
4.20.0
4.19.9
4.19.8
4.19.7
4.19.6
4.19.5
4.19.4
4.19.3
4.19.2
4.19.1
4.19.0
4.18.0
4.17.7
4.17.6
4.17.5
4.17.3
4.17.2
4.17.1
4.17.0
4.16.2
4.16.1
4.16.0
4.15.2
4.15.1
4.14.2
4.14.1
4.14.0
4.13.0
4.12.0
4.11.2
4.11.1
4.11.0
4.10.6
4.10.5
4.10.4
4.10.3
4.10.2
4.10.1
4.10.0
4.9.3
4.9.2
4.9.1
4.9.0
4.8.0
4.7.3
4.7.2
4.7.1
4.7.0
4.6.0
4.5.1
4.5.0
4.4.1
4.4.0
4.3.3
4.3.2
4.3.1
4.3.0
4.2.3
4.2.2
4.2.1
4.2.0
4.1.9
4.1.8
4.1.7
4.1.6
4.1.5
4.1.4
4.1.3
4.1.2
4.1.1
4.1.0
4.0.2
4.0.1
4.0.0
3.28.1
3.28.0
3.27.7
3.27.6
3.27.5
3.27.4
3.27.3
3.27.2
3.27.1
3.27.0
3.26.8
3.26.7
3.26.6
3.26.5
3.26.4
3.26.3
3.26.2
3.26.1
3.26.0
3.25.2
3.25.1
3.25.0
3.24.4
3.24.3
3.24.2
3.24.1
3.24.0
3.23.2
3.23.1
3.23.0
3.22.5
3.22.4
3.22.3
3.22.2
3.22.1
3.22.0
3.21.3
3.21.2
3.21.1
3.21.0
3.20.3
3.20.2
3.20.0
3.19.0
3.18.10
3.18.9
3.18.8
3.18.7
3.18.6
3.18.5
3.18.4
3.18.3
3.18.2
3.18.1
3.18.0
3.17.13
3.17.12
3.17.11
3.17.10
3.17.9
3.17.8
3.17.5
3.17.4
3.17.3
3.17.2
3.17.1
3.17.0
3.16.0
3.15.0
3.14.0
3.13.0
3.12.2
3.12.1
3.12.0
3.11.0
A compiler for Google protocol buffer definitions files for Erlang.
Current section
Files
Jump to
Current section
Files
rebar.config.script
%% -*- erlang -*-
%% In Erlang 27, the expression +0.0 =:= -0.0 will evaluate to false
%% whereas in Erlang 26 and earlier, it evaluates to true.
%% In Erlang 26.1, as a prep for Erlang 27, using 0.0 in match expreessions or
%% in comparisons with =:= or =/= will result in a warning that hints about
%% rewriting the value to either +0.0 or -0.0.
%% This preprocessor definition is for we want to run something, eg a unit
%% test, in Erlang versions that can tell +0.0 and -0.0 apart.
NoHavePlusMinusZeroFloat =
case +0.0 =:= -0.0 of
true -> [{d,'NO_HAVE_PLUS_MINUS_ZERO_FLOAT'}];
false -> []
end.
%% maps:merge_with/3 appeared in Erlang 24.0
NoHaveMapsMergeWith3 =
try maps:merge_with(fun(K, V1, V2) -> V1 + V2 end,
#{a => 1}, #{a => 2}) of
#{a := 3} -> []
catch error:undef -> [{d,'NO_HAVE_MAPS_MERGE_WITH_3'}]
end.
%% The json module appeared in Erlang 27.0
NoHaveJsonModule =
try json:encode(true) of
<<"true">> -> []
catch error:undef -> [{d,'NO_HAVE_JSON_MODULE'}]
end.
%% Native records appeared in Erlang 29.0
NoHaveNativeRecords =
begin
{ok, Ts, _} = erl_scan:string("#a:b{f=1}.", 1),
case erl_parse:parse_exprs(Ts) of
{ok,_} -> [];
{error,_} -> [{d,'NO_HAVE_NATIVE_RECORDS'}]
end
end.
%% Run property-based tests if available.
PropertyTesterOpts =
case [M || M <- [proper],
code:ensure_loaded(M) =:= {module, M}] of
[] ->
[{d, 'NO_HAVE_PROPERTY_TESTER'}];
Ms ->
[{d, string:uppercase(atom_to_list(M))} || M <- Ms]
end.
ConfigOpts = NoHavePlusMinusZeroFloat ++ NoHaveJsonModule ++
NoHaveNativeRecords ++ PropertyTesterOpts.
[{require_otp_vsn, ".*"},
{pre_hooks,
[{compile,
"escript build/mk_version_hrl include/gpb_version.hrl.in"
" include/gpb_version.hrl"}
]},
%% Erlang compiler options
{erl_opts, [debug_info] ++ ConfigOpts},
{erl_first_files, ["src/gpb_codegen.erl"]},
%% This line is useful if you have gpb_eqc.erl symlinked to
%% the symlink in the test/ directory.
{eunit_compile_opts, [{i,"../include"}]},
{edoc_opts, [{preprocess,true}, {pretty_printer,erl_pp}]},
{hex, [{doc, edoc}]},
{post_hooks,
[{compile,
"escript build/compile_descriptor"}
]},
%% 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"]}
].