anchor.diff:  %% == port_specs ==
   %%
   
  -get_specs(Config) ->
  -    PortSpecs = rebar_config:get_local(Config, port_specs, []),
  -    Filtered = filter_port_specs(PortSpecs),
  -    OsType = os:type(),
  -    [get_port_spec(Config, OsType, Spec) || Spec <- Filtered].
  +get_specs(Config, AppFile) ->
  +    case rebar_config:get_local(Config, port_specs, []) of
  +        [] ->
  +            %% No spec provided. Construct a spec
  +            %% from old-school so_name and sources
  +            [port_spec_from_legacy(Config, AppFile)];
  +        PortSpecs ->
  +            Filtered = filter_port_specs(PortSpecs),
  +            OsType = os:type(),
  +            [get_port_spec(Config, OsType, Spec) || Spec <- Filtered]
  +    end.
  +
  +port_spec_from_legacy(Config, AppFile) ->
  +    %% Get the target from the so_name variable
  +    Target = case rebar_config:get(Config, so_name, undefined) of
  +                 undefined ->
  +                     %% Generate a sensible default from app file
  +                     {_, AppName} = rebar_app_utils:app_name(Config, AppFile),
  +                     filename:join("priv",
  +                                   lists:concat([AppName, "_drv.so"]));
  +                 AName ->
  +                     %% Old form is available -- use it
  +                     filename:join("priv", AName)
  +             end,
  +    %% Get the list of source files from port_sources
  +    Sources = port_sources(rebar_config:get_list(Config, port_sources,
  +                                                 ["c_src/*.c"])),
  +    #spec { type = target_type(Target),
  +            target = maybe_switch_extension(os:type(), Target),
  +            sources = Sources,
  +            objects = port_objects(Sources) }.
   
   filter_port_specs(Specs) ->
       [S || S <- Specs, filter_port_spec(S)].
  
positive.code:                objects = [] :: [file:filename(), ...],
                 opts = [] ::list() | []}).
  
  compile(Config, _AppFile) ->
      case get_specs(Config) of
          [] ->
              ok;
          Specs ->
  
negative.code:     %% merge with the default for this operating system. This enables
      %% max flexibility for users.
      DefaultEnv  = filter_env(default_env(), []),
  
      %% Get any port-specific envs; use port_env first and then fallback
      %% to port_envs for compatibility
      RawPortEnv = rebar_config:get_list(Config, port_env,
                            rebar_config:get_list(Config, port_envs, [])),
  
      PortEnv = filter_env(RawPortEnv, []),
      Defines = get_defines(Config),
      OverrideEnv = Defines ++ PortEnv ++ filter_env(ExtraEnv, []),
  