aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/targets/targets.go14
1 files changed, 11 insertions, 3 deletions
diff --git a/sys/targets/targets.go b/sys/targets/targets.go
index 71988ea32..da701a7fd 100644
--- a/sys/targets/targets.go
+++ b/sys/targets/targets.go
@@ -836,11 +836,17 @@ func (target *Target) lazyInit() {
}
flags := make(map[string]*bool)
+ commonCFlags := []string{}
+ uncommonCFlags := []string{}
var wg sync.WaitGroup
for _, flag := range flagsToCheck {
if !optionalCFlags[flag] {
+ commonCFlags = append(commonCFlags, flag)
continue
}
+ uncommonCFlags = append(uncommonCFlags, flag)
+ }
+ for _, flag := range uncommonCFlags {
_, exists := flags[flag]
if exists {
continue
@@ -850,7 +856,7 @@ func (target *Target) lazyInit() {
wg.Add(1)
go func(flag string) {
defer wg.Done()
- *res = checkFlagSupported(target, flag)
+ *res = checkFlagSupported(target, commonCFlags, flag)
}(flag)
}
wg.Wait()
@@ -888,8 +894,10 @@ func (target *Target) lazyInit() {
}
}
-func checkFlagSupported(target *Target, flag string) bool {
- cmd := exec.Command(target.CCompiler, "-x", "c++", "-", "-o", "/dev/null", "-Werror", flag)
+func checkFlagSupported(target *Target, targetCFlags []string, flag string) bool {
+ args := []string{"-x", "c++", "-", "-o", "/dev/null", "-Werror", flag}
+ args = append(args, targetCFlags...)
+ cmd := exec.Command(target.CCompiler, args...)
cmd.Stdin = strings.NewReader(simpleProg)
return cmd.Run() == nil
}