in newt/builder/build.go [312:392]
func (b *Builder) collectCompileEntriesBpkg(bpkg *BuildPackage) (
[]toolchain.CompilerJob, error) {
c, err := b.newCompiler(bpkg, b.PkgBinDir(bpkg))
if err != nil {
return nil, err
}
srcDirs := []string{}
if len(bpkg.SourceDirectories) > 0 {
for _, relDir := range bpkg.SourceDirectories {
var dir string
repo, path, err := newtutil.ParsePackageString(relDir)
if err != nil {
return nil, err
}
if repo != "" {
dir = "repos/" + repo + "/" + path
} else {
dir = bpkg.rpkg.Lpkg.BasePath() + "/" + relDir
}
if util.NodeNotExist(dir) {
return nil, util.NewNewtError(fmt.Sprintf(
"Specified source directory %s, does not exist.",
dir))
}
srcDirs = append(srcDirs, dir)
}
} else if len(bpkg.SourceFiles) == 0 {
// Add 'src/' automatically only if neither source dirs nor files are defined
srcDir := bpkg.rpkg.Lpkg.BasePath() + "/src"
if util.NodeNotExist(srcDir) {
// Nothing to compile.
return nil, nil
}
srcDirs = append(srcDirs, srcDir)
}
entries := []toolchain.CompilerJob{}
for _, dir := range srcDirs {
subEntries, err := collectCompileEntriesDir(dir, c,
b.targetBuilder.bspPkg.Arch, nil)
if err != nil {
return nil, err
}
entries = append(entries, subEntries...)
}
for _, filename := range bpkg.SourceFiles {
repo, path, err := newtutil.ParsePackageString(filename)
if err != nil {
return nil, err
}
if repo != "" {
filename = "repos/" + repo + "/" + path
} else {
filename = bpkg.rpkg.Lpkg.BasePath() + "/" + filename
}
if util.NodeNotExist(filename) {
return nil, util.NewNewtError(fmt.Sprintf(
"Specified source file %s, does not exist.",
filename))
}
entry, err := c.CollectSingleEntry(filename)
if err == nil {
entries = append(entries, *entry)
}
}
return entries, nil
}