diff --git a/SConstruct b/SConstruct index 35c19a92..d748f63a 100644 --- a/SConstruct +++ b/SConstruct @@ -125,7 +125,7 @@ opts.Add(EnumVariable("android_arch", "Target Android architecture", "armv7", [" opts.Add("macos_deployment_target", "macOS deployment target", "default") opts.Add("macos_sdk_path", "macOS SDK path", "") opts.Add(EnumVariable("macos_arch", "Target macOS architecture", "universal", ["universal", "x86_64", "arm64"])) -opts.Add(EnumVariable("ios_arch", "Target iOS architecture", "arm64", ["armv7", "arm64", "x86_64"])) +opts.Add(EnumVariable("ios_arch", "Target iOS architecture", "arm64", ["universal", "arm64", "x86_64"])) opts.Add(BoolVariable("ios_simulator", "Target iOS Simulator", False)) opts.Add( "IPHONEPATH", @@ -253,17 +253,19 @@ elif env["platform"] == "ios": env["RANLIB"] = compiler_path + "ranlib" env["SHLIBSUFFIX"] = ".dylib" - env.Append(CCFLAGS=["-arch", env["ios_arch"], "-isysroot", sdk_path]) - env.Append( - LINKFLAGS=[ - "-arch", - env["ios_arch"], - "-Wl,-undefined,dynamic_lookup", - "-isysroot", - sdk_path, - "-F" + sdk_path, - ] - ) + if env["ios_arch"] == "universal": + if env["ios_simulator"]: + env.Append(LINKFLAGS=["-arch", "x86_64", "-arch", "arm64"]) + env.Append(CCFLAGS=["-arch", "x86_64", "-arch", "arm64"]) + else: + env.Append(LINKFLAGS=["-arch", "arm64"]) + env.Append(CCFLAGS=["-arch", "arm64"]) + else: + env.Append(LINKFLAGS=["-arch", env["ios_arch"]]) + env.Append(CCFLAGS=["-arch", env["ios_arch"]]) + + env.Append(CCFLAGS=["-isysroot", sdk_path]) + env.Append(LINKFLAGS=["-isysroot", sdk_path, "-F" + sdk_path,]) if env["target"] == "debug": env.Append(CCFLAGS=["-Og", "-g"]) @@ -479,27 +481,26 @@ add_sources(sources, "src/variant", "cpp") add_sources(sources, "gen/src/variant", "cpp") add_sources(sources, "gen/src/classes", "cpp") -arch_suffix = env["bits"] +env["arch_suffix"] = env["bits"] if env["platform"] == "android": - arch_suffix = env["android_arch"] + env["arch_suffix"] = env["android_arch"] elif env["platform"] == "ios": - arch_suffix = env["ios_arch"] + env["arch_suffix"] = env["ios_arch"] if env["ios_simulator"]: - arch_suffix += ".simulator" + env["arch_suffix"] += ".simulator" elif env["platform"] == "javascript": - arch_suffix = "wasm" + env["arch_suffix"] = "wasm" elif env["platform"] == "osx": - arch_suffix = env["macos_arch"] + env["arch_suffix"] = env["macos_arch"] library = None -env["OBJSUFFIX"] = ".{}.{}.{}{}".format(env["platform"], env["target"], arch_suffix, env["OBJSUFFIX"]) -library_name = "libgodot-cpp.{}.{}.{}{}".format(env["platform"], env["target"], arch_suffix, env["LIBSUFFIX"]) +env["OBJSUFFIX"] = ".{}.{}.{}{}".format(env["platform"], env["target"], env["arch_suffix"], env["OBJSUFFIX"]) +library_name = "libgodot-cpp.{}.{}.{}{}".format(env["platform"], env["target"], env["arch_suffix"], env["LIBSUFFIX"]) if env["build_library"]: library = env.StaticLibrary(target=env.File("bin/%s" % library_name), source=sources) Default(library) -env["SHLIBSUFFIX"] = ".{}.{}.{}{}".format(env["platform"], env["target"], arch_suffix, env["SHLIBSUFFIX"]) env.Append(CPPPATH=[env.Dir(f) for f in ["gen/include", "include", "godot-headers"]]) env.Append(LIBPATH=[env.Dir("bin")]) env.Append(LIBS=library_name) diff --git a/test/SConstruct b/test/SConstruct index b2ddba18..6f700f47 100644 --- a/test/SConstruct +++ b/test/SConstruct @@ -16,6 +16,9 @@ env = SConscript("../SConstruct") env.Append(CPPPATH=["src/"]) sources = Glob("src/*.cpp") -library = env.SharedLibrary("demo/bin/libgdexample" + env["SHLIBSUFFIX"], source=sources) +if env["platform"] == "osx": + library = env.SharedLibrary("demo/bin/libgdexample.{}.{}.framework/libgdexample.{}.{}".format(env["platform"], env["target"], env["platform"], env["target"]), source=sources) +else: + library = env.SharedLibrary("demo/bin/libgdexample.{}.{}.{}{}".format(env["platform"], env["target"], env["arch_suffix"], env["SHLIBSUFFIX"]), source=sources) Default(library) diff --git a/test/demo/bin/libgdexample.debug.framework/Resources/Info.plist b/test/demo/bin/libgdexample.osx.debug.framework/Resources/Info.plist similarity index 94% rename from test/demo/bin/libgdexample.debug.framework/Resources/Info.plist rename to test/demo/bin/libgdexample.osx.debug.framework/Resources/Info.plist index 0395b376..d3e521b1 100644 --- a/test/demo/bin/libgdexample.debug.framework/Resources/Info.plist +++ b/test/demo/bin/libgdexample.osx.debug.framework/Resources/Info.plist @@ -9,7 +9,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - libgdexample.debug + libgdexample.osx.debug CFBundlePackageType FMWK CFBundleShortVersionString diff --git a/test/demo/bin/libgdexample.release.framework/Resources/Info.plist b/test/demo/bin/libgdexample.osx.release.framework/Resources/Info.plist similarity index 94% rename from test/demo/bin/libgdexample.release.framework/Resources/Info.plist rename to test/demo/bin/libgdexample.osx.release.framework/Resources/Info.plist index 827d8639..bda7622f 100644 --- a/test/demo/bin/libgdexample.release.framework/Resources/Info.plist +++ b/test/demo/bin/libgdexample.osx.release.framework/Resources/Info.plist @@ -9,7 +9,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - libgdexample.release + libgdexample.osx.release CFBundlePackageType FMWK CFBundleShortVersionString diff --git a/test/demo/example.gdextension b/test/demo/example.gdextension index a654bde5..a963bdc7 100644 --- a/test/demo/example.gdextension +++ b/test/demo/example.gdextension @@ -8,5 +8,5 @@ linux.64.debug = "bin/libgdexample.linux.debug.64.so" linux.64.release = "bin/libgdexample.linux.release.64.so" windows.64.debug = "bin/libgdexample.windows.debug.64.dll" windows.64.release = "bin/libgdexample.windows.release.64.dll" -macos.debug = "bin/libgdexample.debug.framework" -macos.release = "bin/libgdexample.release.framework" +macos.debug = "bin/libgdexample.osx.debug.framework" +macos.release = "bin/libgdexample.osx.release.framework"