diff options
-rw-r--r-- | src/rebar_port_compiler.erl | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/src/rebar_port_compiler.erl b/src/rebar_port_compiler.erl index 404e23a..6960a5f 100644 --- a/src/rebar_port_compiler.erl +++ b/src/rebar_port_compiler.erl @@ -344,18 +344,27 @@ source_to_bin(Source) -> filename:rootname(Source, Ext) ++ ".o". so_specs(Config, AppFile, Bins) -> - %% Check config to see if a custom so_name has been specified - ?INFO("config ~p\n", [Config]), case rebar_config:get(Config, so_specs, 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, _} -> - SoName = ?FMT("priv/~s", [lists:concat([AppName, "_drv.so"])]), - [{SoName, Bins}]; - error -> - ?FAIL - end; - SoSpecs -> SoSpecs - end. + undefined -> + %% New form of so_specs is not provided. See if the old form of {so_name} is available + %% instead + SoName = case rebar_config:get(Config, so_name, undefined) of + undefined -> + %% Ok, neither old nor new form is available. Use the app name and + %% generate a sensible default. + case rebar_app_utils:load_app_file(AppFile) of + {ok, AppName, _} -> + ?FMT("priv/~s", [lists:concat([AppName, "_drv.so"])]); + error -> + ?FAIL + end; + + AName -> + %% Old form is available -- use it + ?FMT("priv/~s", [AName]) + end, + [{SoName, Bins}]; + + SoSpecs -> + SoSpecs + end. |