anchor.diff:                    orddict:from_list(OverrideEnvs),
                     orddict:from_list(DefaultEnvs)).
   
  -    
  -    
  -
  +
  +%%
  +%% Choose a compiler variable, based on a provided extension
  +%%
   compiler(".cc")  -> "$CXX";
   compiler(".cp")  -> "$CXX";
   compiler(".cxx") -> "$CXX";
  
positive.code:         _ ->
              %% Extract environment values from the config (if specified) and merge with the
              %% default for this operating system. This enables max flexibility for users.
              OperatingSystem = rebar_utils:get_os(),
              DefaultEnvs  = driver_envs() ++ default_envs(OperatingSystem),
              OverrideEnvs = rebar_config:get_list(Config, port_env, []),
              Env = merge_envs(OverrideEnvs, DefaultEnvs),
              
              %% One or more files are available for building. Run the pre-compile hook, if necessary.
  %            run_precompile_hook(Config),
  
              %% Compile each of the sources
              compile_each(Sources, [], Config, Env),
              ok
  
              %% Finally, link everything together
  %            do_link(Config, AppFile, Bins)
      end.
  
  clean(Config, _AppFile) ->
      ok.
  
  
  %% ===================================================================
  
negative.code: %% Public API
  %% ===================================================================
  
  %% Supported configuration variables:
  %%
  %% * port_sources - Erlang list of files and/or wildcard strings to be compiled
  %%
  %% * port_envs - Erlang list of key/value pairs which will control the environment when
  %%               running the compiler and linker. By default, the following variables
  %%               are defined:
  %%               CC       - C compiler
  %%               CXX      - C++ compiler
  %%               CFLAGS   - C compiler
  %%               CXXFLAGS - C++ compiler
  %%               LDFLAGS  - Link flags
  %%               DRIVER_CFLAGS  - default -I paths for erts and ei
  %%               DRIVER_LDFLAGS - default -L and -lerl_interface -lei
  %%
  %%               Note that if you wish to extend (vs. replace) these variables, you MUST
  %%               include a shell-style reference in your definition. E.g. to extend CFLAGS,
  %%               do something like:
  %%
  %%               {port_envs, [{"CFLAGS", "$CFLAGS -MyOtherOptions"}]}
  %%
  %%               It is also possible to specify platform specific options by specifying a triplet
  %%               where the first string is a regex that is checked against erlang's system architecture
  %%               string. E.g. to specify a CFLAG that only applies to x86_64 on linux do:
  %%
  %%               {port_envs, [{"x86_64.*-linux", "CFLAGS", "$CFLAGS -X86Options"}]}
  %%
  %% * port_pre_script - Tuple which specifies a pre-compilation script to run, and a filename that
  %%                     exists as a result of the script running. 
  %%
  %% * port_cleanup_script - String that specifies a script to run during cleanup. Use this to remove
  %%                         files/directories created by port_pre_script.
  %%
  
  compile(Config, AppFile) ->
      %% Compose list of sources from config file -- defaults to c_src/*.c
      Sources = expand_sources(rebar_config:get_list(Config, port_sources, ["c_src/*.c"]), []),
      case Sources of
          [] ->
  