From 4a26bdad5d8c0c06a7ae1328adfe9d46f37339f3 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Mon, 28 Oct 2019 11:26:34 +0100 Subject: [PATCH] cmd/gogio: build for iOS/macOS without -fmodules and -fobjc-arc The `gogio` tool adds the `-fmodules -fobjc-arc` flags to the Cgo C flags. Unfortunately, that masks problems where Cgo packages accidentally didn't have the flags in their #cgo directives such as package log. Move the flags so they're only explicitly mentioned when `gogio` invokes the host compiler to build the `main.m` shim. Fix package log to include the missing flags. While we're here, silence OpenGL ES deprecation warnings on iOS, just as we do for macOS. The warnings are normally not visible because the gogio tool suppress output from the go tool. Signed-off-by: Elias Naur --- app/internal/gl/functions.go | 4 +++- app/internal/log/log_ios.go | 2 ++ app/internal/window/os_ios.go | 2 +- cmd/gogio/iosbuild.go | 5 +++-- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/internal/gl/functions.go b/app/internal/gl/functions.go index 57243c4c..b572e25f 100644 --- a/app/internal/gl/functions.go +++ b/app/internal/gl/functions.go @@ -10,12 +10,14 @@ import ( /* #cgo linux LDFLAGS: -lGLESv2 -ldl +#cgo darwin,!ios CFLAGS: -DGL_SILENCE_DEPRECATION #cgo darwin,!ios LDFLAGS: -framework OpenGL +#cgo darwin,ios CFLAGS: -DGLES_SILENCE_DEPRECATION +#cgo darwin,ios LDFLAGS: -framework OpenGLES #include #ifdef __APPLE__ -#cgo CFLAGS: -DGL_SILENCE_DEPRECATION #include "TargetConditionals.h" #if TARGET_OS_IPHONE #include diff --git a/app/internal/log/log_ios.go b/app/internal/log/log_ios.go index 4a98377c..6f1a05e9 100644 --- a/app/internal/log/log_ios.go +++ b/app/internal/log/log_ios.go @@ -5,6 +5,8 @@ package log /* +#cgo CFLAGS: -fmodules -fobjc-arc -x objective-c + #include "log_ios.h" */ import "C" diff --git a/app/internal/window/os_ios.go b/app/internal/window/os_ios.go index edee8dd0..13dd4c42 100644 --- a/app/internal/window/os_ios.go +++ b/app/internal/window/os_ios.go @@ -5,7 +5,7 @@ package window /* -#cgo CFLAGS: -fmodules -fobjc-arc -x objective-c +#cgo CFLAGS: -DGLES_SILENCE_DEPRECATION -Werror -Wno-deprecated-declarations -fmodules -fobjc-arc -x objective-c #include #include diff --git a/cmd/gogio/iosbuild.go b/cmd/gogio/iosbuild.go index 8f6cdb7d..3e2cde15 100644 --- a/cmd/gogio/iosbuild.go +++ b/cmd/gogio/iosbuild.go @@ -184,6 +184,9 @@ int main(int argc, char * argv[]) { lipo.Args = append(lipo.Args, exeSlice) compile := exec.Command(clang, cflags...) compile.Args = append(compile.Args, + "-fmodules", + "-fobjc-arc", + "-x", "objective-c", "-F", tmpDir, "-o", exeSlice, mainm, @@ -479,8 +482,6 @@ func iosCompilerFor(target, arch string) (string, []string, error) { return "", nil, err } cflags := []string{ - "-fmodules", - "-fobjc-arc", "-fembed-bitcode", "-Werror", "-arch", allArchs[arch].iosArch,