Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 29 additions & 6 deletions tools/ios.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import os
import sys
import subprocess
import ios_osxcross
from SCons.Variables import *

if sys.version_info < (3,):
Expand All @@ -16,6 +15,10 @@ def decode_utf8(x):
return codecs.utf_8_decode(x)[0]


def has_ios_osxcross():
return "OSXCROSS_IOS" in os.environ


def options(opts):
opts.Add(BoolVariable("ios_simulator", "Target iOS Simulator", False))
opts.Add("ios_min_version", "Target minimum iphoneos/iphonesimulator version", "10.0")
Expand All @@ -25,17 +28,18 @@ def options(opts):
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain",
)
opts.Add("IOS_SDK_PATH", "Path to the iOS SDK", "")
ios_osxcross.options(opts)

if has_ios_osxcross():
opts.Add("ios_triple", "Triple for ios toolchain", "")


def exists(env):
return sys.platform == "darwin" or ios_osxcross.exists(env)
return sys.platform == "darwin" or has_ios_osxcross()


def generate(env):
if env["arch"] not in ("universal", "arm64", "x86_64"):
print("Only universal, arm64, and x86_64 are supported on iOS. Exiting.")
Exit()
raise ValueError("Only universal, arm64, and x86_64 are supported on iOS. Exiting.")

if env["ios_simulator"]:
sdk_name = "iphonesimulator"
Expand Down Expand Up @@ -64,7 +68,26 @@ def generate(env):
env["ENV"]["PATH"] = env["IOS_TOOLCHAIN_PATH"] + "/Developer/usr/bin/:" + env["ENV"]["PATH"]

else:
ios_osxcross.generate(env)
# OSXCross
compiler_path = "$IOS_TOOLCHAIN_PATH/usr/bin/${ios_triple}"
env["CC"] = compiler_path + "clang"
env["CXX"] = compiler_path + "clang++"
env["AR"] = compiler_path + "ar"
env["RANLIB"] = compiler_path + "ranlib"
env["SHLIBSUFFIX"] = ".dylib"

env.Prepend(
CPPPATH=[
"$IOS_SDK_PATH/usr/include",
"$IOS_SDK_PATH/System/Library/Frameworks/AudioUnit.framework/Headers",
]
)

env.Append(CCFLAGS=["-stdlib=libc++"])

binpath = os.path.join(env["IOS_TOOLCHAIN_PATH"], "usr", "bin")
if binpath not in env["ENV"]["PATH"]:
env.PrependENVPath("PATH", binpath)

if env["arch"] == "universal":
if env["ios_simulator"]:
Expand Down
26 changes: 0 additions & 26 deletions tools/ios_osxcross.py

This file was deleted.

30 changes: 25 additions & 5 deletions tools/macos.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
import os
import sys
import macos_osxcross


def has_osxcross():
return "OSXCROSS_ROOT" in os.environ


def options(opts):
opts.Add("macos_deployment_target", "macOS deployment target", "default")
opts.Add("macos_sdk_path", "macOS SDK path", "")
macos_osxcross.options(opts)
if has_osxcross():
opts.Add("osxcross_sdk", "OSXCross SDK version", "darwin16")


def exists(env):
return sys.platform == "darwin" or macos_osxcross.exists(env)
return sys.platform == "darwin" or has_osxcross()


def generate(env):
Expand All @@ -23,9 +27,25 @@ def generate(env):
env["CXX"] = "clang++"
env["CC"] = "clang"
else:
# Use osxcross
macos_osxcross.generate(env)
# OSXCross
root = os.environ.get("OSXCROSS_ROOT", "")
if env["arch"] == "arm64":
basecmd = root + "/target/bin/arm64-apple-" + env["osxcross_sdk"] + "-"
else:
basecmd = root + "/target/bin/x86_64-apple-" + env["osxcross_sdk"] + "-"

env["CC"] = basecmd + "clang"
env["CXX"] = basecmd + "clang++"
env["AR"] = basecmd + "ar"
env["RANLIB"] = basecmd + "ranlib"
env["AS"] = basecmd + "as"

binpath = os.path.join(root, "target", "bin")
if binpath not in env["ENV"]["PATH"]:
# Add OSXCROSS bin folder to PATH (required for linking).
env.PrependENVPath("PATH", binpath)

# Common flags
if env["arch"] == "universal":
env.Append(LINKFLAGS=["-arch", "x86_64", "-arch", "arm64"])
env.Append(CCFLAGS=["-arch", "x86_64", "-arch", "arm64"])
Expand Down
28 changes: 0 additions & 28 deletions tools/macos_osxcross.py

This file was deleted.