mirror of
https://github.com/mpv-player/mpv
synced 2024-12-22 14:52:43 +00:00
c698575c57
Apple is great and forces us to do a lot of weird checks because they randomly move the location of the swift libraries around. Make a specific python script for checking various locations and write the output to stdout for meson.
43 lines
1.3 KiB
Python
Executable File
43 lines
1.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
# Finds the macos swift library directory and prints the full path to stdout.
|
|
# First argument is the path to the swift executable.
|
|
|
|
import os
|
|
import sys
|
|
from shutil import which
|
|
from subprocess import check_output
|
|
|
|
def find_swift_lib():
|
|
swift_lib_dir = os.environ.get('SWIFT_LIB_DYNAMIC', '')
|
|
if swift_lib_dir:
|
|
return swift_lib_dir
|
|
|
|
# first check for lib dir relative to swift executable
|
|
xcode_dir = os.path.dirname(os.path.dirname(sys.argv[1]))
|
|
swift_lib_dir = os.path.join(xcode_dir, "lib", "swift", "macosx")
|
|
|
|
if os.path.isdir(swift_lib_dir):
|
|
return swift_lib_dir
|
|
|
|
# fallback to xcode-select path
|
|
xcode_select = which("xcode-select")
|
|
if not xcode_select:
|
|
sys.exit(1)
|
|
|
|
xcode_path = check_output([xcode_select, "-p"], encoding="UTF-8")
|
|
|
|
swift_lib_dir = os.path.join(xcode_path, "Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx")
|
|
if os.path.isdir(swift_lib_dir):
|
|
return swift_lib_dir
|
|
|
|
# last resort if we still haven't found a path
|
|
swift_lib_dir = os.path.join(xcode_path, "usr/lib/swift/macosx")
|
|
if not os.path.isdir(swift_lib_dir):
|
|
sys.exit(1)
|
|
return swift_lib_dir
|
|
|
|
if __name__ == "__main__":
|
|
swift_lib_dir = find_swift_lib()
|
|
sys.stdout.write(swift_lib_dir)
|