diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/rebar_port_compiler.erl | 31 | 
1 files changed, 18 insertions, 13 deletions
| diff --git a/src/rebar_port_compiler.erl b/src/rebar_port_compiler.erl index a602f01..46ce954 100644 --- a/src/rebar_port_compiler.erl +++ b/src/rebar_port_compiler.erl @@ -90,7 +90,7 @@ compile(Config, AppFile) ->              {NewBins, ExistingBins} = compile_each(Sources, Config, Env, [], []),              %% Construct the driver name and make sure priv/ exists -            SoName = so_name(AppFile), +            SoName = so_name(Config, AppFile),              ok = filelib:ensure_dir(SoName),              %% Only relink if necessary, given the SoName and list of new binaries @@ -110,7 +110,7 @@ clean(Config, AppFile) ->      rebar_file_utils:delete_each([source_to_bin(S) || S <- Sources]),      %% Delete the .so file -    rebar_file_utils:delete_each([so_name(AppFile)]), +    rebar_file_utils:delete_each([so_name(Config, AppFile)]),      %% Run the cleanup script, if it exists      run_cleanup_hook(Config). @@ -263,16 +263,21 @@ source_to_bin(Source) ->      Ext = filename:extension(Source),      filename:rootname(Source, Ext) ++ ".o". -so_name(AppFile) -> -    %% Get the app name, which we'll use to generate the linked port driver name -    case rebar_app_utils:load_app_file(AppFile) of -        {ok, AppName, _} -> -            ok; -        error -> -            AppName = undefined, -            ?FAIL -    end, +so_name(Config, AppFile) -> +    %% Check config to see if a custom so_name has been specified +    PortName = case rebar_config:get(Config, so_name, undefined) of +                   undefined -> +                       %% Get the app name, which we'll use to +                       %% generate the linked port driver name +                       case rebar_app_utils:load_app_file(AppFile) of +                           {ok, AppName, _} -> +                               AppName; +                           error -> +                               ?FAIL +                       end; +                   Soname -> +                       Soname +               end,      %% Construct the driver name -    ?FMT("priv/~s_drv.so", [AppName]). - +    ?FMT("priv/~s_drv.so", [PortName]). | 
