diff --git a/.github/workflows/fedora.yml b/.github/workflows/fedora.yml index 3858ac17..14bd6e2c 100644 --- a/.github/workflows/fedora.yml +++ b/.github/workflows/fedora.yml @@ -50,8 +50,6 @@ jobs: echo "user ALL=(ALL) NOPASSWD: ALL" | tee /etc/sudoers.d/user - uses: actions/checkout@v4 - with: - fetch-depth: 1 - name: Create workspace shell: bash diff --git a/.github/workflows/ubuntu-legacy.yml b/.github/workflows/ubuntu-legacy.yml index cba169b4..8c700744 100644 --- a/.github/workflows/ubuntu-legacy.yml +++ b/.github/workflows/ubuntu-legacy.yml @@ -55,8 +55,6 @@ jobs: echo "user ALL=(ALL) NOPASSWD: ALL" | tee /etc/sudoers.d/user - uses: actions/checkout@v4 - with: - fetch-depth: 1 - name: Fix workspace permissions shell: bash diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 8d65be85..d8ccca4a 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -45,8 +45,6 @@ jobs: env - uses: actions/checkout@v4 - with: - fetch-depth: 1 - name: Create workspace shell: bash diff --git a/.github/workflows/windows.yaml b/.github/workflows/windows.yaml index 9e72227b..2f70a3b2 100644 --- a/.github/workflows/windows.yaml +++ b/.github/workflows/windows.yaml @@ -42,8 +42,6 @@ jobs: env - uses: actions/checkout@v4 - with: - fetch-depth: 1 - name: Build libcurl from source if: matrix.os == 'windows-11-arm' diff --git a/.gitignore b/.gitignore index a96b40cb..f2aa9f22 100644 --- a/.gitignore +++ b/.gitignore @@ -145,6 +145,8 @@ app flutter_*.log qemu_run.scpt +configs/remote_*.json + dart-revision.json engine-revision.json diff --git a/configs/desktop-homescreen.json b/configs/desktop-homescreen.json index cfe66c21..b59ad036 100644 --- a/configs/desktop-homescreen.json +++ b/configs/desktop-homescreen.json @@ -19,6 +19,7 @@ "HOMESCREEN_SRC_DIR": "${FLUTTER_WORKSPACE}/app/ivi-homescreen", "HOMESCREEN_BUILD_DIR": "${FLUTTER_WORKSPACE}/app/ivi-homescreen/build", "PLUGINS_DIR": "${FLUTTER_WORKSPACE}/app/ivi-homescreen-plugins/plugins", + "+(;)EXT_PLUGINS_DIRS": "", "FIREBASE_SRC_DIR": "${FLUTTER_WORKSPACE}/app/firebase-cpp-sdk", "FIREBASE_BUILD_DIR": "${FLUTTER_WORKSPACE}/app/firebase-cpp-sdk/build", "PLUGIN_FIREBASE": "-DBUILD_PLUGIN_CLOUD_FIRESTORE=${FLUTTER_WORKSPACE_FIREBASE_CPP_SDK_LOAD} -DBUILD_PLUGIN_FIREBASE_AUTH=${FLUTTER_WORKSPACE_FIREBASE_CPP_SDK_LOAD} -DBUILD_PLUGIN_FIREBASE_STORAGE=${FLUTTER_WORKSPACE_FIREBASE_CPP_SDK_LOAD} -DFIREBASE_CPP_SDK_DIR=${FIREBASE_SRC_DIR} -DFIREBASE_SDK_LIBDIR=${FIREBASE_BUILD_DIR}", @@ -27,7 +28,6 @@ "PLUGIN_CAMERA": "-DBUILD_PLUGIN_CAMERA=${FLUTTER_WORKSPACE_LIBCAMERA_LOAD}", "PLUGIN_CAMERA_PIPEWIRE": "-DBUILD_PLUGIN_CAMERA_PIPEWIRE=${FLUTTER_WORKSPACE_PIPEWIRE_LOAD}", "PLUGIN_FLATPAK": "-DBUILD_PLUGIN_FLATPAK=OFF", - "FLUGIN_FILAMENT_VIEW": "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DBUILD_PLUGIN_FILAMENT_VIEW=${FLUTTER_WORKSPACE_FILAMENT_LOAD} -DFILAMENT_INCLUDE_DIR=${FILAMENT_INCLUDE_DIR} -DFILAMENT_LINK_LIBRARIES_DIR=${FILAMENT_LINK_LIBRARIES_DIR} -DFILAMENT_BUILD_TYPE=${FILAMENT_BUILD_TYPE}", "PLUGIN_PDF": "-DBUILD_PLUGIN_PDF=${FLUTTER_WORKSPACE_PDFIUM_LOAD}", "LIBWEBRTC_SRC_DIR": "${FLUTTER_WORKSPACE}/app/libwebrtc/src", "LIBWEBRTC_INC_DIR": "${LIBWEBRTC_SRC_DIR}/libwebrtc/include", @@ -35,8 +35,8 @@ "LIBWEBRTC_LIB": "${LIBWEBRTC_LIB_DIR}/libwebrtc.so", "PLUGIN_WEBVIEW": "-DBUILD_PLUGIN_WEBVIEW_FLUTTER_VIEW=${FLUTTER_WORKSPACE_CEF_PREBUILT_LOAD} -DCEF_ROOT=${FLUTTER_WORKSPACE}/app/ivi-homescreen-plugins/plugins/webview_flutter_view/third_party/cef_binary_128.4.9+g9840ad9+chromium-128.0.6613.120_linux64_minimal", "PLUGIN_WEBRTC": "-DBUILD_PLUGIN_WEBRTC=${FLUTTER_WORKSPACE_LIBWEBRTC_LOAD} -DLIBWEBRTC_INC_DIR=${LIBWEBRTC_INC_DIR} -DLIBWEBRTC_LIB=${LIBWEBRTC_LIB}", - "PLUGIN_ARGS": "-DBUILD_PLUGIN_FILAMENT_VIEW=ON ${PLUGIN_WEBVIEW} -DBUILD_PLUGIN_NAV_RENDER_VIEW=${FLUTTER_WORKSPACE_MAPLIBRE_VULKAN_LOAD} -DBUILD_PLUGIN_LAYER_PLAYGROUND_VIEW=OFF -DBUILD_PLUGIN_AUDIOPLAYERS_LINUX=OFF -DBUILD_PLUGIN_URL_LAUNCHER=ON -DBUILD_PLUGIN_FILE_SELECTOR=ON -DBUILD_PLUGIN_GO_ROUTER=ON -DBUILD_PLUGIN_SECURE_STORAGE=OFF -DBUILD_PLUGIN_DESKTOP_WINDOW_LINUX=ON ${PLUGIN_FIREBASE} ${PLUGIN_RIVE} ${PLUGIN_PDF} ${FLUGIN_FILAMENT_VIEW} ${PLUGIN_WEBRTC} ${PLUGIN_CAMERA} ${PLUGIN_CAMERA_PIPEWIRE} ${PLUGIN_FLATPAK}", - "HOMESCREEN_CMAKE_ARGS": "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DLLVM_CONFIG=${LLVM_CONFIG} -DSANITIZE_ADDRESS=OFF -DENABLE_DLT=OFF -DBUILD_UNIT_TESTS=OFF -DBUILD_DOCS=OFF -DBUILD_CRASH_HANDLER=OFF -DENABLE_IVI_SHELL_CLIENT=OFF -DENABLE_XDG_CLIENT=ON -DENABLE_AGL_SHELL_CLIENT=${FLUTTER_WORKSPACE_AGL_COMPOSITOR_LOAD} -DENABLE_LTO=ON -DENABLE_STATIC_LINK=ON -DDEBUG_PLATFORM_MESSAGES=OFF -DBUILD_BACKEND_WAYLAND_EGL=ON -DBUILD_BACKEND_WAYLAND_VULKAN=OFF -DBUILD_EGL_TRANSPARENCY=ON -DBUILD_EGL_ENABLE_3D=ON -DBUILD_EGL_ENABLE_MULTISAMPLE=ON -DPLUGINS_DIR=${PLUGINS_DIR} ${PLUGIN_ARGS}${CMD_LINE_CMAKE_PLUGIN_ARGS}", + "+PLUGIN_ARGS": "${PLUGIN_WEBVIEW} -DBUILD_PLUGIN_NAV_RENDER_VIEW=${FLUTTER_WORKSPACE_MAPLIBRE_VULKAN_LOAD} -DBUILD_PLUGIN_LAYER_PLAYGROUND_VIEW=OFF -DBUILD_PLUGIN_AUDIOPLAYERS_LINUX=OFF -DBUILD_PLUGIN_URL_LAUNCHER=ON -DBUILD_PLUGIN_FILE_SELECTOR=ON -DBUILD_PLUGIN_GO_ROUTER=ON -DBUILD_PLUGIN_SECURE_STORAGE=OFF -DBUILD_PLUGIN_DESKTOP_WINDOW_LINUX=ON ${PLUGIN_FIREBASE} ${PLUGIN_RIVE} ${PLUGIN_PDF} ${PLUGIN_WEBRTC} ${PLUGIN_CAMERA} ${PLUGIN_CAMERA_PIPEWIRE} ${PLUGIN_FLATPAK}", + "HOMESCREEN_CMAKE_ARGS": "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DLLVM_CONFIG=${LLVM_CONFIG} -DSANITIZE_ADDRESS=OFF -DENABLE_DLT=OFF -DBUILD_UNIT_TESTS=OFF -DBUILD_DOCS=OFF -DBUILD_CRASH_HANDLER=OFF -DENABLE_IVI_SHELL_CLIENT=OFF -DENABLE_XDG_CLIENT=ON -DENABLE_AGL_SHELL_CLIENT=${FLUTTER_WORKSPACE_AGL_COMPOSITOR_LOAD} -DENABLE_LTO=ON -DENABLE_STATIC_LINK=ON -DDEBUG_PLATFORM_MESSAGES=OFF -DBUILD_BACKEND_WAYLAND_EGL=ON -DBUILD_BACKEND_WAYLAND_VULKAN=OFF -DBUILD_EGL_TRANSPARENCY=ON -DBUILD_EGL_ENABLE_3D=ON -DBUILD_EGL_ENABLE_MULTISAMPLE=ON -DPLUGINS_DIR=${PLUGINS_DIR} -DEXT_PLUGINS_DIRS=${EXT_PLUGINS_DIRS} ${PLUGIN_ARGS} ${CMD_LINE_CMAKE_PLUGIN_ARGS}", "HOMESCREEN_EXE": "LD_LIBRARY_PATH=${LIBWEBRTC_LIB_DIR}:${RIVE_TEXT_LIB_DIR} SPDLOG_LEVEL=debug ${HOMESCREEN_BUILD_DIR}/shell/homescreen -b ${PLATFORM_ID_DIR_RELATIVE}", "PING_CMD": "[ -n \"$WAYLAND_DISPLAY\" ] && echo \"Type=wayland\"", "CREATE_BUNDLE_FOLDER": "mkdir -p ${PLATFORM_ID_DIR_RELATIVE}/data ${PLATFORM_ID_DIR_RELATIVE}/lib", @@ -48,11 +48,11 @@ "src": [ { "uri": "https://github.com/toyota-connected/ivi-homescreen.git", - "branch": "v2.0" + "branch": "feature/external-plugins" }, { "uri": "https://github.com/toyota-connected/ivi-homescreen-plugins.git", - "branch": "v2.0" + "branch": "feature/remove-fluorite" }, { "uri": "https://github.com/toyota-connected/tcna-packages.git", diff --git a/configs/filament-v1.65.2.json b/configs/filament-v1.65.2.json deleted file mode 100644 index 1569b643..00000000 --- a/configs/filament-v1.65.2.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "id": "filament", - "load": false, - "supported_archs": [ - "aarch64", - "arm64", - "x86_64" - ], - "supported_host_types": [ - "ubuntu", - "rhel", - "fedora" - ], - "type": "dependency", - "env": { - "CC": "${LLVM_BINDIR}/clang", - "CXX": "${LLVM_BINDIR}/clang++", - "PATH": "${LLVM_BINDIR}:${FLUTTER_WORKSPACE}/.config/flutter_workspace/toolchain-common-ninja:${FLUTTER_WORKSPACE}/.config/flutter_workspace/toolchain-common-cmake/bin:$PATH", - "LD_LIBRARY_PATH": "${LLVM_LIBDIR}:${FLUTTER_WORKSPACE}/.config/flutter_workspace/toolchain-common-cmake/lib", - "PATCH_FOLDER": "${FLUTTER_WORKSPACE}/patches", - "FILAMENT_BUILD_TYPE": "${CMAKE_BUILD_TYPE}", - "FILAMENT_SRC_DIR": "${FLUTTER_WORKSPACE}/app/filament", - "FILAMENT_BUILD_DIR": "${FLUTTER_WORKSPACE}/app/filament/build/${_BUILD_TYPE}", - "FILAMENT_STAGING_DIR": "${FILAMENT_BUILD_DIR}/staging", - "FILAMENT_INCLUDE_DIR": "${FILAMENT_STAGING_DIR}/include", - "FILAMENT_LINK_LIBRARIES_DIR": "${FILAMENT_STAGING_DIR}/lib/${HOST_ARCH}", - "FILAMENT_CMAKE_ARGS": "-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DFILAMENT_SUPPORTS_VULKAN=ON -DFILAMENT_ENABLE_LTO=OFF -DFILAMENT_SUPPORTS_OPENGL=OFF -DFILAMENT_USE_EXTERNAL_GLES3=OFF -DFILAMENT_SUPPORTS_WAYLAND=ON -DFILAMENT_SUPPORTS_X11=OFF -DFILAMENT_SUPPORTS_XCB=OFF -DFILAMENT_SUPPORTS_EGL_ON_LINUX=OFF -DFILAMENT_SKIP_SDL2=ON -DFILAMENT_SKIP_SAMPLES=ON -DFILAMENT_USE_SWIFTSHADER=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_STAGING_PREFIX=${FILAMENT_STAGING_DIR} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_POSITION_INDEPENDENT_CODE=ON" - }, - "src": [ - { - "uri": "https://github.com/google/filament.git", - "branch": "release", - "rev": "v1.65.2" - } - ], - "runtime": { - "pre-requisites": { - "aarch64": { - "ubuntu": { - "cmds": [ - "pip3 install absl-py", - "sudo apt-get update -y", - "sudo apt-get install -yq libsdl2-dev libjpeg-dev file" - ] - } - }, - "x86_64": { - "ubuntu": { - "cmds": [ - "pip3 install absl-py", - "sudo apt-get update -y", - "sudo apt-get install -yq libsdl2-dev libjpeg-dev file" - ] - }, - "fedora": { - "cmds": [ - "pip3 install absl-py", - "sudo dnf -y update", - "sudo dnf -y install SDL2-devel libjpeg-devel file" - ] - } - } - }, - "post_cmds": [ - { - "cwd": "${FILAMENT_SRC_DIR}", - "cmds": [ - "git reset --hard", - "git apply ${PATCH_FOLDER}/filament/0001-disable-backend-tests-1.65.2.patch", - "git apply ${PATCH_FOLDER}/filament/0002-install-required-files.patch", - "git apply ${PATCH_FOLDER}/filament/0003-move-include-contents-to-include-filament.patch", - "git apply ${PATCH_FOLDER}/filament/0004-move-libraries-so-they-install-1.65.2.patch", - "git apply ${PATCH_FOLDER}/filament/0005-spirv-tools-threads.patch" - ] - }, - { - "cwd": "${FILAMENT_BUILD_DIR}", - "cmds": [ - "bash -c \"rm -rf CMakeCache.txt CMakeFiles | true\"", - "cmake -G Ninja -S ${FILAMENT_SRC_DIR} -B ${FILAMENT_BUILD_DIR} ${FILAMENT_CMAKE_ARGS}", - "cmake --build . --config ${CMAKE_BUILD_TYPE} --target install" - ] - } - ], - "do_clean": [ - { - "cwd": "${FILAMENT_BUILD_DIR}", - "cmds": [ - "cmake --build . --config ${CMAKE_BUILD_TYPE} --target clean" - ] - } - ] - } -} \ No newline at end of file diff --git a/configs/filament-windows-v1.60.1.json b/configs/filament-windows-v1.60.1.json deleted file mode 100644 index e8cb5ad9..00000000 --- a/configs/filament-windows-v1.60.1.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "id": "filament-windows", - "load": false, - "supported_archs": [ - "ARM64", - "AMD64" - ], - "supported_host_types": [ - "windows" - ], - "type": "dependency", - "env": { - "PATH": "${FLUTTER_WORKSPACE}/app/depot_tools;${FLUTTER_WORKSPACE}/.config/flutter_workspace/toolchain-common-cmake/bin;C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/Llvm/X64/bin/;$PATH", - "LD_LIBRARY_PATH": "${FLUTTER_WORKSPACE}/.config/flutter_workspace/toolchain-common-cmake/lib", - "PATCH_FOLDER": "${FLUTTER_WORKSPACE}/patches/filament-windows", - "COMPILER_ARGS": "-DCMAKE_C_COMPILER=clang.exe -DCMAKE_CXX_COMPILER=clang++.exe", - "FILAMENT_SRC_DIR": "${FLUTTER_WORKSPACE}/app/filament", - "FILAMENT_BUILD_DIR": "${FILAMENT_SRC_DIR}/build/${_BUILD_TYPE}", - "FILAMENT_STAGING_DIR": "${FILAMENT_BUILD_DIR}/staging", - "FILAMENT_CMAKE_ARGS": "-DFILAMENT_SUPPORTS_VULKAN=ON -DFILAMENT_ENABLE_LTO=OFF -DFILAMENT_SUPPORTS_OPENGL=OFF -DFILAMENT_USE_EXTERNAL_GLES3=OFF -DFILAMENT_SUPPORTS_WAYLAND=ON -DFILAMENT_SUPPORTS_X11=OFF -DFILAMENT_SUPPORTS_XCB=OFF -DFILAMENT_SUPPORTS_EGL_ON_LINUX=OFF -DFILAMENT_SKIP_SDL2=ON -DFILAMENT_SKIP_SAMPLES=ON -DFILAMENT_USE_SWIFTSHADER=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_STAGING_PREFIX=\"${FILAMENT_STAGING_DIR}\"" - }, - "src": [ - { - "uri": "https://github.com/google/filament.git", - "branch": "release", - "rev": "v1.60.1" - } - ], - "runtime": { - "pre-requisites": { - "ARM64": { - "windows": { - "cmds": [ - "pip3 install absl-py" - ] - } - }, - "AMD64": { - "windows": { - "cmds": [ - "pip3 install absl-py" - ] - } - } - }, - "post_cmds": [ - { - "cwd": "${FILAMENT_SRC_DIR}", - "cmds": [ - "git reset --hard", - "git apply \"${PATCH_FOLDER}/0001-remove-missing-benchmark-deps.patch\"" - ] - }, - { - "cwd": "${FILAMENT_BUILD_DIR}", - "cmds": [ - "cmake ${COMPILER_ARGS} ${FILAMENT_CMAKE_ARGS} -S \"${FILAMENT_SRC_DIR}\" -B \"${FILAMENT_BUILD_DIR}\"", - "cmake --build . --config ${CMAKE_BUILD_TYPE} --target install" - ] - } - ], - "do_clean": [ - { - "cwd": "${FILAMENT_BUILD_DIR}", - "cmds": [ - "cmake --build . --config ${CMAKE_BUILD_TYPE} --target clean" - ] - } - ] - } -} \ No newline at end of file diff --git a/configs/jolt-physics.json b/configs/jolt-physics.json deleted file mode 100644 index 46ad8516..00000000 --- a/configs/jolt-physics.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "id": "jolt", - "load": false, - "supported_archs": [ - "x86_64" - ], - "supported_host_types": [ - "fedora", - "ubuntu", - "windows" - ], - "type": "dependency", - "env": { - "CC": "${LLVM_BINDIR}/clang", - "CXX": "${LLVM_BINDIR}/clang++", - "PATH": "${LLVM_BINDIR}:${FLUTTER_WORKSPACE}/.config/flutter_workspace/toolchain-common-ninja:${FLUTTER_WORKSPACE}/.config/flutter_workspace/toolchain-common-cmake/bin:$PATH", - "LD_LIBRARY_PATH": "${LLVM_LIBDIR}:${FLUTTER_WORKSPACE}/.config/flutter_workspace/toolchain-common-cmake/lib", - "PATCH_FOLDER": "${FLUTTER_WORKSPACE}/patches", - "JOLT_SRC_DIR": "${FLUTTER_WORKSPACE}/app/JoltPhysics/Build", - "JOLT_BUILD_DIR": "${FLUTTER_WORKSPACE}/app/JoltPhysics/cmake-build/${_BUILD_TYPE}", - "JOLT_STAGING_DIR": "${JOLT_BUILD_DIR}/staging", - "JOLT_CMAKE_ARGS": "-DCMAKE_STAGING_PREFIX=${JOLT_STAGING_DIR} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DTARGET_UNIT_TESTS=OFF -DTARGET_HELLO_WORLD=ON -DTARGET_PERFORMANCE_TEST=ON -DTARGET_SAMPLES=ON -DTARGET_VIEWER=OFF" - }, - "src": [ - { - "uri": "https://github.com/jrouwe/JoltPhysics.git", - "branch": "master", - "rev": "v5.3.0" - } - ], - "runtime": { - "post_cmds": [ - { - "cwd": "${JOLT_BUILD_DIR}", - "cmds": [ - "bash -c \"rm -rf CMakeCache.txt CMakeFiles | true\"", - "cmake -G Ninja -S ${JOLT_SRC_DIR} -B ${JOLT_BUILD_DIR} ${JOLT_CMAKE_ARGS}", - "cmake --build . --config ${CMAKE_BUILD_TYPE} --target install" - ] - } - ], - "do_clean": [ - { - "cwd": "${JOLT_BUILD_DIR}", - "cmds": [ - "cmake --build . --config ${CMAKE_BUILD_TYPE} --target clean" - ] - } - ] - } -} \ No newline at end of file diff --git a/flutter_workspace.py b/flutter_workspace.py index 655a89ab..be25de25 100755 --- a/flutter_workspace.py +++ b/flutter_workspace.py @@ -29,10 +29,12 @@ # import argparse +import glob import io import json import os import platform +import re import shlex import shutil import signal @@ -115,6 +117,7 @@ def main(): parser.add_argument('--plex', default='', type=str, help='Platform Load Excludes') parser.add_argument('--enable', default='', type=str, help='Platform Load Enable Override') parser.add_argument('--disable', default='', type=str, help='Platform Load Disable Override') + parser.add_argument('--remote', default='', type=str, help='Remote Platform Load Git Repo') parser.add_argument('--enable-plugin', default='', type=str, help='Plugin Enable') parser.add_argument('--disable-plugin', default='', type=str, help='Plugin Disable') parser.add_argument('--fastboot', default='', type=str, help='Update the selected platform using fastboot') @@ -223,7 +226,11 @@ def main(): # # Create Workspace # - os.makedirs(workspace, exist_ok=True) + os.makedirs(workspace, exist_ok=True) # + app_folder = os.path.join(workspace, 'app') + if not os.path.exists(app_folder): + os.makedirs(app_folder) + if os.path.exists(workspace): os.environ['FLUTTER_WORKSPACE'] = workspace @@ -236,6 +243,27 @@ def main(): get_flutter_engine_runtime(True, get_flutter_arch()) return + + + # + # Load Remote Platforms + # + + # First, clear linked platforms + configs_dir = os.path.join(os.getcwd(), 'configs') + if os.path.exists(configs_dir): + for filename in sorted(glob.glob(os.path.join(configs_dir, 'remote_*.json'))): + print(f'Unlinking remote config file: {filename}') + os.unlink(filename) + # Setup remote platform + app_folder = os.path.join(workspace, 'app') + if args.remote: + # comma-separated list of git repos + print(f"Loading Remote Platforms from: {args.remote}") + remote_repos = args.remote.split(',') + for repo in remote_repos: + load_remote_platform(repo, app_folder) + # # Limit compiler threads # @@ -316,7 +344,6 @@ def main(): print("Invalid platform configuration") exit(1) - app_folder = os.path.join(workspace, 'app') flutter_sdk_folder = os.path.join(workspace, 'flutter') vscode_folder = os.path.join(workspace, '.vscode') @@ -362,12 +389,8 @@ def main(): return # - # App folder setup + # Get Repos # - is_exist = os.path.exists(app_folder) - if not is_exist: - os.makedirs(app_folder) - get_workspace_repos(app_folder, config) # @@ -731,14 +754,11 @@ def validate_custom_device_config(config): return True -def get_repo(base_folder, uri, branch, rev): +def get_repo(base_folder, uri, ref, branch=None): """ Clone Git Repo """ if not uri: print("repo entry needs a 'uri' key. Skipping") return - if not branch: - print("repo entry needs a 'branch' key. Skipping") - return # get repo folder name repo_name = uri.rsplit('/', 1)[-1] @@ -761,8 +781,14 @@ def get_repo(base_folder, uri, branch, rev): subprocess.check_call(cmd, cwd=git_folder) # print_banner(f'git pull: {repo_name}') - cmd = ['git', 'pull', 'origin', branch] - subprocess.check_call(cmd, cwd=git_folder) + cmd = ['git', 'pull', '--ff-only'] + if branch: + print(f'Using branch: {branch}') + cmd.extend(['origin', branch]) + try: + subprocess.check_call(cmd, cwd=git_folder) + except subprocess.CalledProcessError as e: + print(f"WARNING: git pull failed, continuing anyway") else: # print_banner(f'Checking if folder exists: {git_folder}') if os.path.exists(git_folder): @@ -771,19 +797,21 @@ def get_repo(base_folder, uri, branch, rev): except subprocess.CalledProcessError: pass - # print_banner(f'git clone {uri} -b {branch} {repo_name}') - cmd = ['git', 'clone', uri, '-b', branch, repo_name] + cmd = ['git', 'clone', uri, repo_name] + if branch: + print(f'Using branch: {branch}') + cmd.extend(['-b', branch]) subprocess.check_call(cmd, cwd=base_folder) - if rev: - # print_banner(f'git checkout {rev}') - cmd = ['git', 'checkout', rev] + if ref: + print(f'git checkout {ref}') + cmd = ['git', 'checkout', ref] subprocess.check_call(cmd, cwd=git_folder) - else: - # print_banner(f'git checkout {branch}') + elif branch: + print(f'git checkout {branch}') cmd = ['git', 'checkout', branch] subprocess.check_call(cmd, cwd=git_folder) - + # get lfs git_lfs_file = os.path.join(base_folder, repo_name, '.gitattributes') # print_banner(f'Checking if folder exists: {git_lfs_file}') @@ -803,6 +831,62 @@ def get_repo(base_folder, uri, branch, rev): print_banner(f'Fetched: {repo_name}') +# Load Remote Platforms +# +# For reach --remote= specified on command line +# clone the repo into app/ +# and link the files in app//configs/... to configs/... +# (but make sure not to overwrite existing files, throw error if so) +def load_remote_platform(remote, app_folder): + """ Load Remote Platforms from GIT repo """ + if not remote: + return + + print_banner(f'Loading Remote Platforms from: {remote}') + + remote_parts = remote.split('#') + print(f'remote_parts: {remote_parts}') + # get repo folder name + repo_name = remote_parts[0].rsplit('/', 1) + print(f'repo_name parts: {repo_name}') + repo_name = repo_name[-1] + print(f'repo_name before split: {repo_name}') + repo_name = repo_name.split(".")[0] + print(f'repo_name: {repo_name}') + # get git ref from remote_uri + git_uri = remote_parts[0] + git_ref = remote_parts[1] if len(remote_parts) == 2 else None + + # get branch from ref (if starts with 'heads/) + git_branch = None + if git_ref and git_ref.startswith('heads/'): + git_branch = git_ref.split('heads/', 1)[1] + git_ref = None + + get_repo(base_folder=app_folder, uri=git_uri, ref=git_ref, branch=git_branch) + git_folder = str(os.path.join(app_folder, repo_name)) + + # link files in app//configs/... to configs/... + remote_config_folder = os.path.join(git_folder, 'configs') + if os.path.exists(remote_config_folder): + import glob + for filename in sorted(glob.glob(os.path.join(remote_config_folder, '*.json'))): + + filepath = os.path.join(os.getcwd(), filename) + _, tail = os.path.split(filename) + + # link file as 'configs/remote_' + dest_filepath = os.path.join(os.getcwd(), 'configs', f'remote_{tail}') + + if os.path.exists(dest_filepath): + print(f'Config file already exists! skipping: {dest_filepath}') + else: + print(f'Linking config file: {dest_filepath}') + os.symlink(filepath, dest_filepath) + else: + print(f'No configs folder found in remote platform repo: {remote_config_folder}') + + def get_workspace_repos(base_folder, config): """ Clone GIT repos referenced in config repos dict to base_folder """ import concurrent.futures @@ -816,7 +900,7 @@ def get_workspace_repos(base_folder, config): futures = [] for repo in repos: futures.append(executor.submit(get_repo, base_folder=base_folder, uri=repo.get( - 'uri'), branch=repo.get('branch'), rev=repo.get('rev'))) + 'uri'), ref=repo.get('rev'), branch=repo.get('branch'))) validate_sudo_user() for _ in concurrent.futures.as_completed(futures): @@ -851,7 +935,7 @@ def get_platform_src(src, base_folder: str): futures = [] for repo in src: futures.append(executor.submit(get_repo, base_folder=base_folder, uri=repo.get( - 'uri'), branch=repo.get('branch'), rev=repo.get('rev'))) + 'uri'), ref=repo.get('rev'), branch=repo.get('branch'))) validate_sudo_user() for future in concurrent.futures.as_completed(futures): @@ -1954,34 +2038,63 @@ def handle_dotenv(dotenv_files): print(f'Loaded: {dotenv_path}') -def handle_env(env_variables, local_env, build_type=None): +def handle_env(env_variables, env=None, build_type=None): if not env_variables: return + + if env is None: + env = os.environ + # If k starts with +, append to existing variable for k, v in env_variables.items(): - if local_env: - if 'PATH_PREPEND' in k: - local_env['PATH'] = os.path.normpath(os.path.expandvars(v)) + os.pathsep + local_env['PATH'] - continue - if 'PATH_APPEND' in k: - local_env['PATH'] = local_env['PATH'] + os.pathsep + os.path.normpath(os.path.expandvars(v)) - continue + print(f'Processing env var: {k} = {v}') + + # Append to existing variable if the key starts with + + # (then remove the + from the key) + append = False + if k.startswith('+'): + append = True + k = k[1:] + + # TODO: obsolete? remove in the future + if 'PATH_PREPEND' in k: + env['PATH'] = os.path.normpath(os.path.expandvars(v)) + os.pathsep + env['PATH'] + continue + if 'PATH_APPEND' in k: + env['PATH'] = env['PATH'] + os.pathsep + os.path.normpath(os.path.expandvars(v)) + continue - handle_build_type(local_env, build_type) + handle_build_type(env, build_type) - local_env[k] = os.path.normpath(os.path.expandvars(v)) - else: - if 'PATH_PREPEND' in k: - os.environ['PATH'] = os.path.normpath(os.path.expandvars(v)) + os.pathsep + os.environ['PATH'] - continue - if 'PATH_APPEND' in k: - os.environ['PATH'] = os.environ['PATH'] + os.pathsep + os.path.normpath(os.path.expandvars(v)) + v = os.path.expandvars(v) + if append: + # If append empty string, skip + if k == '': continue - handle_build_type(os.environ, build_type) + # if a separator is specified in the key like `(;)SOMETHING_SOMETHING`, extract it + + # Separator extraction logic: + # sep = between '(' and ')' + # default separator is " " + sep = " " + if k.startswith('(') and ')' in k: + sep = k.split('(')[1].split(')')[0] + k = k.split(')')[1] + + # Append to existing value + old_value = env.get(k, '') + if old_value != '': + v = old_value + sep + v + # skip append if there's no old value + + env[k] = v + + # NOTE: no idea why this is here but it works, DO NOT REMOVE IT (it's been here for 6 months) + if not env is os.environ: + os.environ[k] = v - os.environ[k] = os.path.normpath(os.path.expandvars(v)) - # print(f'global: {k} = {os.environ[k]}') + print(f'Final env var: {k} = {os.environ[k]}') def handle_build_type(env, build_type=None): diff --git a/patches/filament-windows/0001-remove-missing-benchmark-deps.patch b/patches/filament-windows/0001-remove-missing-benchmark-deps.patch deleted file mode 100644 index d72c5097..00000000 --- a/patches/filament-windows/0001-remove-missing-benchmark-deps.patch +++ /dev/null @@ -1,95 +0,0 @@ -From 7c44a633254c9b0cb07a39558c4324eeb43bb8ee Mon Sep 17 00:00:00 2001 -From: Joel Winarske -Date: Tue, 6 May 2025 19:58:41 -0700 -Subject: [PATCH] remove missing benchmark deps - -Signed-off-by: Joel Winarske ---- - CMakeLists.txt | 2 +- - filament/CMakeLists.txt | 1 - - libs/math/CMakeLists.txt | 15 --------------- - libs/utils/CMakeLists.txt | 26 -------------------------- - 4 files changed, 1 insertion(+), 43 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index f9de5b2a5..189c06615 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -766,7 +766,7 @@ add_subdirectory(${EXTERNAL}/civetweb/tnt) - add_subdirectory(${EXTERNAL}/imgui/tnt) - add_subdirectory(${EXTERNAL}/robin-map/tnt) - add_subdirectory(${EXTERNAL}/smol-v/tnt) --add_subdirectory(${EXTERNAL}/benchmark/tnt) -+#add_subdirectory(${EXTERNAL}/benchmark/tnt) - add_subdirectory(${EXTERNAL}/meshoptimizer/tnt) - add_subdirectory(${EXTERNAL}/mikktspace) - add_subdirectory(${EXTERNAL}/cgltf/tnt) -diff --git a/filament/CMakeLists.txt b/filament/CMakeLists.txt -index 9f0364f94..21c1a471d 100644 ---- a/filament/CMakeLists.txt -+++ b/filament/CMakeLists.txt -@@ -660,4 +660,3 @@ install(FILES "../LICENSE" DESTINATION .) - # ================================================================================================== - add_subdirectory(backend) - add_subdirectory(test) --add_subdirectory(benchmark) -diff --git a/libs/math/CMakeLists.txt b/libs/math/CMakeLists.txt -index 838aa2d53..06820f756 100644 ---- a/libs/math/CMakeLists.txt -+++ b/libs/math/CMakeLists.txt -@@ -61,18 +61,3 @@ add_executable(test_${TARGET} - ) - target_link_libraries(test_${TARGET} PRIVATE math gtest) - set_target_properties(test_${TARGET} PROPERTIES FOLDER Tests) -- --# ================================================================================================== --# Benchmarks --# ================================================================================================== -- --set(BENCHMARK_SRCS -- benchmarks/benchmark_fast.cpp include/math/mathfwd.h) -- --add_executable(benchmark_${TARGET} ${BENCHMARK_SRCS}) -- --target_compile_options(benchmark_${TARGET} PRIVATE ${OPTIMIZATION_FLAGS}) -- --target_link_libraries(benchmark_${TARGET} PRIVATE benchmark_main utils math) -- --set_target_properties(benchmark_${TARGET} PROPERTIES FOLDER Benchmarks) -diff --git a/libs/utils/CMakeLists.txt b/libs/utils/CMakeLists.txt -index 72558167b..21f360d8d 100644 ---- a/libs/utils/CMakeLists.txt -+++ b/libs/utils/CMakeLists.txt -@@ -185,29 +185,3 @@ add_executable(test_${TARGET} ${TEST_SRCS}) - - target_link_libraries(test_${TARGET} PRIVATE gtest utils tsl math) - set_target_properties(test_${TARGET} PROPERTIES FOLDER Tests) -- --# ================================================================================================== --# Benchmarks --# ================================================================================================== -- --if (NOT WEBGL) -- -- add_library(benchmark_${TARGET}_callee SHARED benchmark/benchmark_callee.cpp) -- set_target_properties(benchmark_${TARGET}_callee PROPERTIES FOLDER Benchmarks) -- -- set(BENCHMARK_SRCS -- benchmark/benchmark_allocators.cpp -- benchmark/benchmark_binary_search.cpp -- benchmark/benchmark_calls.cpp -- benchmark/benchmark_JobSystem.cpp -- benchmark/benchmark_mutex.cpp -- benchmark/benchmark_memcpy.cpp) -- -- -- add_executable(benchmark_${TARGET} ${BENCHMARK_SRCS}) -- -- target_link_libraries(benchmark_${TARGET} PRIVATE benchmark_main utils benchmark_${TARGET}_callee) -- -- set_target_properties(benchmark_${TARGET} PROPERTIES FOLDER Benchmarks) -- --endif() --- -2.49.0.windows.1 - diff --git a/patches/filament/0001-disable-backend-tests-1.65.2.patch b/patches/filament/0001-disable-backend-tests-1.65.2.patch deleted file mode 100644 index 08aed752..00000000 --- a/patches/filament/0001-disable-backend-tests-1.65.2.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0c4bc86bbfc883db61b585a21d2653ca8514f2f7 Mon Sep 17 00:00:00 2001 -From: Joel Winarske -Date: Fri, 26 Sep 2025 07:13:07 -0700 -Subject: [PATCH] disable backend tests 1.65.2 - -Signed-off-by: Joel Winarske ---- - filament/backend/CMakeLists.txt | 9 --------- - 1 file changed, 9 deletions(-) - -diff --git a/filament/backend/CMakeLists.txt b/filament/backend/CMakeLists.txt -index 989078622..48c1d0a84 100644 ---- a/filament/backend/CMakeLists.txt -+++ b/filament/backend/CMakeLists.txt -@@ -660,15 +660,6 @@ if (APPLE AND NOT IOS) - endif() - endif() - --if (LINUX) -- add_executable(backend_test_linux test/linux_runner.cpp ${BACKEND_TEST_SRC}) -- target_link_libraries(backend_test_linux PRIVATE ${BACKEND_TEST_LIBS}) -- set_target_properties(backend_test_linux PROPERTIES FOLDER Tests) -- if (FILAMENT_SUPPORTS_WEBGPU) -- target_link_libraries(backend_test_linux PRIVATE webgpu_dawn dawncpp_headers) -- endif() --endif() -- - # ================================================================================================== - # Compute tests - # --- -2.51.0 - diff --git a/patches/filament/0002-install-required-files.patch b/patches/filament/0002-install-required-files.patch deleted file mode 100644 index ef6a002f..00000000 --- a/patches/filament/0002-install-required-files.patch +++ /dev/null @@ -1,63 +0,0 @@ -From e7b701237581835e1267c30b3f5ef9cbd5b447c5 Mon Sep 17 00:00:00 2001 -From: Joel Winarske -Date: Sun, 26 Jan 2025 10:42:12 -0800 -Subject: [PATCH 2/5] install required files - -Signed-off-by: Joel Winarske ---- - libs/imageio/CMakeLists.txt | 6 ++++++ - third_party/libpng/tnt/CMakeLists.txt | 2 ++ - third_party/stb/tnt/CMakeLists.txt | 1 + - third_party/tinyexr/tnt/CMakeLists.txt | 5 ++++- - 4 files changed, 13 insertions(+), 1 deletion(-) - -diff --git a/libs/imageio/CMakeLists.txt b/libs/imageio/CMakeLists.txt -index 47544655b..7169da462 100644 ---- a/libs/imageio/CMakeLists.txt -+++ b/libs/imageio/CMakeLists.txt -@@ -44,3 +44,9 @@ endif() - if (NOT MSVC) - target_compile_options(${TARGET} PRIVATE -Wno-deprecated-register) - endif() -+ -+# ================================================================================================== -+# Installation -+# ================================================================================================== -+install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR}) -+install(DIRECTORY ${PUBLIC_HDR_DIR}/imageio DESTINATION include/filament) -diff --git a/third_party/libpng/tnt/CMakeLists.txt b/third_party/libpng/tnt/CMakeLists.txt -index cd5a033f5..4925a0474 100644 ---- a/third_party/libpng/tnt/CMakeLists.txt -+++ b/third_party/libpng/tnt/CMakeLists.txt -@@ -57,3 +57,5 @@ target_link_libraries(${TARGET} PUBLIC z) - # specify where the public headers of this library are - target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR}) - set_target_properties(${TARGET} PROPERTIES FOLDER ThirdParty) -+ -+install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR}) -diff --git a/third_party/stb/tnt/CMakeLists.txt b/third_party/stb/tnt/CMakeLists.txt -index 0c25061c0..563a2604d 100644 ---- a/third_party/stb/tnt/CMakeLists.txt -+++ b/third_party/stb/tnt/CMakeLists.txt -@@ -15,3 +15,4 @@ target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR}) - set_target_properties(${TARGET} PROPERTIES FOLDER ThirdParty) - - install(TARGETS stb ARCHIVE DESTINATION lib/${DIST_DIR}) -+install(FILES ${PUBLIC_HDRS} DESTINATION include/filament) -diff --git a/third_party/tinyexr/tnt/CMakeLists.txt b/third_party/tinyexr/tnt/CMakeLists.txt -index 20955b77b..ffe7cdfe1 100644 ---- a/third_party/tinyexr/tnt/CMakeLists.txt -+++ b/third_party/tinyexr/tnt/CMakeLists.txt -@@ -20,4 +20,7 @@ include_directories(${PUBLIC_HDR_DIR}) - add_library(${TARGET} STATIC ${PUBLIC_HDRS} ${SRCS}) - target_include_directories (${TARGET} PUBLIC ${PUBLIC_HDR_DIR}) - target_link_libraries(${TARGET} LINK_PUBLIC z) --set_target_properties(${TARGET} PROPERTIES FOLDER ThirdParty) -\ No newline at end of file -+set_target_properties(${TARGET} PROPERTIES FOLDER ThirdParty) -+ -+install(FILES ${PUBLIC_HDRS} DESTINATION include/filament) -+install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR}) --- -2.48.1 - diff --git a/patches/filament/0003-move-include-contents-to-include-filament.patch b/patches/filament/0003-move-include-contents-to-include-filament.patch deleted file mode 100644 index 906833ab..00000000 --- a/patches/filament/0003-move-include-contents-to-include-filament.patch +++ /dev/null @@ -1,239 +0,0 @@ -diff --git a/filament/CMakeLists.txt b/filament/CMakeLists.txt -index fae6565..3bbb22b 100644 ---- a/filament/CMakeLists.txt -+++ b/filament/CMakeLists.txt -@@ -651,7 +651,7 @@ target_link_libraries(${TARGET} PRIVATE - # ================================================================================================== - set(INSTALL_TYPE ARCHIVE) - install(TARGETS ${TARGET} ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR}) --install(DIRECTORY ${PUBLIC_HDR_DIR}/filament DESTINATION include) -+install(DIRECTORY ${PUBLIC_HDR_DIR}/filament DESTINATION include/filament) - install(FILES "README.md" DESTINATION .) - install(FILES "../LICENSE" DESTINATION .) - -diff --git a/filament/backend/CMakeLists.txt b/filament/backend/CMakeLists.txt -index 24cc789..4bfd9c5 100644 ---- a/filament/backend/CMakeLists.txt -+++ b/filament/backend/CMakeLists.txt -@@ -493,7 +493,7 @@ target_link_libraries(${TARGET} PRIVATE - set(INSTALL_TYPE ARCHIVE) - install(TARGETS ${TARGET} ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR}) - install(TARGETS vkshaders ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR}) --install(DIRECTORY ${PUBLIC_HDR_DIR}/backend DESTINATION include) -+install(DIRECTORY ${PUBLIC_HDR_DIR}/backend DESTINATION include/filament) - - if (FILAMENT_SUPPORTS_WEBGPU) - install(TARGETS webgpu_dawn ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR}) -diff --git a/libs/camutils/CMakeLists.txt b/libs/camutils/CMakeLists.txt -index 541261c..013cbce 100644 ---- a/libs/camutils/CMakeLists.txt -+++ b/libs/camutils/CMakeLists.txt -@@ -45,7 +45,7 @@ endif() - # Installation - # ================================================================================================== - install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR}) --install(DIRECTORY ${PUBLIC_HDR_DIR}/camutils DESTINATION include) -+install(DIRECTORY ${PUBLIC_HDR_DIR}/camutils DESTINATION include/filament) - - # ================================================================================================== - # Tests -diff --git a/libs/filabridge/CMakeLists.txt b/libs/filabridge/CMakeLists.txt -index 6840ce5..9627713 100644 ---- a/libs/filabridge/CMakeLists.txt -+++ b/libs/filabridge/CMakeLists.txt -@@ -32,5 +32,5 @@ target_link_libraries(${TARGET} backend_headers) - # ================================================================================================== - # Installation - # ================================================================================================== --install(DIRECTORY ${PUBLIC_HDR_DIR}/filament DESTINATION include) -+install(DIRECTORY ${PUBLIC_HDR_DIR}/filament DESTINATION include/filament) - install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR}) -diff --git a/libs/filamat/CMakeLists.txt b/libs/filamat/CMakeLists.txt -index 3d790b0..dd397df 100644 ---- a/libs/filamat/CMakeLists.txt -+++ b/libs/filamat/CMakeLists.txt -@@ -144,7 +144,7 @@ combine_static_libs(filamat "${FILAMAT_COMBINED_OUTPUT}" "${FILAMAT_DEPS}") - - set(FILAMAT_LIB_NAME ${CMAKE_STATIC_LIBRARY_PREFIX}filamat${CMAKE_STATIC_LIBRARY_SUFFIX}) - install(FILES "${FILAMAT_COMBINED_OUTPUT}" DESTINATION lib/${DIST_DIR} RENAME ${FILAMAT_LIB_NAME}) --install(DIRECTORY ${PUBLIC_HDR_DIR}/filamat DESTINATION include) -+install(DIRECTORY ${PUBLIC_HDR_DIR}/filamat DESTINATION include/filament) - - # Need to install libtint for filamat on Android. - # See libs/filamat/CMakeLists.txt and android/filamat-android/CMakeLists.txt. -diff --git a/libs/filameshio/CMakeLists.txt b/libs/filameshio/CMakeLists.txt -index eab3192..7143002 100644 ---- a/libs/filameshio/CMakeLists.txt -+++ b/libs/filameshio/CMakeLists.txt -@@ -32,7 +32,7 @@ target_link_libraries(${TARGET} - # ================================================================================================== - set(INSTALL_TYPE ARCHIVE) - install(TARGETS ${TARGET} ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR}) --install(FILES ${DIST_HDRS} DESTINATION include/${TARGET}) -+install(FILES ${DIST_HDRS} DESTINATION include/filament/${TARGET}) - - # ================================================================================================== - # Tests -diff --git a/libs/geometry/CMakeLists.txt b/libs/geometry/CMakeLists.txt -index a7e8f39..5a5bb88 100644 ---- a/libs/geometry/CMakeLists.txt -+++ b/libs/geometry/CMakeLists.txt -@@ -55,7 +55,7 @@ endif() - # No need to install since we're combining this lib and the dependent libs into a combined lib - # install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR}) - --install(DIRECTORY ${PUBLIC_HDR_DIR}/geometry DESTINATION include) -+install(DIRECTORY ${PUBLIC_HDR_DIR}/geometry DESTINATION include/filament) - - set(COMBINED_DEPS - ${TARGET} -diff --git a/libs/gltfio/CMakeLists.txt b/libs/gltfio/CMakeLists.txt -index 373df1f..de289cf 100644 ---- a/libs/gltfio/CMakeLists.txt -+++ b/libs/gltfio/CMakeLists.txt -@@ -265,5 +265,5 @@ endif() - # ================================================================================================== - - install(TARGETS gltfio_core uberarchive ARCHIVE DESTINATION lib/${DIST_DIR}) --install(DIRECTORY ${PUBLIC_HDR_DIR}/gltfio DESTINATION include) --install(FILES ${RESOURCE_DIR}/materials/uberarchive.h DESTINATION include/gltfio/materials) -+install(DIRECTORY ${PUBLIC_HDR_DIR}/gltfio DESTINATION include/filament) -+install(FILES ${RESOURCE_DIR}/materials/uberarchive.h DESTINATION include/filament/gltfio/materials) -diff --git a/libs/iblprefilter/CMakeLists.txt b/libs/iblprefilter/CMakeLists.txt -index c001de6..62066b3 100644 ---- a/libs/iblprefilter/CMakeLists.txt -+++ b/libs/iblprefilter/CMakeLists.txt -@@ -135,4 +135,4 @@ target_link_libraries(${TARGET} PRIVATE - # ================================================================================================== - set(INSTALL_TYPE ARCHIVE) - install(TARGETS ${TARGET} ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR}) --install(DIRECTORY ${PUBLIC_HDR_DIR}/filament-iblprefilter DESTINATION include) -+install(DIRECTORY ${PUBLIC_HDR_DIR}/filament-iblprefilter DESTINATION include/filament) - - # ================================================================================================== - # Tests -diff --git a/libs/ktxreader/CMakeLists.txt b/libs/ktxreader/CMakeLists.txt -index a9d5714..039ee6a 100644 ---- a/libs/ktxreader/CMakeLists.txt -+++ b/libs/ktxreader/CMakeLists.txt -@@ -41,7 +41,7 @@ endif() - # Installation - # ================================================================================================== - install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR}) --install(DIRECTORY ${PUBLIC_HDR_DIR}/${TARGET} DESTINATION include) -+install(DIRECTORY ${PUBLIC_HDR_DIR}/${TARGET} DESTINATION include/filament) - - # ================================================================================================== - # Tests -diff --git a/libs/math/CMakeLists.txt b/libs/math/CMakeLists.txt -index 838aa2d..4256d66 100644 ---- a/libs/math/CMakeLists.txt -+++ b/libs/math/CMakeLists.txt -@@ -47,7 +47,7 @@ set_target_properties(${TARGET} PROPERTIES FOLDER Libs) - # ================================================================================================== - # Installation - # ================================================================================================== --install(DIRECTORY ${PUBLIC_HDR_DIR}/math DESTINATION include) -+install(DIRECTORY ${PUBLIC_HDR_DIR}/math DESTINATION include/filament) - - # ================================================================================================== - # Tests -diff --git a/libs/mathio/CMakeLists.txt b/libs/mathio/CMakeLists.txt -index 4ad5126..96b5287 100644 ---- a/libs/mathio/CMakeLists.txt -+++ b/libs/mathio/CMakeLists.txt -@@ -27,5 +27,5 @@ target_link_libraries(${TARGET} PRIVATE math) - # ================================================================================================== - # Installation - # ================================================================================================== --install(DIRECTORY ${PUBLIC_HDR_DIR}/mathio DESTINATION include) -+install(DIRECTORY ${PUBLIC_HDR_DIR}/mathio DESTINATION include/filament) - -diff --git a/libs/uberz/CMakeLists.txt b/libs/uberz/CMakeLists.txt -index 47744e2..85569b5 100644 ---- a/libs/uberz/CMakeLists.txt -+++ b/libs/uberz/CMakeLists.txt -@@ -44,4 +44,4 @@ endif() - # Installation - # ================================================================================================== - install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR}) --install(DIRECTORY ${PUBLIC_HDR_DIR}/uberz DESTINATION include) -+install(DIRECTORY ${PUBLIC_HDR_DIR}/uberz DESTINATION include/filament) -diff --git a/libs/utils/CMakeLists.txt b/libs/utils/CMakeLists.txt -index 3af98d0..ebb02e4 100644 ---- a/libs/utils/CMakeLists.txt -+++ b/libs/utils/CMakeLists.txt -@@ -139,11 +139,11 @@ endif() - # ================================================================================================== - set(INSTALL_TYPE ARCHIVE) - install(TARGETS ${TARGET} ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR}) --install(FILES ${DIST_HDRS} DESTINATION include/${TARGET}) -+install(FILES ${DIST_HDRS} DESTINATION include/filament/${TARGET}) - if (ANDROID) -- install(FILES ${DIST_ANDROID_HDRS} DESTINATION include/${TARGET_LINUX}) -+ install(FILES ${DIST_ANDROID_HDRS} DESTINATION include/filament/${TARGET_LINUX}) - else() -- install(FILES ${DIST_GENERIC_HDRS} DESTINATION include/${TARGET_GENERIC}) -+ install(FILES ${DIST_GENERIC_HDRS} DESTINATION include/filament/${TARGET_GENERIC}) - endif() - - # ================================================================================================== -diff --git a/libs/viewer/CMakeLists.txt b/libs/viewer/CMakeLists.txt -index 3b67fde..5e40ef1 100644 ---- a/libs/viewer/CMakeLists.txt -+++ b/libs/viewer/CMakeLists.txt -@@ -54,7 +54,7 @@ endif() - # Installation - # ================================================================================================== - install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR}) --install(DIRECTORY ${PUBLIC_HDR_DIR}/viewer DESTINATION include) -+install(DIRECTORY ${PUBLIC_HDR_DIR}/viewer DESTINATION include/filament) - - # ================================================================================================== - # Tests -diff --git a/third_party/libassimp/contrib/zip/CMakeLists.txt b/third_party/libassimp/contrib/zip/CMakeLists.txt -index b46dbb1..368017a 100644 ---- a/third_party/libassimp/contrib/zip/CMakeLists.txt -+++ b/third_party/libassimp/contrib/zip/CMakeLists.txt -@@ -33,7 +33,7 @@ install(TARGETS ${PROJECT_NAME} - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib - COMPONENT library) --install(FILES ${PROJECT_SOURCE_DIR}/src/zip.h DESTINATION include) -+install(FILES ${PROJECT_SOURCE_DIR}/src/zip.h DESTINATION include/filament) - - # uninstall target (https://gitlab.kitware.com/cmake/community/wikis/FAQ#can-i-do-make-uninstall-with-cmake) - if(NOT TARGET uninstall) -diff --git a/third_party/libsdl2/CMakeLists.txt b/third_party/libsdl2/CMakeLists.txt -index 8f1e828..b1d7cbd 100644 ---- a/third_party/libsdl2/CMakeLists.txt -+++ b/third_party/libsdl2/CMakeLists.txt -@@ -1806,7 +1806,7 @@ foreach(_FNAME ${BIN_INCLUDE_FILES}) - list(REMOVE_ITEM INCLUDE_FILES ${SDL2_SOURCE_DIR}/include/${_INCNAME}) - endforeach() - list(APPEND INCLUDE_FILES ${BIN_INCLUDE_FILES}) --install(FILES ${INCLUDE_FILES} DESTINATION include/SDL2) -+install(FILES ${INCLUDE_FILES} DESTINATION include/filament/SDL2) - - if(NOT (WINDOWS OR CYGWIN)) - if(SDL_SHARED) -diff --git a/third_party/mikktspace/CMakeLists.txt b/third_party/mikktspace/CMakeLists.txt -index 36959ae..6c8fead 100644 ---- a/third_party/mikktspace/CMakeLists.txt -+++ b/third_party/mikktspace/CMakeLists.txt -@@ -26,4 +26,4 @@ endif() - # Installation - # ================================================================================================== - install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR}) --install(DIRECTORY ${PUBLIC_HDR_DIR}/mikktspace DESTINATION include) -+install(DIRECTORY ${PUBLIC_HDR_DIR}/mikktspace DESTINATION include/filament) -diff --git a/third_party/robin-map/tnt/CMakeLists.txt b/third_party/robin-map/tnt/CMakeLists.txt -index 300da52..ef5ef82 100644 ---- a/third_party/robin-map/tnt/CMakeLists.txt -+++ b/third_party/robin-map/tnt/CMakeLists.txt -@@ -27,4 +27,4 @@ set_target_properties(${TARGET} PROPERTIES FOLDER ThirdParty) - # ================================================================================================== - # Installation - # ================================================================================================== --install(FILES ${PUBLIC_HDRS} DESTINATION include/${TARGET}) -+install(FILES ${PUBLIC_HDRS} DESTINATION include/filament/${TARGET}) diff --git a/patches/filament/0004-move-libraries-so-they-install-1.65.2.patch b/patches/filament/0004-move-libraries-so-they-install-1.65.2.patch deleted file mode 100644 index f46a820e..00000000 --- a/patches/filament/0004-move-libraries-so-they-install-1.65.2.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 96ddb443dca9a60a53df5acb6f8553d7526892dc Mon Sep 17 00:00:00 2001 -From: Joel Winarske -Date: Fri, 26 Sep 2025 06:35:12 -0700 -Subject: [PATCH] move libraries so they install - -Signed-off-by: Joel Winarske ---- - CMakeLists.txt | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 15f5f52ac5..015fb9e771 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -808,6 +808,7 @@ add_subdirectory(${LIBRARIES}/gltfio) - add_subdirectory(${LIBRARIES}/ibl) - add_subdirectory(${LIBRARIES}/iblprefilter) - add_subdirectory(${LIBRARIES}/image) -+add_subdirectory(${LIBRARIES}/imageio) - add_subdirectory(${LIBRARIES}/ktxreader) - add_subdirectory(${LIBRARIES}/math) - add_subdirectory(${LIBRARIES}/mathio) -@@ -829,7 +830,10 @@ add_subdirectory(${EXTERNAL}/draco/tnt) - add_subdirectory(${EXTERNAL}/jsmn/tnt) - add_subdirectory(${EXTERNAL}/stb/tnt) - add_subdirectory(${EXTERNAL}/getopt) -+add_subdirectory(${EXTERNAL}/libpng/tnt) - add_subdirectory(${EXTERNAL}/perfetto/tnt) -+add_subdirectory(${EXTERNAL}/tinyexr/tnt) -+add_subdirectory(${EXTERNAL}/libz/tnt) - add_subdirectory(${EXTERNAL}/zstd/tnt) - - # Note that this has to be placed after mikktspace in order for combine_static_libs to work. -@@ -882,16 +886,12 @@ if (IS_HOST_PLATFORM) - if (NOT FILAMENT_SKIP_SDL2) - add_subdirectory(${LIBRARIES}/filamentapp) - endif() -- add_subdirectory(${LIBRARIES}/imageio) - add_subdirectory(${LIBRARIES}/filament-matp) - - add_subdirectory(${FILAMENT}/samples) - - add_subdirectory(${EXTERNAL}/libassimp/tnt) -- add_subdirectory(${EXTERNAL}/libpng/tnt) - add_subdirectory(${EXTERNAL}/libsdl2/tnt) -- add_subdirectory(${EXTERNAL}/libz/tnt) -- add_subdirectory(${EXTERNAL}/tinyexr/tnt) - - add_subdirectory(${TOOLS}/cmgen) - add_subdirectory(${TOOLS}/cso-lut) --- -2.51.0 - diff --git a/patches/filament/0005-spirv-tools-threads.patch b/patches/filament/0005-spirv-tools-threads.patch deleted file mode 100644 index 428ec478..00000000 --- a/patches/filament/0005-spirv-tools-threads.patch +++ /dev/null @@ -1,54 +0,0 @@ -From a06e514a0ace502163b1a1074871303bafa81903 Mon Sep 17 00:00:00 2001 -From: Joel Winarske -Date: Fri, 26 Sep 2025 14:26:07 -0700 -Subject: [PATCH] spirv-tools threads - -Signed-off-by: Joel Winarske ---- - third_party/spirv-tools/CMakeLists.txt | 2 ++ - third_party/spirv-tools/examples/CMakeLists.txt | 2 +- - third_party/spirv-tools/tools/CMakeLists.txt | 2 +- - 3 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/third_party/spirv-tools/CMakeLists.txt b/third_party/spirv-tools/CMakeLists.txt -index affc49ed8..7ce7744c9 100644 ---- a/third_party/spirv-tools/CMakeLists.txt -+++ b/third_party/spirv-tools/CMakeLists.txt -@@ -56,6 +56,8 @@ set(CMAKE_CXX_EXTENSIONS OFF) - option(ENABLE_RTTI "Enables RTTI" OFF) - option(SPIRV_ALLOW_TIMERS "Allow timers via clock_gettime on supported platforms" ON) - -+find_package(Threads) -+ - if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") - set(SPIRV_TIMER_ENABLED ${SPIRV_ALLOW_TIMERS}) - elseif("${CMAKE_SYSTEM_NAME}" MATCHES "Windows") -diff --git a/third_party/spirv-tools/examples/CMakeLists.txt b/third_party/spirv-tools/examples/CMakeLists.txt -index fd627cbda..7c723897b 100644 ---- a/third_party/spirv-tools/examples/CMakeLists.txt -+++ b/third_party/spirv-tools/examples/CMakeLists.txt -@@ -27,7 +27,7 @@ function(add_spvtools_example) - - add_executable(${ARG_TARGET} ${ARG_SRCS}) - spvtools_default_compile_options(${ARG_TARGET}) -- target_link_libraries(${ARG_TARGET} PRIVATE ${ARG_LIBS}) -+ target_link_libraries(${ARG_TARGET} PRIVATE ${ARG_LIBS} ${CMAKE_THREAD_LIBS_INIT}) - set_property(TARGET ${ARG_TARGET} PROPERTY FOLDER "SPIRV-Tools examples") - endif() - endfunction() -diff --git a/third_party/spirv-tools/tools/CMakeLists.txt b/third_party/spirv-tools/tools/CMakeLists.txt -index f5e830f57..8ad87ca32 100644 ---- a/third_party/spirv-tools/tools/CMakeLists.txt -+++ b/third_party/spirv-tools/tools/CMakeLists.txt -@@ -40,7 +40,7 @@ function(add_spvtools_tool) - endif() - - spvtools_default_compile_options(${ARG_TARGET}) -- target_link_libraries(${ARG_TARGET} PRIVATE ${ARG_LIBS}) -+ target_link_libraries(${ARG_TARGET} PRIVATE ${ARG_LIBS} ${CMAKE_THREAD_LIBS_INIT}) - target_include_directories(${ARG_TARGET} PRIVATE - ${spirv-tools_SOURCE_DIR} - ${spirv-tools_BINARY_DIR} --- -2.51.0 - diff --git a/patches/filament/0006-return-shader-type-mobile-for-linux-vulkan.patch b/patches/filament/0006-return-shader-type-mobile-for-linux-vulkan.patch deleted file mode 100644 index eb913fab..00000000 --- a/patches/filament/0006-return-shader-type-mobile-for-linux-vulkan.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 28ed6e3d6b5df4fc6ce9d11cda04144cce67b653 Mon Sep 17 00:00:00 2001 -From: Joel Winarske -Date: Sun, 26 Jan 2025 11:03:15 -0800 -Subject: [PATCH 5/5] return shader type mobile for linux vulkan - -Signed-off-by: Joel Winarske ---- - filament/backend/src/vulkan/VulkanDriver.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/filament/backend/src/vulkan/VulkanDriver.cpp b/filament/backend/src/vulkan/VulkanDriver.cpp -index 520ea22b7..3cb61dd24 100644 ---- a/filament/backend/src/vulkan/VulkanDriver.cpp -+++ b/filament/backend/src/vulkan/VulkanDriver.cpp -@@ -288,7 +288,7 @@ Driver* VulkanDriver::create(VulkanPlatform* platform, VulkanContext const& cont - } - - ShaderModel VulkanDriver::getShaderModel() const noexcept { --#if defined(__ANDROID__) || defined(FILAMENT_IOS) -+#if defined(__ANDROID__) || defined(FILAMENT_IOS) || defined(__linux__) - return ShaderModel::MOBILE; - #else - return ShaderModel::DESKTOP; --- -2.48.1 - diff --git a/patches/filament/ImportExecutables-Release.cmake b/patches/filament/ImportExecutables-Release.cmake deleted file mode 100644 index 9cfde4d4..00000000 --- a/patches/filament/ImportExecutables-Release.cmake +++ /dev/null @@ -1,115 +0,0 @@ -if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8) - message(FATAL_ERROR "CMake >= 2.8.0 required") -endif() -if(CMAKE_VERSION VERSION_LESS "2.8.3") - message(FATAL_ERROR "CMake >= 2.8.3 required") -endif() -cmake_policy(PUSH) -cmake_policy(VERSION 2.8.3...3.25) -#---------------------------------------------------------------- -# Generated CMake target import file. -#---------------------------------------------------------------- - -# Commands may need to know the format version. -set(CMAKE_IMPORT_FILE_VERSION 1) - -# Protect against multiple inclusion, which would fail when already imported targets are added once more. -set(_cmake_targets_defined "") -set(_cmake_targets_not_defined "") -set(_cmake_expected_targets "") -foreach(_cmake_expected_target IN ITEMS matc cmgen filamesh mipgen resgen uberz glslminifier) - list(APPEND _cmake_expected_targets "${_cmake_expected_target}") - if(TARGET "${_cmake_expected_target}") - list(APPEND _cmake_targets_defined "${_cmake_expected_target}") - else() - list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}") - endif() -endforeach() -unset(_cmake_expected_target) -if(_cmake_targets_defined STREQUAL _cmake_expected_targets) - unset(_cmake_targets_defined) - unset(_cmake_targets_not_defined) - unset(_cmake_expected_targets) - unset(CMAKE_IMPORT_FILE_VERSION) - cmake_policy(POP) - return() -endif() -if(NOT _cmake_targets_defined STREQUAL "") - string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}") - string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}") - message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n") -endif() -unset(_cmake_targets_defined) -unset(_cmake_targets_not_defined) -unset(_cmake_expected_targets) - - -# Create imported target matc -add_executable(matc IMPORTED) - -# Create imported target cmgen -add_executable(cmgen IMPORTED) - -# Create imported target filamesh -add_executable(filamesh IMPORTED) - -# Create imported target mipgen -add_executable(mipgen IMPORTED) - -# Create imported target resgen -add_executable(resgen IMPORTED) - -# Create imported target uberz -add_executable(uberz IMPORTED) - -# Create imported target glslminifier -add_executable(glslminifier IMPORTED) - -# Import target "matc" for configuration "Release" -set_property(TARGET matc APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) -set_target_properties(matc PROPERTIES - IMPORTED_LOCATION_RELEASE "${FILAMENT_HOST_TOOLS_ROOT}/matc" - ) - -# Import target "cmgen" for configuration "Release" -set_property(TARGET cmgen APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) -set_target_properties(cmgen PROPERTIES - IMPORTED_LOCATION_RELEASE "${FILAMENT_HOST_TOOLS_ROOT}/cmgen" - ) - -# Import target "filamesh" for configuration "Release" -set_property(TARGET filamesh APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) -set_target_properties(filamesh PROPERTIES - IMPORTED_LOCATION_RELEASE "${FILAMENT_HOST_TOOLS_ROOT}/filamesh" - ) - -# Import target "mipgen" for configuration "Release" -set_property(TARGET mipgen APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) -set_target_properties(mipgen PROPERTIES - IMPORTED_LOCATION_RELEASE "${FILAMENT_HOST_TOOLS_ROOT}/mipgen" - ) - -# Import target "resgen" for configuration "Release" -set_property(TARGET resgen APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) -set_target_properties(resgen PROPERTIES - IMPORTED_LOCATION_RELEASE "${FILAMENT_HOST_TOOLS_ROOT}/resgen" - ) - -# Import target "uberz" for configuration "Release" -set_property(TARGET uberz APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) -set_target_properties(uberz PROPERTIES - IMPORTED_LOCATION_RELEASE "${FILAMENT_HOST_TOOLS_ROOT}/uberz" - ) - -# Import target "glslminifier" for configuration "Release" -set_property(TARGET glslminifier APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) -set_target_properties(glslminifier PROPERTIES - IMPORTED_LOCATION_RELEASE "${FILAMENT_HOST_TOOLS_ROOT}/glslminifier" - ) - -# This file does not depend on other imported targets which have -# been exported from the same project but in a separate export set. - -# Commands beyond this point should not need to know the version. -set(CMAKE_IMPORT_FILE_VERSION) -cmake_policy(POP) \ No newline at end of file