in newt/builder/build.go [161:246]
func collectCompileEntriesDir(srcDir string, c *toolchain.Compiler,
arch string, ignDirs []string) ([]toolchain.CompilerJob, error) {
// Quietly succeed if the source directory doesn't exist.
if util.NodeNotExist(srcDir) {
return nil, nil
}
util.StatusMessage(util.VERBOSITY_VERBOSE,
"Compiling src in base directory: %s\n", srcDir)
// Start from the source directory.
c.SetSrcDir(srcDir)
// Ignore architecture-specific source files for now. Use a temporary
// string slice here so that the "arch" directory is not ignored in the
// subsequent architecture-specific compile phase.
ignDirsArch := append(ignDirs, "arch")
entries := []toolchain.CompilerJob{}
subEntries, err := c.RecursiveCollectEntries(toolchain.COMPILER_TYPE_C,
ignDirsArch)
if err != nil {
return nil, err
}
entries = append(entries, subEntries...)
// Compile CPP files
subEntries, err = c.RecursiveCollectEntries(toolchain.COMPILER_TYPE_CPP,
ignDirsArch)
if err != nil {
return nil, err
}
entries = append(entries, subEntries...)
// Copy in pre-compiled library files
subEntries, err = c.RecursiveCollectEntries(
toolchain.COMPILER_TYPE_ARCHIVE, ignDirsArch)
if err != nil {
return nil, err
}
entries = append(entries, subEntries...)
archDir := srcDir + "/arch/" + arch + "/"
if util.NodeExist(archDir) {
util.StatusMessage(util.VERBOSITY_VERBOSE,
"Compiling architecture specific src pkgs in directory: %s\n",
archDir)
c.SetSrcDir(archDir)
// Compile C source.
subEntries, err = c.RecursiveCollectEntries(
toolchain.COMPILER_TYPE_C, ignDirs)
if err != nil {
return nil, err
}
entries = append(entries, subEntries...)
// Compile CPP source
subEntries, err = c.RecursiveCollectEntries(
toolchain.COMPILER_TYPE_CPP, ignDirs)
if err != nil {
return nil, err
}
entries = append(entries, subEntries...)
// Compile assembly source (only architecture-specific).
subEntries, err = c.RecursiveCollectEntries(
toolchain.COMPILER_TYPE_ASM, ignDirs)
if err != nil {
return nil, err
}
entries = append(entries, subEntries...)
// Copy in pre-compiled library files
subEntries, err = c.RecursiveCollectEntries(
toolchain.COMPILER_TYPE_ARCHIVE, ignDirs)
if err != nil {
return nil, err
}
entries = append(entries, subEntries...)
}
return entries, nil
}