anchor.diff:      %% merge with the default for this operating system. This enables
       %% max flexibility for users.
       DefaultEnv  = filter_env(default_env(), []),
  -    RawPortEnv = rebar_config:get_list(Config, port_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, []),
  
positive.code:                objects = [] :: [file:filename(), ...],
                 opts = [] ::list() | []}).
  
  compile(Config, _AppFile) ->
      case get_specs(Config) of
          [] ->
              ok;
          Specs ->
  
negative.code: %% == port_specs ==
  %%
  
  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)].
  