From c698575c5760d06b69cce4e92aed124a031f5a6c Mon Sep 17 00:00:00 2001 From: Dudemanguy Date: Sun, 7 Nov 2021 12:45:58 -0600 Subject: TOOLS: add macos-swift-lib-directory.py script 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. --- TOOLS/macos-swift-lib-directory.py | 42 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 TOOLS/macos-swift-lib-directory.py (limited to 'TOOLS') diff --git a/TOOLS/macos-swift-lib-directory.py b/TOOLS/macos-swift-lib-directory.py new file mode 100755 index 0000000000..51e8cbe96f --- /dev/null +++ b/TOOLS/macos-swift-lib-directory.py @@ -0,0 +1,42 @@ +#!/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) -- cgit v1.2.3