Packages

MLX machine learning framework bindings for Erlang

Current section

Files

Jump to
mlx rebar.config
Raw

rebar.config

%% MLX Erlang - Enhanced Project Configuration
{erl_opts, [
debug_info,
warn_export_vars,
warn_shadow_vars,
warn_obsolete_guard,
warn_unused_import,
{parse_transform, lager_transform}
]}.
%% Dependencies
{deps, [
{jsx, "3.1.0"}, % JSON encoding/decoding
{lager, "3.9.2"} % Logging framework
]}.
%% Plugins
{plugins, [
{pc, "1.14.0"}, % Port compiler for NIFs
rebar3_format, % Code formatting
rebar3_lint, % Linting
rebar3_hex, % Hex.pm publishing
rebar3_edoc % Documentation generation
]}.
%% Project plugins for documentation
{project_plugins, [rebar3_ex_doc]}.
%% Hex configuration with documentation provider
{hex, [{doc, ex_doc}]}.
%% Ex_doc configuration
{ex_doc, [
{source_url, <<"https://github.com/arthurcolle/mlx.erl">>},
{extras, [<<"README.md">>]},
{main, <<"readme">>}
]}.
%% Provider hooks for NIF compilation
{provider_hooks, [
{pre, [
{compile, {pc, compile}},
{clean, {pc, clean}}
]}
]}.
%% Port compiler configuration
{port_specs, [
{"priv/mlx_nif.so", [
"c_src/mlx_nif.cpp"
]},
{"priv/mlx_random_nif.so", [
"c_src/mlx_random_nif.cpp"
]},
{"priv/mlx_fft_nif.so", [
"c_src/mlx_fft_nif.cpp"
]},
{"priv/mlx_linalg_nif.so", [
"c_src/mlx_linalg_nif.cpp"
]}
% Temporarily disabled - needs API fixes
% {"priv/mlx_advanced_nif.so", [
% "c_src/mlx_advanced_nif.cpp"
% ]},
% Temporarily disabled - needs API fixes
% {"priv/mlx_io_nif.so", [
% "c_src/mlx_io_nif.cpp"
% ]},
% Temporarily disabled - needs API fixes (no mlx/nn.h)
% {"priv/mlx_nn_nif.so", [
% "c_src/mlx_nn_nif.cpp"
% ]},
% Temporarily disabled - needs API fixes (no mlx/optimizers.h)
% {"priv/mlx_optimizers_nif.so", [
% "c_src/mlx_optimizers_nif.cpp"
% ]},
% Temporarily disabled - needs API fixes
% {"priv/mlx_streaming_nif.so", [
% "c_src/mlx_streaming_nif.cpp"
% ]},
% Temporarily disabled - needs API fixes
% {"priv/mlx_transforms_nif.so", [
% "c_src/mlx_transforms_nif.cpp"
% ]}
% Note: Currently only compiling core NIFs that work with this MLX version
]}.
{port_env, [
%% Compiler flags
{"CXXFLAGS", "$CXXFLAGS -std=c++17 -O3 -Wall -Wextra"},
%% Include paths
{"darwin", "CXXFLAGS", "$CXXFLAGS -I/opt/homebrew/include"},
{"linux", "CXXFLAGS", "$CXXFLAGS -I/usr/local/include"},
%% Library paths and linking
{"darwin", "LDFLAGS", "$LDFLAGS -L/opt/homebrew/lib -lmlx -framework Accelerate -framework Metal -framework MetalKit -framework MetalPerformanceShaders -framework Foundation -undefined dynamic_lookup"},
{"linux", "LDFLAGS", "$LDFLAGS -L/usr/local/lib -lmlx"}
]}.
%% EUnit configuration
{eunit_opts, [
verbose,
{report, {eunit_surefire, [{dir, "_build/test/logs"}]}}
]}.
%% Common Test configuration
{ct_opts, [
{sys_config, "config/test.config"},
{logdir, "_build/test/logs"},
{suites, test, all}
]}.
%% Code coverage
{cover_enabled, true}.
{cover_opts, [verbose]}.
%% Dialyzer configuration
{dialyzer, [
{warnings, [
unknown,
no_return,
error_handling,
race_conditions,
behaviours
]},
{plt_apps, top_level_deps},
{plt_extra_apps, [jsx, lager]},
{plt_location, local},
{base_plt_apps, [erts, kernel, stdlib]},
{base_plt_location, global}
]}.
%% Profiles
{profiles, [
{test, [
{erl_opts, [debug_info, export_all]},
{deps, [
{proper, "1.4.0"},
{meck, "0.9.2"}
]}
]},
{prod, [
{erl_opts, [debug_info, no_debug_info, warnings_as_errors]},
{relx, [{dev_mode, false}, {include_erts, true}]}
]}
]}.
%% Release configuration
{relx, [
{release, {mlx, "1.0.0"}, [mlx, sasl]},
{dev_mode, true},
{include_erts, false},
{extended_start_script, true}
]}.
%% Shell configuration
{shell, [
{apps, [mlx]},
{config, "config/sys.config"}
]}.