Finding source files in repositories

The above example specifies that SCons will first search for files under the /usr/repository1 tree and next under the /usr/repository2 tree. SCons expects that any files it searches for will be found in the same position relative to the top-level directory. In the above example, if the hello.c file is not found in the local build tree, SCons will search first for a /usr/repository1/hello.c file and then for a /usr/repository1/hello.c file to use in its place.

So given the SConstruct file above, if the hello.c file exists in the local build directory, SCons will rebuild the hello program as normal:

      % scons -Q
      cc -c -o hello.o hello.c
      cc -o hello hello.o
    

If, however, there is no local hello.c file, but one exists in /usr/repository1, SCons will recompile the hello program from the source file it finds in the repository:

      % scons -Q
      cc -c -o hello.o hello.c
      cc -o hello hello.o
      gcc -c /usr/repository1/hello.c -o hello.o
      gcc -o hello hello.o
    

And similarly, if there is no local hello.c file and no /usr/repository1/hello.c, but one exists in /usr/repository2:

      % scons -Q
      cc -c -o hello.o hello.c
      cc -o hello hello.o