func()

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
}