main: do not set working directory for Clang invocation
This commit avoids setting the working directory to the TinyGo root when invocating Clang. This helps to weed out issues before we add support for bundling Clang in a release.
Этот коммит содержится в:
родитель
d594342642
коммит
1f0595438e
5 изменённых файлов: 23 добавлений и 15 удалений
|
@ -243,7 +243,6 @@ func compileBuiltins(target string, callback func(path string) error) error {
|
||||||
cmd := exec.Command(commands["clang"], "-c", "-Oz", "-g", "-Werror", "-Wall", "-std=c11", "-fshort-enums", "-nostdlibinc", "-ffunction-sections", "-fdata-sections", "--target="+target, "-fdebug-prefix-map="+dir+"="+remapDir, "-o", objpath, srcpath)
|
cmd := exec.Command(commands["clang"], "-c", "-Oz", "-g", "-Werror", "-Wall", "-std=c11", "-fshort-enums", "-nostdlibinc", "-ffunction-sections", "-fdata-sections", "--target="+target, "-fdebug-prefix-map="+dir+"="+remapDir, "-o", objpath, srcpath)
|
||||||
cmd.Stdout = os.Stdout
|
cmd.Stdout = os.Stdout
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
cmd.Dir = dir
|
|
||||||
err = cmd.Run()
|
err = cmd.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &commandError{"failed to build", srcpath, err}
|
return &commandError{"failed to build", srcpath, err}
|
||||||
|
|
31
main.go
31
main.go
|
@ -62,9 +62,19 @@ func Compile(pkgName, outpath string, spec *TargetSpec, config *BuildConfig, act
|
||||||
config.gc = spec.GC
|
config.gc = spec.GC
|
||||||
}
|
}
|
||||||
|
|
||||||
// Append command line passed CFlags and LDFlags
|
root := sourceDir()
|
||||||
spec.CFlags = append(spec.CFlags, config.cFlags...)
|
|
||||||
spec.LDFlags = append(spec.LDFlags, config.ldFlags...)
|
// Merge and adjust CFlags.
|
||||||
|
cflags := append([]string{}, config.cFlags...)
|
||||||
|
for _, flag := range spec.CFlags {
|
||||||
|
cflags = append(cflags, strings.Replace(flag, "{root}", root, -1))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Merge and adjust LDFlags.
|
||||||
|
ldflags := append([]string{}, config.ldFlags...)
|
||||||
|
for _, flag := range spec.LDFlags {
|
||||||
|
ldflags = append(ldflags, strings.Replace(flag, "{root}", root, -1))
|
||||||
|
}
|
||||||
|
|
||||||
compilerConfig := compiler.Config{
|
compilerConfig := compiler.Config{
|
||||||
Triple: spec.Triple,
|
Triple: spec.Triple,
|
||||||
|
@ -73,11 +83,11 @@ func Compile(pkgName, outpath string, spec *TargetSpec, config *BuildConfig, act
|
||||||
GOARCH: spec.GOARCH,
|
GOARCH: spec.GOARCH,
|
||||||
GC: config.gc,
|
GC: config.gc,
|
||||||
PanicStrategy: config.panicStrategy,
|
PanicStrategy: config.panicStrategy,
|
||||||
CFlags: spec.CFlags,
|
CFlags: cflags,
|
||||||
LDFlags: spec.LDFlags,
|
LDFlags: ldflags,
|
||||||
Debug: config.debug,
|
Debug: config.debug,
|
||||||
DumpSSA: config.dumpSSA,
|
DumpSSA: config.dumpSSA,
|
||||||
RootDir: sourceDir(),
|
RootDir: root,
|
||||||
GOPATH: getGopath(),
|
GOPATH: getGopath(),
|
||||||
BuildTags: spec.BuildTags,
|
BuildTags: spec.BuildTags,
|
||||||
}
|
}
|
||||||
|
@ -203,22 +213,22 @@ func Compile(pkgName, outpath string, spec *TargetSpec, config *BuildConfig, act
|
||||||
// Prepare link command.
|
// Prepare link command.
|
||||||
executable := filepath.Join(dir, "main")
|
executable := filepath.Join(dir, "main")
|
||||||
tmppath := executable // final file
|
tmppath := executable // final file
|
||||||
ldflags := append(spec.LDFlags, "-o", executable, objfile, "-L", sourceDir())
|
ldflags := append(ldflags, "-o", executable, objfile, "-L", root)
|
||||||
if spec.RTLib == "compiler-rt" {
|
if spec.RTLib == "compiler-rt" {
|
||||||
ldflags = append(ldflags, librt)
|
ldflags = append(ldflags, librt)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compile extra files.
|
// Compile extra files.
|
||||||
for i, path := range spec.ExtraFiles {
|
for i, path := range spec.ExtraFiles {
|
||||||
|
abspath := filepath.Join(root, path)
|
||||||
outpath := filepath.Join(dir, "extra-"+strconv.Itoa(i)+"-"+filepath.Base(path)+".o")
|
outpath := filepath.Join(dir, "extra-"+strconv.Itoa(i)+"-"+filepath.Base(path)+".o")
|
||||||
cmdName := spec.Compiler
|
cmdName := spec.Compiler
|
||||||
if name, ok := commands[cmdName]; ok {
|
if name, ok := commands[cmdName]; ok {
|
||||||
cmdName = name
|
cmdName = name
|
||||||
}
|
}
|
||||||
cmd := exec.Command(cmdName, append(spec.CFlags, "-c", "-o", outpath, path)...)
|
cmd := exec.Command(cmdName, append(cflags, "-c", "-o", outpath, abspath)...)
|
||||||
cmd.Stdout = os.Stdout
|
cmd.Stdout = os.Stdout
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
cmd.Dir = sourceDir()
|
|
||||||
err := cmd.Run()
|
err := cmd.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &commandError{"failed to build", path, err}
|
return &commandError{"failed to build", path, err}
|
||||||
|
@ -235,10 +245,9 @@ func Compile(pkgName, outpath string, spec *TargetSpec, config *BuildConfig, act
|
||||||
if name, ok := commands[cmdName]; ok {
|
if name, ok := commands[cmdName]; ok {
|
||||||
cmdName = name
|
cmdName = name
|
||||||
}
|
}
|
||||||
cmd := exec.Command(cmdName, append(spec.CFlags, "-c", "-o", outpath, path)...)
|
cmd := exec.Command(cmdName, append(cflags, "-c", "-o", outpath, path)...)
|
||||||
cmd.Stdout = os.Stdout
|
cmd.Stdout = os.Stdout
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
cmd.Dir = sourceDir()
|
|
||||||
err := cmd.Run()
|
err := cmd.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &commandError{"failed to build", path, err}
|
return &commandError{"failed to build", path, err}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
"--target=armv6m-none-eabi",
|
"--target=armv6m-none-eabi",
|
||||||
"-Qunused-arguments",
|
"-Qunused-arguments",
|
||||||
"-DNRF51",
|
"-DNRF51",
|
||||||
"-Ilib/CMSIS/CMSIS/Include"
|
"-I{root}/lib/CMSIS/CMSIS/Include"
|
||||||
],
|
],
|
||||||
"ldflags": [
|
"ldflags": [
|
||||||
"-T", "targets/nrf51.ld"
|
"-T", "targets/nrf51.ld"
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
"-mfloat-abi=soft",
|
"-mfloat-abi=soft",
|
||||||
"-Qunused-arguments",
|
"-Qunused-arguments",
|
||||||
"-DNRF52832_XXAA",
|
"-DNRF52832_XXAA",
|
||||||
"-Ilib/CMSIS/CMSIS/Include"
|
"-I{root}/lib/CMSIS/CMSIS/Include"
|
||||||
],
|
],
|
||||||
"ldflags": [
|
"ldflags": [
|
||||||
"-T", "targets/nrf52.ld"
|
"-T", "targets/nrf52.ld"
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
"-mfloat-abi=soft",
|
"-mfloat-abi=soft",
|
||||||
"-Qunused-arguments",
|
"-Qunused-arguments",
|
||||||
"-DNRF52840_XXAA",
|
"-DNRF52840_XXAA",
|
||||||
"-Ilib/CMSIS/CMSIS/Include"
|
"-I{root}/lib/CMSIS/CMSIS/Include"
|
||||||
],
|
],
|
||||||
"ldflags": [
|
"ldflags": [
|
||||||
"-T", "targets/nrf52840.ld"
|
"-T", "targets/nrf52840.ld"
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче