ladybird/Meta/gn/build/install_vcpkg.py
2025-05-22 16:21:42 +02:00

56 lines
2.2 KiB
Python

#!/usr/bin/env python3
import argparse
import os
import pathlib
import subprocess
import sys
def main():
parser = argparse.ArgumentParser(description="Install vcpkg dependencies")
parser.add_argument("--cc", type=str, required=True, help="The C compiler to use")
parser.add_argument("--cxx", type=str, required=True, help="The C++ compiler to use")
parser.add_argument("--manifest", type=str, required=True, help="The vcpkg manifest to install")
parser.add_argument("--vcpkg", type=str, required=True, help="The path to the vcpkg executable")
parser.add_argument("--vcpkg-root", type=str, required=True, help="The path to the vcpkg root directory")
parser.add_argument("--vcpkg-triplet", type=str, required=True, help="The vcpkg triplet to use")
parser.add_argument("--vcpkg-overlay-triplets", type=str, help="Path to a vcpkg overlay triplets directory")
parser.add_argument("--vcpkg-binary-cache-dir", type=str, help="Path to a vcpkg binary cache directory")
parser.add_argument("--stamp-file", type=str, help="Path to a file to touch after installation")
parser.add_argument("install_directory", type=str, help="The directory to install vcpkg deps into")
args = parser.parse_args()
manifest_directory = pathlib.Path(args.manifest).parent
env = os.environ.copy()
env["CC"] = args.cc
env["CXX"] = args.cxx
vcpkg_arguments = [
args.vcpkg,
"install",
"--no-print-usage",
"--x-wait-for-lock",
f"--triplet={args.vcpkg_triplet}",
f"--vcpkg-root={args.vcpkg_root}",
f"--x-manifest-root={manifest_directory}",
f"--x-install-root={args.install_directory}",
]
if args.vcpkg_overlay_triplets:
vcpkg_arguments += [f"--overlay-triplets={args.vcpkg_overlay_triplets}"]
if args.vcpkg_binary_cache_dir:
binary_cache_dir = pathlib.Path(args.vcpkg_binary_cache_dir).absolute()
vcpkg_arguments += [f"--binarysource=clear;files,{binary_cache_dir},readwrite"]
subprocess.run(vcpkg_arguments, env=env, check=True)
if args.stamp_file:
pathlib.Path(args.stamp_file).touch()
return 0
if __name__ == "__main__":
sys.exit(main())