diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-06-05 17:14:47 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-06-06 10:02:03 +0200 |
| commit | 6479ab2a752ba9ef714199de69d096cee0e6db2d (patch) | |
| tree | 0bba334b61e1a2337cbd3e9af6e1b63ab12c480a /pkg/csource | |
| parent | 65c0e1a37ca36fb4799f0d896182a3d070f7a034 (diff) | |
Makefile, sys/targets: move all native compilation logic to sys/targets
We currently have native cross-compilation logic duplicated
in Makefile and in sys/targets. Some pieces are missed in one
place, some are in another. Only pkg/csource knows how to check
for -static support.
Move all CC/CFLAGS logic to sys/targets and pull results in Makefile.
This should make Makefile work on distros that have broken x86_64-linux-gnu-gcc,
now we will use just gcc. And this removes the need to define NOSTATIC,
as it's always auto-detected.
This also paves the way for making pkg/csource work on OSes other than Linux.
Diffstat (limited to 'pkg/csource')
| -rw-r--r-- | pkg/csource/build.go | 10 | ||||
| -rw-r--r-- | pkg/csource/common.go | 2 | ||||
| -rw-r--r-- | pkg/csource/csource.go | 2 |
3 files changed, 5 insertions, 9 deletions
diff --git a/pkg/csource/build.go b/pkg/csource/build.go index cd67aa4f3..185256b8d 100644 --- a/pkg/csource/build.go +++ b/pkg/csource/build.go @@ -19,8 +19,8 @@ import ( // Build builds a C/C++ program from source src and returns name of the resulting binary. // lang can be "c" or "c++". func Build(target *prog.Target, lang, src string) (string, error) { - sysTarget := targets.List[target.OS][target.Arch] - compiler := sysTarget.CCompilerPrefix + "gcc" + sysTarget := targets.Get(target.OS, target.Arch) + compiler := sysTarget.CCompiler if _, err := exec.LookPath(compiler); err != nil { return "", ErrNoCompiler } @@ -38,11 +38,7 @@ func Build(target *prog.Target, lang, src string) (string, error) { // We do generate uint64's for syscall arguments that overflow longs on 32-bit archs. flags = append(flags, "-Wno-overflow") } - out, err := osutil.Command(compiler, append(flags, "-static")...).CombinedOutput() - if err != nil { - // Some distributions don't have static libraries. - out, err = osutil.Command(compiler, flags...).CombinedOutput() - } + out, err := osutil.Command(compiler, flags...).CombinedOutput() if err != nil { os.Remove(bin) data, _ := ioutil.ReadFile(src) diff --git a/pkg/csource/common.go b/pkg/csource/common.go index e8fce42a6..11eff8384 100644 --- a/pkg/csource/common.go +++ b/pkg/csource/common.go @@ -113,7 +113,7 @@ func defineList(p *prog.Prog, opts Options) ([]string, error) { for _, c := range p.Calls { defines = append(defines, "__NR_"+c.Meta.CallName) } - defines = append(defines, targets.List[p.Target.OS][p.Target.Arch].CArch...) + defines = append(defines, targets.Get(p.Target.OS, p.Target.Arch).CArch...) return defines, nil } diff --git a/pkg/csource/csource.go b/pkg/csource/csource.go index 6ac68464f..ddb1fbf3f 100644 --- a/pkg/csource/csource.go +++ b/pkg/csource/csource.go @@ -22,7 +22,7 @@ func Write(p *prog.Prog, opts Options) ([]byte, error) { p: p, opts: opts, target: p.Target, - sysTarget: targets.List[p.Target.OS][p.Target.Arch], + sysTarget: targets.Get(p.Target.OS, p.Target.Arch), w: new(bytes.Buffer), calls: make(map[string]uint64), } |
