diff options
51 files changed, 1933 insertions, 2484 deletions
diff --git a/.github/parameters/setup-macports.yaml b/.github/parameters/setup-macports.yaml new file mode 100644 index 0000000000..ed8cd40acd --- /dev/null +++ b/.github/parameters/setup-macports.yaml @@ -0,0 +1,25 @@ +# Parameters for melusina-org/setup-macports. +# Listing ports here (rather than in a manual `port install` step) means the +# action installs them and they fall under its built-in installation cache, +# which is keyed on the macOS version + this file. Edit this list and the +# cache invalidates automatically. +# +# NOTE: no +universal variants. MacPorts' own guidance is that universal +# builds are poorly supported on Apple Silicon (apr-util fails to build that +# way). The runner is arm64 and we build the viewer arm64-only, so arm64 +# ports are correct and faster. +version: '2.11.5' +ports: + - name: 'cmake' + - name: 'pkgconfig' + - name: 'freealut' + - name: 'apr-util' + - name: 'boost188' + - name: 'glm' + - name: 'hunspell' + - name: 'freetype' + - name: 'minizip' + - name: 'nghttp2' + - name: 'openjpeg' + - name: 'libvorbis' + - name: 'xxhashlib' diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml new file mode 100644 index 0000000000..d1efde8ce9 --- /dev/null +++ b/.github/workflows/build-macos.yml @@ -0,0 +1,123 @@ +name: macOS Build + +on: + pull_request: + branches: [ main ] + push: + tags: + - 'test/*' + - 'build/*' + - 'v*' + workflow_dispatch: + +permissions: + contents: write + +jobs: + build-macos: + name: macOS (arm64) + runs-on: macos-15 + + steps: + - name: Checkout source + uses: actions/checkout@v5 + + - name: Set up MacPorts (installs cached deps from parameter file) + uses: melusina-org/setup-macports@v1 + with: + parameters: .github/parameters/setup-macports.yaml + + - name: Dump MacPorts logs on failure + if: failure() + shell: bash + run: | + echo "=== searching for MacPorts main.log files ===" + LOGDIR="/opt/local/var/macports/logs" + find "$LOGDIR" -name "main.log" 2>/dev/null | while read -r log; do + echo "" + echo "######################################################" + echo "### $log" + echo "######################################################" + tail -n 80 "$log" + done + + - name: Configure + shell: bash + run: | + SDKPATH="$(xcrun --show-sdk-path)" + export LL_BUILD="-O3 -gdwarf-2 -stdlib=libc++ -mmacosx-version-min=12 -iwithsysroot $SDKPATH -std=c++20 -fPIC -DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -DNDEBUG -DPIC -DLL_DARWIN=1" + + mkdir build-macos && cd build-macos + cmake \ + -DCMAKE_BUILD_TYPE:STRING=Release \ + -DADDRESS_SIZE:STRING=64 \ + -DUSE_OPENAL:BOOL=ON \ + -DUSE_FMODSTUDIO:BOOL=OFF \ + -DENABLE_MEDIA_PLUGINS:BOOL=ON \ + -DLL_TESTS:BOOL=OFF \ + -DNDOF:BOOL=OFF \ + -DROOT_PROJECT_NAME:STRING=Megapahit \ + -DVIEWER_CHANNEL:STRING=Megapahit \ + -DVIEWER_BINARY_NAME:STRING=megapahit \ + -DBUILD_SHARED_LIBS:BOOL=OFF \ + -DINSTALL:BOOL=ON \ + -DPACKAGE:BOOL=OFF \ + -DCMAKE_INSTALL_PREFIX:PATH=newview/Megapahit.app/Contents/Resources \ + -DCMAKE_OSX_ARCHITECTURES:STRING=$(uname -m) \ + -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=12 \ + -DENABLE_SIGNING:BOOL=ON \ + -DSIGNING_IDENTITY:STRING=- \ + ../indra + + - name: Build + shell: bash + run: | + cd build-macos + make -j$(sysctl -n hw.ncpu) + + - name: Install into app bundle + shell: bash + run: | + cd build-macos + make install + + - name: Read version + id: version + shell: bash + run: echo "version=$(cat indra/newview/viewer_version.txt)" >> "$GITHUB_OUTPUT" + + - name: Package .app into a .zip + shell: bash + run: | + cd build-macos/newview + ditto -c -k --keepParent "Megapahit.app" \ + "Megapahit-${{ steps.version.outputs.version }}-macos-$(uname -m).zip" + + - name: Verify signature survived packaging + shell: bash + run: | + cd build-macos/newview + mkdir -p verify-tmp + ditto -x -k Megapahit-*-macos-*.zip verify-tmp/ + codesign --verify --deep --strict --verbose=2 verify-tmp/Megapahit.app || { + echo "Signature verification FAILED" + rm -rf verify-tmp + exit 1 + } + rm -rf verify-tmp + echo "Signature verified intact." + + - name: Upload app artifact + uses: actions/upload-artifact@v6 + with: + name: megapahit-macos-${{ steps.version.outputs.version }} + path: build-macos/newview/Megapahit-*-macos-*.zip + if-no-files-found: error + + - name: Upload to release + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v3 + with: + name: ${{ github.ref_name }} + files: build-macos/newview/Megapahit-*-macos-*.zip + prerelease: ${{ startsWith(github.ref_name, 'test/') || startsWith(github.ref_name, 'build/') }} diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml new file mode 100644 index 0000000000..8be2d33802 --- /dev/null +++ b/.github/workflows/build-windows.yml @@ -0,0 +1,225 @@ +name: Windows Build + +on: + pull_request: + branches: [ main ] + push: + tags: + - 'test/*' + - 'build/*' + - 'v*' + workflow_dispatch: + +permissions: + contents: write + +jobs: + build-windows-x64: + name: Windows x64 + runs-on: windows-2025-vs2026 + + steps: + - name: Set VCPKG_ROOT + shell: bash + run: echo "VCPKG_ROOT=$VCPKG_INSTALLATION_ROOT" >> "$GITHUB_ENV" + + - name: Add MSBuild to PATH + uses: microsoft/setup-msbuild@v3 + + - name: Checkout source + uses: actions/checkout@v5 + + - name: Install vcpkg dependencies (x64) + shell: bash + run: | + vcpkg install \ + python3:x64-windows \ + freealut:x64-windows \ + apr-util:x64-windows \ + boost:x64-windows \ + freetype:x64-windows \ + glm:x64-windows \ + hunspell:x64-windows \ + libjpeg-turbo:x64-windows \ + meshoptimizer:x64-windows \ + minizip:x64-windows \ + nanosvg:x64-windows \ + nghttp2:x64-windows \ + openjpeg:x64-windows \ + libvorbis:x64-windows \ + "libxml2[tools]:x64-windows" \ + xxhash:x64-windows + + - name: Configure (x64) + shell: bash + env: + LL_BUILD: "/MD /O2 /Ob2 /std:c++20 /Zc:wchar_t- /Zi /GR /DLL_RELEASE=1 /DLL_RELEASE_FOR_DOWNLOAD=1 /DNDEBUG /D_SECURE_STL=0 /D_HAS_ITERATOR_DEBUGGING=0 /DWIN32 /D_WINDOWS /DLL_WINDOWS=1 /DUNICODE /D_UNICODE /DWINVER=0x0602 /D_WIN32_WINNT=0x0602" + run: | + export PYTHON="$VCPKG_ROOT/installed/x64-windows/tools/python3/python.exe" + CMAKE_BIN=$(find "$VCPKG_ROOT/downloads/tools" -name "cmake.exe" -path "*/x86_64/*" | head -1) + if [ -z "$CMAKE_BIN" ]; then + CMAKE_BIN=cmake + fi + mkdir build-windows-x86_64 + cd build-windows-x86_64 + "$CMAKE_BIN" \ + -DCMAKE_BUILD_TYPE:STRING=Release \ + -DADDRESS_SIZE:STRING=64 \ + -DUSE_OPENAL:BOOL=ON \ + -DUSE_FMODSTUDIO:BOOL=OFF \ + -DENABLE_MEDIA_PLUGINS:BOOL=ON \ + -DLL_TESTS:BOOL=OFF \ + -DNDOF:BOOL=OFF \ + -DROOT_PROJECT_NAME:STRING=Megapahit \ + -DVIEWER_CHANNEL:STRING=Megapahit \ + -DVIEWER_BINARY_NAME:STRING=Megapahit \ + -DBUILD_SHARED_LIBS:BOOL=OFF \ + -DINSTALL:BOOL=ON \ + -DPACKAGE:BOOL=ON \ + "-DCMAKE_TOOLCHAIN_FILE:FILEPATH=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" \ + -DVS_DISABLE_FATAL_WARNINGS:BOOL=ON \ + ../indra + + - name: Build (x64) + shell: bash + run: | + cd build-windows-x86_64 + MSBuild.exe Megapahit.slnx -p:Configuration=Release -m + + - name: Install NSIS (x64) + shell: pwsh + run: | + choco install nsis --no-progress -y + "C:\Program Files (x86)\NSIS" | Out-File -FilePath $env:GITHUB_PATH -Append + + - name: Package (x64) + shell: bash + run: | + cd build-windows-x86_64 + cpack -G NSIS + + - name: Read version + id: version + shell: bash + run: echo "version=$(cat indra/newview/viewer_version.txt)" >> "$GITHUB_OUTPUT" + + - name: Upload installer artifact (x64) + uses: actions/upload-artifact@v6 + with: + name: megapahit-windows-x64-${{ steps.version.outputs.version }} + path: build-windows-x86_64/Megapahit-*-win64.exe + if-no-files-found: error + + - name: Upload to release (x64) + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v3 + with: + name: ${{ github.ref_name }} + files: build-windows-x86_64/Megapahit-*-win64.exe + prerelease: ${{ startsWith(github.ref_name, 'test/') || startsWith(github.ref_name, 'build/') }} + + build-windows-arm64: + name: Windows arm64 + if: false + runs-on: windows-2022 + + steps: + - name: Set VCPKG_ROOT + shell: bash + run: echo "VCPKG_ROOT=$VCPKG_INSTALLATION_ROOT" >> "$GITHUB_ENV" + + - name: Add MSBuild to PATH + uses: microsoft/setup-msbuild@v3 + + - name: Checkout source + uses: actions/checkout@v5 + + - name: Install vcpkg dependencies (arm64) + shell: bash + run: | + vcpkg install \ + python3:arm64-windows \ + freealut:arm64-windows \ + apr-util:arm64-windows \ + boost:arm64-windows \ + curl:arm64-windows \ + freetype:arm64-windows \ + glm:arm64-windows \ + hunspell:arm64-windows \ + libjpeg-turbo:arm64-windows \ + meshoptimizer:arm64-windows \ + minizip:arm64-windows \ + nanosvg:arm64-windows \ + nghttp2:arm64-windows \ + openjpeg:arm64-windows \ + sse2neon:arm64-windows \ + libvorbis:arm64-windows \ + "libxml2[tools]:arm64-windows" \ + xxhash:arm64-windows + vcpkg install boost-fiber:arm64-windows --allow-unsupported || true + + - name: Configure (arm64) + shell: bash + env: + LL_BUILD: "/MD /O2 /Ob2 /std:c++20 /Zc:wchar_t- /Zi /GR /DLL_RELEASE=1 /DLL_RELEASE_FOR_DOWNLOAD=1 /DNDEBUG /D_SECURE_STL=0 /D_HAS_ITERATOR_DEBUGGING=0 /DWIN32 /D_WINDOWS /DLL_WINDOWS=1 /DUNICODE /D_UNICODE /DWINVER=0x0602 /D_WIN32_WINNT=0x0602 /Zc:preprocessor" + run: | + export PYTHON="$VCPKG_ROOT/installed/arm64-windows/tools/python3/python.exe" + CMAKE_BIN=$(find "$VCPKG_ROOT/downloads/tools" -name "cmake.exe" -path "*/arm64/*" | head -1) + if [ -z "$CMAKE_BIN" ]; then + CMAKE_BIN=$(find "$VCPKG_ROOT/downloads/tools" -name "cmake.exe" | head -1) + fi + if [ -z "$CMAKE_BIN" ]; then + CMAKE_BIN=cmake + fi + mkdir build-windows-aarch64 + cd build-windows-aarch64 + "$CMAKE_BIN" \ + -DCMAKE_BUILD_TYPE:STRING=Release \ + -DADDRESS_SIZE:STRING=64 \ + -DUSE_OPENAL:BOOL=ON \ + -DUSE_FMODSTUDIO:BOOL=OFF \ + -DENABLE_MEDIA_PLUGINS:BOOL=OFF \ + -DLL_TESTS:BOOL=OFF \ + -DNDOF:BOOL=OFF \ + -DROOT_PROJECT_NAME:STRING=Megapahit \ + -DVIEWER_CHANNEL:STRING=Megapahit \ + -DVIEWER_BINARY_NAME:STRING=Megapahit \ + -DBUILD_SHARED_LIBS:BOOL=OFF \ + -DINSTALL:BOOL=ON \ + -DPACKAGE:BOOL=ON \ + "-DCMAKE_TOOLCHAIN_FILE:FILEPATH=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" \ + -DVCPKG_TARGET_TRIPLET:STRING=arm64-windows \ + -DVS_DISABLE_FATAL_WARNINGS:BOOL=ON \ + ../indra + + - name: Build (arm64) + shell: bash + run: | + cd build-windows-aarch64 + MSBuild.exe Megapahit.slnx -p:Configuration=Release -m + + - name: Package (arm64) + shell: bash + run: | + cd build-windows-aarch64 + cpack -G NSIS + + - name: Read version + id: version + shell: bash + run: echo "version=$(cat indra/newview/viewer_version.txt)" >> "$GITHUB_OUTPUT" + + - name: Upload installer artifact (arm64) + uses: actions/upload-artifact@v6 + with: + name: megapahit-windows-arm64-${{ steps.version.outputs.version }} + path: build-windows-aarch64/Megapahit-*-win64.exe + if-no-files-found: error + + - name: Upload to release (arm64) + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v3 + with: + name: ${{ github.ref_name }} + files: build-windows-aarch64/Megapahit-*-win64.exe + prerelease: ${{ startsWith(github.ref_name, 'test/') || startsWith(github.ref_name, 'build/') }} diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml deleted file mode 100644 index 84c05dacdf..0000000000 --- a/.github/workflows/build.yaml +++ /dev/null @@ -1,530 +0,0 @@ -name: Build - -on: - workflow_dispatch: - inputs: - installer_type: - description: 'Windows installer type' - type: choice - options: - - velopack - - nsis - default: 'velopack' - pull_request: - push: - branches: ["main", "release/*", "project/*"] - tags: ["Second_Life*"] - -jobs: - # The whole point of the setup job is that we want to set variables once - # that will be consumed by multiple subsequent jobs. - setup: - runs-on: ubuntu-latest - outputs: - release_run: ${{ steps.setvar.outputs.release_run }} - configurations: ${{ steps.setvar.outputs.configurations }} - bugsplat_db: ${{ steps.setvar.outputs.bugsplat_db }} - env: - # Build with a tag like "Second_Life#abcdef0" to generate a release page - # (used for builds we are planning to deploy). - # When you want to use a string variable as a workflow YAML boolean, it's - # important to ensure it's the empty string when false. If you omit || '', - # its value when false is "false", which is interpreted as true. - RELEASE_RUN: ${{ (github.event.inputs.release_run || github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life')) && 'Y' || '' }} - FROM_FORK: ${{ github.event.pull_request.head.repo.fork }} - steps: - - name: Set Variables - id: setvar - shell: bash - run: | - echo "release_run=$RELEASE_RUN" >> "$GITHUB_OUTPUT" - - if [[ "$FROM_FORK" == "true" ]]; then - # PR from fork; don't build with Bugsplat, proprietary libs - echo 'configurations=["ReleaseOS"]' >> $GITHUB_OUTPUT - echo "bugsplat_db=" >> $GITHUB_OUTPUT - else - echo 'configurations=["Release"]' >> $GITHUB_OUTPUT - echo "bugsplat_db=SecondLife_Viewer_2018" >> $GITHUB_OUTPUT - fi - build: - needs: setup - strategy: - matrix: - runner: ${{ fromJson((github.ref_type == 'tag' && startsWith(github.ref, 'refs/tags/Second_Life')) && '["windows-large","macos-15-xlarge"]' || '["windows-2022","macos-15-xlarge"]') }} - configuration: ${{ fromJson(needs.setup.outputs.configurations) }} - runs-on: ${{ matrix.runner }} - outputs: - viewer_channel: ${{ steps.build.outputs.viewer_channel }} - viewer_version: ${{ steps.build.outputs.viewer_version }} - viewer_branch: ${{ steps.which-branch.outputs.branch }} - relnotes: ${{ steps.which-branch.outputs.relnotes }} - imagename: ${{ steps.build.outputs.imagename }} - configuration: ${{ matrix.configuration }} - # Windows Velopack outputs (passed to sign-pkg-windows) - velopack_pack_id: ${{ steps.build.outputs.velopack_pack_id }} - velopack_pack_version: ${{ steps.build.outputs.velopack_pack_version }} - velopack_pack_title: ${{ steps.build.outputs.velopack_pack_title }} - velopack_main_exe: ${{ steps.build.outputs.velopack_main_exe }} - velopack_exclude: ${{ steps.build.outputs.velopack_exclude }} - velopack_icon: ${{ steps.build.outputs.velopack_icon }} - velopack_installer_base: ${{ steps.build.outputs.velopack_installer_base }} - # macOS Velopack outputs (passed to sign-pkg-mac) - velopack_mac_pack_id: ${{ steps.build.outputs.velopack_mac_pack_id }} - velopack_mac_pack_version: ${{ steps.build.outputs.velopack_mac_pack_version }} - velopack_mac_pack_title: ${{ steps.build.outputs.velopack_mac_pack_title }} - velopack_mac_main_exe: ${{ steps.build.outputs.velopack_mac_main_exe }} - velopack_mac_bundle_id: ${{ steps.build.outputs.velopack_mac_bundle_id }} - env: - AUTOBUILD_ADDRSIZE: 64 - AUTOBUILD_BUILD_ID: ${{ github.run_id }} - AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }} - # authorizes fetching private constituent packages - AUTOBUILD_GITHUB_TOKEN: ${{ secrets.SHARED_AUTOBUILD_GITHUB_TOKEN }} - AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables - AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables - # Direct autobuild to store vcs_url, vcs_branch and vcs_revision in - # autobuild-package.xml. - AUTOBUILD_VCS_INFO: "true" - AUTOBUILD_VSVER: "170" - DEVELOPER_DIR: "/Applications/Xcode_16.4.app/Contents/Developer" - # Ensure that Linden viewer builds engage Bugsplat. - BUGSPLAT_DB: ${{ needs.setup.outputs.bugsplat_db }} - build_coverity: false - build_log_dir: ${{ github.workspace }}/.logs - build_viewer: true - BUILDSCRIPTS_SHARED: ${{ github.workspace }}/.shared - # extracted and committed to viewer repo - BUILDSCRIPTS_SUPPORT_FUNCTIONS: ${{ github.workspace }}/buildscripts_support_functions - GIT_REF: ${{ github.head_ref || github.ref }} - LL_SKIP_REQUIRE_SYSROOT: 1 - # Setting this variable directs Linden's TUT test driver code to capture - # test-program log output at the specified level, but to display it only if - # the individual test fails. - LOGFAIL: DEBUG - master_message_template_checkout: ${{ github.workspace }}/.master-message-template - # Only set variants to the one configuration: don't let build.sh loop - # over variants, let GitHub distribute variants over multiple hosts. - variants: ${{ matrix.configuration }} - # Pass USE_VELOPACK to CMake when using Velopack installer (default) - Windows and macOS - autobuild_configure_parameters: ${{ (contains(matrix.runner, 'windows') || contains(matrix.runner, 'macos')) && (github.event.inputs.installer_type || 'velopack') == 'velopack' && '-- -DUSE_VELOPACK:BOOL=ON' || '' }} - steps: - - name: Checkout code - uses: actions/checkout@v6 - with: - ref: ${{ github.event.pull_request.head.sha || github.sha }} - - - name: Setup python - uses: actions/setup-python@v6 - with: - python-version: "3.11" - - name: Checkout build variables - uses: actions/checkout@v6 - with: - repository: secondlife/build-variables - ref: master - path: .build-variables - - - name: Checkout master-message-template - uses: actions/checkout@v6 - with: - repository: secondlife/master-message-template - path: .master-message-template - - - name: Install autobuild and python dependencies - run: pip3 install autobuild llsd - - - name: Cache autobuild packages - id: cache-installables - uses: actions/cache@v5 - with: - path: .autobuild-installables - key: ${{ runner.os }}-64-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} - restore-keys: | - ${{ runner.os }}-64-${{ matrix.configuration }}- - ${{ runner.os }}-64- - - - name: Determine source branch - id: which-branch - uses: secondlife/viewer-build-util/which-branch@v2 - with: - token: ${{ github.token }} - - - name: Setup .NET for Velopack - if: (runner.os == 'Windows' || runner.os == 'macOS') && (github.event.inputs.installer_type || 'velopack') == 'velopack' - uses: actions/setup-dotnet@v4 - with: - dotnet-version: '9.0.x' - - - name: Install Velopack CLI - if: (runner.os == 'Windows' || runner.os == 'macOS') && (github.event.inputs.installer_type || 'velopack') == 'velopack' - shell: bash - run: dotnet tool install -g vpk - - - name: Build - id: build - shell: bash - env: - AUTOBUILD_VCS_BRANCH: ${{ steps.which-branch.outputs.branch }} - RUNNER_OS: ${{ runner.os }} - run: | - # set up things the viewer's build.sh script expects - set -x - mkdir -p "$build_log_dir" - mkdir -p "$BUILDSCRIPTS_SHARED/packages/lib/python" - source "$BUILDSCRIPTS_SUPPORT_FUNCTIONS" - if [[ "$OSTYPE" =~ cygwin|msys ]] - then - native_path() { cygpath --windows "$1"; } - shell_path() { cygpath --unix "$1"; } - else - native_path() { echo "$1"; } - shell_path() { echo "$1"; } - fi - finalize() - { - case "$1" in - true|0) - record_success "Build Succeeded" - ;; - *) - record_failure "Build Failed with $1" - ;; - esac - } - initialize_build() - { - echo "initialize_build" - } - initialize_version() - { - export revision="$AUTOBUILD_BUILD_ID" - } - python_cmd() - { - if [[ "x${1:0:1}" == "x-" ]] # -m, -c, etc. - then # if $1 is a switch, don't try to twiddle paths - "$(shell_path "$PYTHON_COMMAND")" "$@" - elif [[ "$(basename "$1")" == "codeticket.py" ]] - then # ignore any attempt to contact codeticket - echo "## $@" - else # running a script at an explicit path: fix path for Python - local script="$1" - shift - "$(shell_path "$PYTHON_COMMAND")" "$(native_path "$script")" "$@" - fi - } - repo_branch() - { - echo "$AUTOBUILD_VCS_BRANCH" - } - record_dependencies_graph() - { - echo "TODO: generate and post dependency graph" - } - # Since we're not uploading to codeticket, DO NOT sleep for minutes. - sleep() - { - echo "Not sleeping for $1 seconds" - } - export -f native_path shell_path finalize initialize_build initialize_version - export -f python_cmd repo_branch record_dependencies_graph sleep - ## Useful for diagnosing Windows LLProcess/LLLeap test failures - ##export APR_LOG="${RUNNER_TEMP}/apr.log" - export arch=$(uname | cut -b-6) - # Surprise! GH Windows runner's MINGW6 is a $arch value we've never - # seen before, so numerous tests don't know about it. - [[ "$arch" == "MINGW6" ]] && arch=CYGWIN - export AUTOBUILD="$(which autobuild)" - - # determine the viewer channel from the branch or tag name - # trigger an EDU build by including "edu" in the tag - edu=${{ github.ref_type == 'tag' && contains(github.ref_name, 'edu') }} - echo "ref_type=${{ github.ref_type }}, ref_name=${{ github.ref_name }}, edu='$edu'" - branch=$AUTOBUILD_VCS_BRANCH - if [[ "$edu" == "true" ]] - then - export viewer_channel="Second Life Release edu" - elif [[ "$branch" == "develop" ]]; - then - export viewer_channel="Second Life Develop" - else - IFS='/' read -ra ba <<< "$branch" - prefix=${ba[0]} - if [ "$prefix" == "project" ]; then - IFS='_' read -ra prj <<< "${ba[1]}" - prj_str="${prj[*]}" - # uppercase first letter of each word - capitalized=$(echo "$prj_str" | awk '{for (i=1; i<=NF; i++) $i = toupper(substr($i,1,1)) substr($i,2); print}') - export viewer_channel="Second Life Project $capitalized" - elif [[ "$prefix" == "release" || "$prefix" == "main" ]]; - then - export viewer_channel="Second Life Release" - else - export viewer_channel="Second Life Test" - fi - fi - echo "viewer_channel=$viewer_channel" - echo "viewer_channel=$viewer_channel" >> "$GITHUB_OUTPUT" - # On windows we need to point the build to the correct python - # as neither CMake's FindPython nor our custom Python.cmake module - # will resolve the correct interpreter location. - if [[ "$RUNNER_OS" == "Windows" ]]; then - export PYTHON="$(native_path "$(which python)")" - echo "Python location: $PYTHON" - export PYTHON_COMMAND="$PYTHON" - else - export PYTHON_COMMAND="python3" - fi - export PYTHON_COMMAND_NATIVE="$(native_path "$PYTHON_COMMAND")" - - ./build.sh - - # Each artifact is downloaded as a distinct .zip file. Multiple jobs - # (per the matrix above) writing the same filepath to the same - # artifact name will *overwrite* that file. Moreover, they can - # interfere with each other, causing the upload to fail. - # https://github.com/actions/upload-artifact#uploading-to-the-same-artifact - # Given the size of our installers, and the fact that we typically - # only want to download just one instead of a single zip containing - # several, generate a distinct artifact name for each installer. - # If the matrix above can run multiple builds on the same - # platform, we must disambiguate on more than the platform name. - # e.g. if we were still running Windows 32-bit builds, we'd need to - # qualify the artifact with bit width. - if [[ "$AUTOBUILD_CONFIGURATION" == "ReleaseOS" ]] - then cfg_suffix='OS' - else cfg_suffix='' - fi - echo "artifact=$RUNNER_OS$cfg_suffix" >> $GITHUB_OUTPUT - - - name: Upload executable - if: steps.build.outputs.viewer_app - uses: actions/upload-artifact@v6 - with: - name: "${{ steps.build.outputs.artifact }}-app" - path: | - ${{ steps.build.outputs.viewer_app }} - - # The other upload of nontrivial size is the symbol file. Use a distinct - # artifact for that too. - - name: Upload symbol file - if: steps.build.outputs.symbolfile - uses: actions/upload-artifact@v6 - with: - name: "${{ steps.build.outputs.artifact }}-symbols" - path: ${{ steps.build.outputs.symbolfile }} - - - name: Upload metadata - uses: actions/upload-artifact@v6 - with: - name: "${{ steps.build.outputs.artifact }}-metadata" - # emitted by build.sh, possibly multiple lines - path: | - ${{ steps.build.outputs.metadata }} - - - name: Upload physics package - uses: actions/upload-artifact@v6 - # should only be set for viewer-private - if: matrix.configuration == 'Release' && steps.build.outputs.physicstpv - with: - name: "${{ steps.build.outputs.artifact }}-physics" - # emitted by build.sh, zero or one lines - path: | - ${{ steps.build.outputs.physicstpv }} - - sign-and-package-windows: - env: - AZURE_KEY_VAULT_URI: ${{ secrets.AZURE_KEY_VAULT_URI }} - AZURE_CERT_NAME: ${{ secrets.AZURE_CERT_NAME }} - AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} - AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} - AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} - needs: build - runs-on: windows-2022 - steps: - - name: Sign and package Windows viewer - if: env.AZURE_KEY_VAULT_URI && env.AZURE_CERT_NAME && env.AZURE_CLIENT_ID && env.AZURE_CLIENT_SECRET && env.AZURE_TENANT_ID - uses: secondlife/viewer-build-util/sign-pkg-windows@v2.1.0 - with: - vault_uri: "${{ env.AZURE_KEY_VAULT_URI }}" - cert_name: "${{ env.AZURE_CERT_NAME }}" - client_id: "${{ env.AZURE_CLIENT_ID }}" - client_secret: "${{ env.AZURE_CLIENT_SECRET }}" - tenant_id: "${{ env.AZURE_TENANT_ID }}" - installer_type: "${{ github.event.inputs.installer_type || 'velopack' }}" - velopack_pack_id: "${{ needs.build.outputs.velopack_pack_id }}" - velopack_pack_version: "${{ needs.build.outputs.velopack_pack_version }}" - velopack_pack_title: "${{ needs.build.outputs.velopack_pack_title }}" - velopack_main_exe: "${{ needs.build.outputs.velopack_main_exe }}" - velopack_exclude: "${{ needs.build.outputs.velopack_exclude }}" - velopack_icon: "${{ needs.build.outputs.velopack_icon }}" - velopack_installer_base: "${{ needs.build.outputs.velopack_installer_base }}" - - sign-and-package-mac: - env: - NOTARIZE_CREDS_MACOS: ${{ secrets.NOTARIZE_CREDS_MACOS }} - SIGNING_CERT_MACOS: ${{ secrets.SIGNING_CERT_MACOS }} - SIGNING_CERT_MACOS_IDENTITY: ${{ secrets.SIGNING_CERT_MACOS_IDENTITY }} - SIGNING_CERT_MACOS_PASSWORD: ${{ secrets.SIGNING_CERT_MACOS_PASSWORD }} - needs: build - runs-on: macos-latest - steps: - - name: Unpack Mac notarization credentials - if: env.NOTARIZE_CREDS_MACOS - id: note-creds - shell: bash - run: | - # In NOTARIZE_CREDS_MACOS we expect to find: - # USERNAME="..." - # PASSWORD="..." - # TEAM_ID="..." - eval "${{ env.NOTARIZE_CREDS_MACOS }}" - echo "::add-mask::$USERNAME" - echo "::add-mask::$PASSWORD" - echo "::add-mask::$TEAM_ID" - echo "note_user=$USERNAME" >> "$GITHUB_OUTPUT" - echo "note_pass=$PASSWORD" >> "$GITHUB_OUTPUT" - echo "note_team=$TEAM_ID" >> "$GITHUB_OUTPUT" - # If we didn't manage to retrieve all of these credentials, better - # find out sooner than later. - [[ -n "$USERNAME" && -n "$PASSWORD" && -n "$TEAM_ID" ]] - - - name: Sign and package Mac viewer - if: env.SIGNING_CERT_MACOS && env.SIGNING_CERT_MACOS_IDENTITY && env.SIGNING_CERT_MACOS_PASSWORD && steps.note-creds.outputs.note_user && steps.note-creds.outputs.note_pass && steps.note-creds.outputs.note_team - uses: secondlife/viewer-build-util/sign-pkg-mac@v2.1.0 - with: - channel: ${{ needs.build.outputs.viewer_channel }} - imagename: ${{ needs.build.outputs.imagename }} - cert_base64: ${{ env.SIGNING_CERT_MACOS }} - cert_name: ${{ env.SIGNING_CERT_MACOS_IDENTITY }} - cert_pass: ${{ env.SIGNING_CERT_MACOS_PASSWORD }} - note_user: ${{ steps.note-creds.outputs.note_user }} - note_pass: ${{ steps.note-creds.outputs.note_pass }} - note_team: ${{ steps.note-creds.outputs.note_team }} - velopack_pack_id: "${{ needs.build.outputs.velopack_mac_pack_id }}" - velopack_pack_version: "${{ needs.build.outputs.velopack_mac_pack_version }}" - velopack_pack_title: "${{ needs.build.outputs.velopack_mac_pack_title }}" - velopack_main_exe: "${{ needs.build.outputs.velopack_mac_main_exe }}" - velopack_bundle_id: "${{ needs.build.outputs.velopack_mac_bundle_id }}" - - post-windows-symbols: - env: - BUGSPLAT_DATABASE: "${{ secrets.BUGSPLAT_DATABASE }}" - SYMBOL_UPLOAD_CLIENT_ID: "${{ secrets.BUGSPLAT_SYMBOL_UPLOAD_CLIENT_ID }}" - SYMBOL_UPLOAD_CLIENT_SECRET: "${{ secrets.BUGSPLAT_SYMBOL_UPLOAD_CLIENT_SECRET }}" - needs: build - if: needs.build.outputs.configuration == 'Release' - runs-on: ubuntu-latest - steps: - - name: Download viewer exe - uses: actions/download-artifact@v7 - with: - name: Windows-app - path: _artifacts - - name: Download Windows Symbols - if: env.BUGSPLAT_DATABASE && env.SYMBOL_UPLOAD_CLIENT_ID - uses: actions/download-artifact@v7 - with: - name: Windows-symbols - - name: Extract viewer pdb - if: env.BUGSPLAT_DATABASE && env.SYMBOL_UPLOAD_CLIENT_ID - shell: bash - run: | - tar -xJf "${{ needs.build.outputs.viewer_channel }}.sym.tar.xz" -C _artifacts - - name: Post Windows symbols - if: env.BUGSPLAT_DATABASE && env.SYMBOL_UPLOAD_CLIENT_ID - uses: BugSplat-Git/symbol-upload@095d163ae9ceb006d286a731dcd35cf6a1b458c8 - with: - clientId: "${{ env.SYMBOL_UPLOAD_CLIENT_ID }}" - clientSecret: "${{ env.SYMBOL_UPLOAD_CLIENT_SECRET }}" - database: "${{ env.BUGSPLAT_DATABASE }}" - application: ${{ needs.build.outputs.viewer_channel }} - version: ${{ needs.build.outputs.viewer_version }} - directory: _artifacts - files: "**/{SecondLifeViewer.exe,llwebrtc.dll,*.pdb}" - node-version: "22" - dumpSyms: false - - post-mac-symbols: - env: - BUGSPLAT_DATABASE: "${{ secrets.BUGSPLAT_DATABASE }}" - SYMBOL_UPLOAD_CLIENT_ID: "${{ secrets.BUGSPLAT_SYMBOL_UPLOAD_CLIENT_ID }}" - SYMBOL_UPLOAD_CLIENT_SECRET: "${{ secrets.BUGSPLAT_SYMBOL_UPLOAD_CLIENT_SECRET }}" - needs: build - if: needs.build.outputs.configuration == 'Release' - runs-on: ubuntu-latest - steps: - - name: Download Mac Symbols - if: env.BUGSPLAT_DATABASE && env.SYMBOL_UPLOAD_CLIENT_ID - uses: actions/download-artifact@v7 - with: - name: macOS-symbols - - name: Post Mac symbols - if: env.BUGSPLAT_DATABASE && env.SYMBOL_UPLOAD_CLIENT_ID - uses: BugSplat-Git/symbol-upload@095d163ae9ceb006d286a731dcd35cf6a1b458c8 - with: - clientId: "${{ env.SYMBOL_UPLOAD_CLIENT_ID }}" - clientSecret: "${{ env.SYMBOL_UPLOAD_CLIENT_SECRET }}" - database: "${{ env.BUGSPLAT_DATABASE }}" - application: ${{ needs.build.outputs.viewer_channel }} - version: ${{ needs.build.outputs.viewer_version }} (${{ needs.build.outputs.viewer_version }}) - directory: . - files: "**/*.xcarchive.zip" - node-version: "22" - dumpSyms: false - - release: - needs: [setup, build, sign-and-package-windows, sign-and-package-mac] - runs-on: ubuntu-latest - if: needs.setup.outputs.release_run - steps: - - uses: actions/download-artifact@v7 - with: - pattern: "*-installer" - - - uses: actions/download-artifact@v7 - with: - pattern: "*-metadata" - - - uses: actions/download-artifact@v4 - with: - pattern: "*-releases" - - - name: Rename metadata - run: | - cp Windows-metadata/autobuild-package.xml Windows-autobuild-package.xml - cp Windows-metadata/newview/viewer_version.txt Windows-viewer_version.txt - cp macOS-metadata/autobuild-package.xml macOS-autobuild-package.xml - cp macOS-metadata/newview/viewer_version.txt macOS-viewer_version.txt - - # forked from softprops/action-gh-release - - name: Create GitHub release - id: release - uses: secondlife-3p/action-gh-release@v1 - with: - # name the release page for the branch - name: "${{ needs.build.outputs.viewer_branch }}" - # SL-20546: want the channel and version to be visible on the - # release page - body: | - Build ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} - ${{ needs.build.outputs.viewer_channel }} - ${{ needs.build.outputs.viewer_version }} - ${{ needs.build.outputs.relnotes }} - prerelease: true - generate_release_notes: true - target_commitish: ${{ github.sha }} - append_body: true - fail_on_unmatched_files: false - files: | - macOS-installer/*.dmg - Windows-installer/*.exe - *-autobuild-package.xml - *-viewer_version.txt - Windows-releases/* - macOS-releases/* - - - name: post release URL - run: | - echo "::notice::Release ${{ steps.release.outputs.url }}" diff --git a/.github/workflows/check-pr.yaml b/.github/workflows/check-pr.yaml deleted file mode 100644 index 08e907e83f..0000000000 --- a/.github/workflows/check-pr.yaml +++ /dev/null @@ -1,21 +0,0 @@ -name: Check PR - -on: - pull_request: - types: [opened, edited, reopened, synchronize] - -permissions: - contents: read - -jobs: - check-description: - runs-on: ubuntu-latest - steps: - - name: Check PR description - uses: actions/github-script@v8 - with: - script: | - const description = context.payload.pull_request.body || ''; - if (description.trim().length < 20) { - core.setFailed("❌ PR description is too short. Please provide at least 20 characters."); - } diff --git a/.github/workflows/cla.yaml b/.github/workflows/cla.yaml deleted file mode 100644 index 800f3c42d1..0000000000 --- a/.github/workflows/cla.yaml +++ /dev/null @@ -1,26 +0,0 @@ -name: Check CLA - -on: - issue_comment: - types: [created] - pull_request_target: - types: [opened, closed, synchronize] - -jobs: - cla: - name: Check CLA - runs-on: ubuntu-latest - steps: - - name: CLA Assistant - if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target' - uses: secondlife-3p/contributor-assistant@v2.6.1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - PERSONAL_ACCESS_TOKEN: ${{ secrets.SHARED_CLA_TOKEN }} - with: - branch: main - path-to-document: https://github.com/secondlife/cla/blob/main/CLA.md - path-to-signatures: signatures.json - remote-organization-name: secondlife - remote-repository-name: cla-signatures - allowlist: callum@mbp.localdomain,rye@lindenlab.com,rye,signal@lindenlab.com,dependabot*,bot* diff --git a/.github/workflows/label.yaml b/.github/workflows/label.yaml deleted file mode 100644 index 218327ef47..0000000000 --- a/.github/workflows/label.yaml +++ /dev/null @@ -1,15 +0,0 @@ -name: Pull Request Labeler -on: - - pull_request_target - -jobs: - triage: - permissions: - contents: read - pull-requests: write - runs-on: ubuntu-latest - steps: - - uses: actions/labeler@v6 - with: - configuration-path: .github/labeler.yaml - repo-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/pre-commit.yaml b/.github/workflows/pre-commit.yaml deleted file mode 100644 index 93bcafdea8..0000000000 --- a/.github/workflows/pre-commit.yaml +++ /dev/null @@ -1,18 +0,0 @@ -name: pre-commit - -on: - pull_request: - push: - branches: [main, contribute] - tags: [v*] - - -jobs: - pre-commit: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - - uses: actions/setup-python@v6 - with: - python-version: 3.x - - uses: pre-commit/action@v3.0.1 diff --git a/.github/workflows/qatest.yaml b/.github/workflows/qatest.yaml deleted file mode 100644 index b6883d88d4..0000000000 --- a/.github/workflows/qatest.yaml +++ /dev/null @@ -1,610 +0,0 @@ -name: Run QA Test # Runs automated tests on self-hosted QA machines - -permissions: - contents: read - -on: - workflow_run: - workflows: ["Build"] - types: - - completed - workflow_dispatch: - inputs: - build_id: - description: 'Build workflow run ID (e.g. For github.com/secondlife/viewer/actions/runs/1234567890 the ID is 1234567890)' - required: true - default: '14806728332' - -jobs: - debug-workflow: - runs-on: ubuntu-latest - steps: - - name: Debug Workflow Variables - run: | - echo "Workflow Conclusion: ${{ github.event.workflow_run.conclusion }}" - echo "Workflow Head Branch: ${{ github.event.workflow_run.head_branch }}" - echo "Workflow Run ID: ${{ github.event.workflow_run.id }}" - echo "Head Commit Message: ${{ github.event.workflow_run.head_commit.message }}" - echo "GitHub Ref: ${{ github.ref }}" - echo "GitHub Ref Name: ${{ github.ref_name }}" - echo "GitHub Event Name: ${{ github.event_name }}" - echo "GitHub Workflow Name: ${{ github.workflow }}" - - install-viewer-and-run-tests: - concurrency: - group: ${{ github.workflow }}-${{ matrix.runner }} - cancel-in-progress: false # Prevents cancellation of in-progress jobs - - strategy: - matrix: - include: - - os: windows - runner: qa-windows-atlas - artifact: Windows-installer - install-path: 'C:\viewer-automation-main' - - os: windows - runner: qa-windows-asus-dan - artifact: Windows-installer - install-path: 'C:\viewer-automation-main' - - os: windows - runner: qa-windows-kurt - artifact: Windows-installer - install-path: 'C:\viewer-automation-main' - - os: mac - runner: qa-mac-dan - artifact: macOS-installer - install-path: '$HOME/Documents/viewer-automation' - - os: mac - runner: qa-mac-atlas - artifact: macOS-installer - install-path: '$HOME/Documents/viewer-automation' - - os: mac - runner: qa-mac-caleb - artifact: macOS-installer - install-path: '$HOME/Documents/viewer-automation' - fail-fast: false - - runs-on: [self-hosted, "${{ matrix.runner }}"] - # Run test only on successful builds of Second_Life_X branches or on manual dispatch - if: > - (github.event_name == 'workflow_run' && - github.event.workflow_run.conclusion == 'success' && - startsWith(github.event.workflow_run.head_branch, 'Second_Life')) || - github.event_name == 'workflow_dispatch' - - steps: - # Windows-specific steps - - name: Set Build ID - if: matrix.os == 'windows' - shell: pwsh - run: | - if ("${{ github.event_name }}" -eq "workflow_dispatch") { - echo "BUILD_ID=${{ github.event.inputs.build_id }}" | Out-File -FilePath $env:GITHUB_ENV -Append - echo "ARTIFACTS_URL=https://api.github.com/repos/secondlife/viewer/actions/runs/${{ github.event.inputs.build_id }}/artifacts" | Out-File -FilePath $env:GITHUB_ENV -Append - } else { - echo "BUILD_ID=${{ github.event.workflow_run.id }}" | Out-File -FilePath $env:GITHUB_ENV -Append - echo "ARTIFACTS_URL=https://api.github.com/repos/secondlife/viewer/actions/runs/${{ github.event.workflow_run.id }}/artifacts" | Out-File -FilePath $env:GITHUB_ENV -Append - } - - - name: Temporarily Allow PowerShell Scripts (Windows) - if: matrix.os == 'windows' - shell: pwsh - run: | - Set-ExecutionPolicy RemoteSigned -Scope Process -Force - - - name: Verify viewer-automation-main Exists (Windows) - if: matrix.os == 'windows' - shell: pwsh - run: | - if (-Not (Test-Path -Path '${{ matrix.install-path }}')) { - Write-Host '❌ Error: viewer-automation folder not found on runner!' - exit 1 - } - Write-Host '✅ viewer-automation folder is provided.' - - - name: Verify viewer-automation-main is Up-To-Date (Windows) - if: matrix.os == 'windows' - shell: pwsh - continue-on-error: true - run: | - cd ${{ matrix.install-path }} - Write-Host "Checking for repository updates..." - - # Check if .git directory exists - if (Test-Path -Path ".git") { - try { - # Save local changes instead of discarding them - git stash push -m "Automated stash before update $(Get-Date)" - Write-Host "Local changes saved (if any)" - - # Update the repository - git pull - Write-Host "✅ Repository updated successfully" - - # Try to restore local changes if any were stashed - $stashList = git stash list - if ($stashList -match "Automated stash before update") { - try { - git stash pop - Write-Host "✅ Local changes restored successfully" - } catch { - Write-Host "⚠️ Conflict when restoring local changes" - # Save the conflicted state in a new branch for later review - $branchName = "conflict-recovery-$(Get-Date -Format 'yyyyMMdd-HHmmss')" - git checkout -b $branchName - Write-Host "✅ Created branch '$branchName' with conflicted state" - - # For test execution, revert to a clean state - git reset --hard HEAD - Write-Host "✅ Reset to clean state for test execution" - } - } - } catch { - Write-Host "⚠️ Could not update repository: $_" - Write-Host "Continuing with existing files..." - } - } else { - Write-Host "⚠️ Not a Git repository, using existing files" - } - - - name: Verify Python Installation (Windows) - if: matrix.os == 'windows' - shell: pwsh - run: | - try { - $pythonVersion = (python --version) - Write-Host "✅ Python found: $pythonVersion" - } catch { - Write-Host "❌ Error: Python not found in PATH. Please install Python on this runner." - exit 1 - } - - - name: Setup Python Virtual Environment (Windows) - if: matrix.os == 'windows' - shell: pwsh - run: | - Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force - cd ${{ matrix.install-path }} - - if (-Not (Test-Path -Path ".venv")) { - Write-Host "Creating virtual environment..." - python -m venv .venv - } else { - Write-Host "Using existing virtual environment" - } - - # Direct environment activation to avoid script execution issues - $env:VIRTUAL_ENV = "$PWD\.venv" - $env:PATH = "$env:VIRTUAL_ENV\Scripts;$env:PATH" - - # Install dependencies - if (Test-Path -Path "requirements.txt") { - Write-Host "Installing dependencies from requirements.txt..." - pip install -r requirements.txt - - # Install Playwright browsers - add this line - Write-Host "Installing Playwright browsers..." - python -m playwright install - } else { - pip install outleap requests behave playwright - # Install Playwright browsers - add this line - Write-Host "Installing Playwright browsers..." - python -m playwright install - } - - - name: Fetch & Download Installer Artifact (Windows) - if: matrix.os == 'windows' - shell: pwsh - run: | - $BUILD_ID = "${{ env.BUILD_ID }}" - $ARTIFACTS_URL = "${{ env.ARTIFACTS_URL }}" - - # Fetch the correct artifact URL - $response = Invoke-RestMethod -Headers @{Authorization="token ${{ secrets.GITHUB_TOKEN }}" } -Uri $ARTIFACTS_URL - $ARTIFACT_NAME = ($response.artifacts | Where-Object { $_.name -eq "${{ matrix.artifact }}" }).archive_download_url - - if (-Not $ARTIFACT_NAME) { - Write-Host "❌ Error: ${{ matrix.artifact }} artifact not found!" - exit 1 - } - - Write-Host "✅ Artifact found: $ARTIFACT_NAME" - - # Secure download path - $DownloadPath = "$env:TEMP\secondlife-build-$BUILD_ID" - New-Item -ItemType Directory -Path $DownloadPath -Force | Out-Null - $InstallerPath = "$DownloadPath\installer.zip" - - # Download the ZIP - Invoke-WebRequest -Uri $ARTIFACT_NAME -Headers @{Authorization="token ${{ secrets.GITHUB_TOKEN }}"} -OutFile $InstallerPath - - # Ensure download succeeded - if (-Not (Test-Path $InstallerPath)) { - Write-Host "❌ Error: Failed to download ${{ matrix.artifact }}.zip" - exit 1 - } - - # Set the path for other steps - echo "DOWNLOAD_PATH=$DownloadPath" | Out-File -FilePath $env:GITHUB_ENV -Append - - - name: Extract Installer & Locate Executable (Windows) - if: matrix.os == 'windows' - shell: pwsh - run: | - $BUILD_ID = "${{ env.BUILD_ID }}" - $ExtractPath = "${{ env.DOWNLOAD_PATH }}" - $InstallerZip = "$ExtractPath\installer.zip" - - # Print paths for debugging - Write-Host "Extract Path: $ExtractPath" - Write-Host "Installer ZIP Path: $InstallerZip" - - # Verify ZIP exists before extracting - if (-Not (Test-Path $InstallerZip)) { - Write-Host "❌ Error: ZIP file not found at $InstallerZip!" - exit 1 - } - - Write-Host "✅ ZIP file exists and is valid. Extracting..." - - Expand-Archive -Path $InstallerZip -DestinationPath $ExtractPath -Force - - # Find installer executable - $INSTALLER_PATH = (Get-ChildItem -Path $ExtractPath -Filter '*.exe' -Recurse | Select-Object -First 1).FullName - - if (-Not $INSTALLER_PATH -or $INSTALLER_PATH -eq "") { - Write-Host "❌ Error: No installer executable found in the extracted files!" - Write-Host "📂 Extracted Files:" - Get-ChildItem -Path $ExtractPath -Recurse | Format-Table -AutoSize - exit 1 - } - - Write-Host "✅ Installer found: $INSTALLER_PATH" - echo "INSTALLER_PATH=$INSTALLER_PATH" | Out-File -FilePath $env:GITHUB_ENV -Append - - - name: Install Second Life (Windows) - if: matrix.os == 'windows' - shell: pwsh - run: | - # Windows - Use Task Scheduler to bypass UAC - $action = New-ScheduledTaskAction -Execute "${{ env.INSTALLER_PATH }}" -Argument "/S" - $principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest - $task = New-ScheduledTask -Action $action -Principal $principal - Register-ScheduledTask -TaskName "SilentSLInstaller" -InputObject $task -Force - Start-ScheduledTask -TaskName "SilentSLInstaller" - - - name: Wait for Installation to Complete (Windows) - if: matrix.os == 'windows' - shell: pwsh - run: | - Write-Host "Waiting for the Second Life installer to finish..." - do { - Start-Sleep -Seconds 5 - $installerProcess = Get-Process | Where-Object { $_.Path -eq "${{ env.INSTALLER_PATH }}" } - } while ($installerProcess) - - Write-Host "✅ Installation completed!" - - - name: Cleanup After Installation (Windows) - if: matrix.os == 'windows' - shell: pwsh - run: | - # Cleanup Task Scheduler Entry - Unregister-ScheduledTask -TaskName "SilentSLInstaller" -Confirm:$false - Write-Host "✅ Task Scheduler entry removed." - - # Delete Installer ZIP - $DeletePath = "${{ env.DOWNLOAD_PATH }}\installer.zip" - - Write-Host "Checking if installer ZIP exists: $DeletePath" - - # Ensure the ZIP file exists before trying to delete it - if (Test-Path $DeletePath) { - Remove-Item -Path $DeletePath -Force - Write-Host "✅ Successfully deleted: $DeletePath" - } else { - Write-Host "⚠️ Warning: ZIP file does not exist, skipping deletion." - } - - - name: Run QA Test Script (Windows) - if: matrix.os == 'windows' - shell: pwsh - run: | - Write-Host "Running QA Test script on Windows runner: ${{ matrix.runner }}..." - cd ${{ matrix.install-path }} - - # Activate virtual environment - Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force - $env:VIRTUAL_ENV = "$PWD\.venv" - $env:PATH = "$env:VIRTUAL_ENV\Scripts;$env:PATH" - - # Set runner name as environment variable - $env:RUNNER_NAME = "${{ matrix.runner }}" - - # Run the test script - python runTests.py - - # Mac-specific steps - - name: Set Build ID (Mac) - if: matrix.os == 'mac' - shell: bash - run: | - if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then - echo "BUILD_ID=${{ github.event.inputs.build_id }}" >> $GITHUB_ENV - echo "ARTIFACTS_URL=https://api.github.com/repos/secondlife/viewer/actions/runs/${{ github.event.inputs.build_id }}/artifacts" >> $GITHUB_ENV - else - echo "BUILD_ID=${{ github.event.workflow_run.id }}" >> $GITHUB_ENV - echo "ARTIFACTS_URL=https://api.github.com/repos/secondlife/viewer/actions/runs/${{ github.event.workflow_run.id }}/artifacts" >> $GITHUB_ENV - fi - - - name: Verify viewer-automation-main Exists (Mac) - if: matrix.os == 'mac' - shell: bash - run: | - if [ ! -d "${{ matrix.install-path }}" ]; then - echo "❌ Error: viewer-automation folder not found on runner!" - exit 1 - fi - echo "✅ viewer-automation is provided." - - - name: Verify viewer-automation-main is Up-To-Date (Mac) - if: matrix.os == 'mac' - shell: bash - continue-on-error: true - run: | - cd ${{ matrix.install-path }} - echo "Checking for repository updates..." - - # Check if .git directory exists - if [ -d ".git" ]; then - # Save local changes instead of discarding them - git stash push -m "Automated stash before update $(date)" - echo "Local changes saved (if any)" - - # Update the repository - git pull || echo "⚠️ Could not update repository" - echo "✅ Repository updated (or attempted update)" - - # Try to restore local changes if any were stashed - if git stash list | grep -q "Automated stash before update"; then - # Try to pop the stash, but be prepared for conflicts - if ! git stash pop; then - echo "⚠️ Conflict when restoring local changes" - # Save the conflicted state in a new branch for later review - branch_name="conflict-recovery-$(date +%Y%m%d-%H%M%S)" - git checkout -b "$branch_name" - echo "✅ Created branch '$branch_name' with conflicted state" - - # For test execution, revert to a clean state - git reset --hard HEAD - echo "✅ Reset to clean state for test execution" - else - echo "✅ Local changes restored successfully" - fi - fi - else - echo "⚠️ Not a Git repository, using existing files" - fi - - - name: Verify Python Installation (Mac) - if: matrix.os == 'mac' - shell: bash - run: | - if command -v python3 &> /dev/null; then - PYTHON_VERSION=$(python3 --version) - echo "✅ Python found: $PYTHON_VERSION" - else - echo "❌ Error: Python3 not found in PATH. Please install Python on this runner." - exit 1 - fi - - - name: Setup Python Virtual Environment (Mac) - if: matrix.os == 'mac' - shell: bash - run: | - cd ${{ matrix.install-path }} - - # Create virtual environment if it doesn't exist - if [ ! -d ".venv" ]; then - echo "Creating virtual environment..." - python3 -m venv .venv - else - echo "Using existing virtual environment" - fi - - # Activate virtual environment - source .venv/bin/activate - - # Install dependencies - if [ -f "requirements.txt" ]; then - pip install -r requirements.txt - echo "✅ Installed dependencies from requirements.txt" - - # Install Playwright browsers - add this line - echo "Installing Playwright browsers..." - python -m playwright install - else - pip install outleap requests behave playwright - echo "⚠️ requirements.txt not found, installed basic dependencies" - - # Install Playwright browsers - add this line - echo "Installing Playwright browsers..." - python -m playwright install - fi - - - name: Fetch & Download Installer Artifact (Mac) - if: matrix.os == 'mac' - shell: bash - run: | - # Mac-specific Bash commands - response=$(curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -s ${{ env.ARTIFACTS_URL }}) - ARTIFACT_NAME=$(echo $response | jq -r '.artifacts[] | select(.name=="${{ matrix.artifact }}") | .archive_download_url') - - if [ -z "$ARTIFACT_NAME" ]; then - echo "❌ Error: ${{ matrix.artifact }} artifact not found!" - exit 1 - fi - - echo "✅ Artifact found: $ARTIFACT_NAME" - - # Secure download path - DOWNLOAD_PATH="/tmp/secondlife-build-${{ env.BUILD_ID }}" - mkdir -p $DOWNLOAD_PATH - INSTALLER_PATH="$DOWNLOAD_PATH/installer.zip" - - # Download the ZIP - curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -L $ARTIFACT_NAME -o $INSTALLER_PATH - - # Ensure download succeeded - if [ ! -f "$INSTALLER_PATH" ]; then - echo "❌ Error: Failed to download ${{ matrix.artifact }}.zip" - exit 1 - fi - - # Set the path for other steps - echo "DOWNLOAD_PATH=$DOWNLOAD_PATH" >> $GITHUB_ENV - - - name: Extract Installer & Locate Executable (Mac) - if: matrix.os == 'mac' - shell: bash - run: | - EXTRACT_PATH="${{ env.DOWNLOAD_PATH }}" - INSTALLER_ZIP="$EXTRACT_PATH/installer.zip" - - # Debug output - echo "Extract Path: $EXTRACT_PATH" - echo "Installer ZIP Path: $INSTALLER_ZIP" - - # Verify ZIP exists - if [ ! -f "$INSTALLER_ZIP" ]; then - echo "❌ Error: ZIP file not found at $INSTALLER_ZIP!" - exit 1 - fi - - echo "✅ ZIP file exists and is valid. Extracting..." - - # Extract the ZIP - unzip -o "$INSTALLER_ZIP" -d "$EXTRACT_PATH" - - # Find DMG file - INSTALLER_PATH=$(find "$EXTRACT_PATH" -name "*.dmg" -type f | head -1) - - if [ -z "$INSTALLER_PATH" ]; then - echo "❌ Error: No installer DMG found in the extracted files!" - echo "📂 Extracted Files:" - ls -la "$EXTRACT_PATH" - exit 1 - fi - - echo "✅ Installer found: $INSTALLER_PATH" - echo "INSTALLER_PATH=$INSTALLER_PATH" >> $GITHUB_ENV - - - name: Install Second Life (Mac) - if: matrix.os == 'mac' - shell: bash - run: | - # Mac installation - echo "Mounting DMG installer..." - MOUNT_POINT="/tmp/secondlife-dmg" - mkdir -p "$MOUNT_POINT" - - # Mount the DMG - hdiutil attach "$INSTALLER_PATH" -mountpoint "$MOUNT_POINT" -nobrowse - - echo "✅ DMG mounted at $MOUNT_POINT" - - echo "Installing application to default location from DMG..." - - # Find the .app bundle in the DMG - APP_PATH=$(find "$MOUNT_POINT" -name "*.app" -type d | head -1) - - if [ -z "$APP_PATH" ]; then - echo "❌ Error: No .app bundle found in the mounted DMG!" - exit 1 - fi - - APP_NAME=$(basename "$APP_PATH") - DEST_PATH="/Applications/$APP_NAME" - - # Handle existing installation - if [ -d "$DEST_PATH" ]; then - echo "Found existing installation at: $DEST_PATH" - echo "Moving existing installation to trash..." - - # Move to trash instead of force removing - TRASH_PATH="$HOME/.Trash/$(date +%Y%m%d_%H%M%S)_$APP_NAME" - mv "$DEST_PATH" "$TRASH_PATH" || { - echo "⚠️ Could not move to trash, trying direct removal..." - rm -rf "$DEST_PATH" || { - echo "❌ Could not remove existing installation" - echo "Please manually remove: $DEST_PATH" - exit 1 - } - } - - echo "✅ Existing installation handled successfully" - fi - - # Copy the .app to /Applications - echo "Copying app from: $APP_PATH" - echo "To destination: /Applications/" - cp -R "$APP_PATH" /Applications/ - - # Verify the app was copied successfully - if [ ! -d "$DEST_PATH" ]; then - echo "❌ Error: Failed to install application to /Applications!" - exit 1 - fi - - echo "✅ Application installed successfully to /Applications" - - # Save mount point for cleanup - echo "MOUNT_POINT=$MOUNT_POINT" >> $GITHUB_ENV - - - name: Wait for Installation to Complete (Mac) - if: matrix.os == 'mac' - shell: bash - run: | - echo "Waiting for installation to complete..." - # Sleep to allow installation to finish (adjust as needed) - sleep 30 - echo "✅ Installation completed" - - - name: Cleanup After Installation (Mac) - if: matrix.os == 'mac' - shell: bash - run: | - # Mac cleanup - # Unmount the DMG - echo "Unmounting DMG..." - hdiutil detach "${{ env.MOUNT_POINT }}" -force - - # Clean up temporary files - echo "Cleaning up temporary files..." - rm -rf "${{ env.DOWNLOAD_PATH }}" - rm -rf "${{ env.MOUNT_POINT }}" - - echo "✅ Cleanup completed" - - - name: Run QA Test Script (Mac) - if: matrix.os == 'mac' - shell: bash - run: | - echo "Running QA Test script on Mac runner: ${{ matrix.runner }}..." - cd ${{ matrix.install-path }} - - # Activate virtual environment - source .venv/bin/activate - - # Set runner name as environment variable - export RUNNER_NAME="${{ matrix.runner }}" - - # Run the test script - python runTests.py - - # - name: Upload Test Results - # if: always() - # uses: actions/upload-artifact@v4 - # with: - # name: test-results-${{ matrix.runner }} - # path: ${{ matrix.install-path }}/regressionTest/test_results.html diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml deleted file mode 100644 index edfe71b693..0000000000 --- a/.github/workflows/stale.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: Stale PRs -on: - workflow_dispatch: - schedule: - - cron: 0 0 * * * - -permissions: - issues: write - pull-requests: write - -jobs: - stale: - runs-on: ubuntu-latest - steps: - - uses: actions/stale@v10 - id: stale - with: - stale-pr-message: This pull request is stale because it has been open 30 days with no activity. Remove stale label or comment or it will be closed in 7 days - days-before-stale: 30 - days-before-close: 7 - days-before-issue-close: -1 - exempt-pr-labels: blocked,must,should,keep - stale-pr-label: stale - - name: Print outputs - run: echo ${{ join(steps.stale.outputs.*, ',') }} diff --git a/.github/workflows/tag-release.yaml b/.github/workflows/tag-release.yaml deleted file mode 100644 index 0f826222a0..0000000000 --- a/.github/workflows/tag-release.yaml +++ /dev/null @@ -1,72 +0,0 @@ -name: Tag a Build - -on: - # schedule event triggers always run on the default branch - # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule - schedule: - # run "nightly" builds on default branch every mon/wed/fri - - cron: "21 2 * * 2,4,6" # 2:21am UTC tues/thurs/sat == 7:21pm PDT mon/wed/fri -- see https://crontab.guru/#21_01_*_*_2,4,6 - workflow_dispatch: - inputs: - channel: - description: "Channel to configure the build" - required: true - type: choice - default: "Test" - options: - - "Test" - - "Develop" - - "Project" - - "Release" - project: - description: "Project Name (used for channel name in project builds, and tag name for all builds)" - default: "hippo" - tag_override: - description: "Override the tag name (optional). If the tag already exists, a numeric suffix is appended." - required: false - -jobs: - tag-release: - runs-on: ubuntu-latest - steps: - - name: Setup Env Vars - run: | - CHANNEL="${{ inputs.channel }}" - echo VIEWER_CHANNEL="Second_Life_${CHANNEL:-Develop}" >> ${GITHUB_ENV} - NIGHTLY_DATE=$(date --rfc-3339=date) - echo NIGHTLY_DATE=${NIGHTLY_DATE} >> ${GITHUB_ENV} - echo TAG_ID="$(echo ${{ github.sha }} | cut -c1-8)-${{ inputs.project || '${NIGHTLY_DATE}' }}" >> ${GITHUB_ENV} - - name: Create Tag - uses: actions/github-script@v8 - with: - # use a real access token instead of GITHUB_TOKEN default. - # required so that the results of this tag creation can trigger the build workflow - # https://stackoverflow.com/a/71372524 - # https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow - # this token will need to be renewed anually in January - github-token: ${{ secrets.LL_TAG_RELEASE_TOKEN }} - script: | - const override = `${{ inputs.tag_override }}`.trim(); - const baseTag = override || `${{ env.VIEWER_CHANNEL }}#${{ env.TAG_ID }}`; - - // Try the base tag first, then append -2, -3, etc. if it already exists - let tag = baseTag; - for (let attempt = 1; ; attempt++) { - try { - await github.rest.git.createRef({ - owner: context.repo.owner, - repo: context.repo.repo, - ref: `refs/tags/${tag}`, - sha: context.sha - }); - core.info(`Created tag: ${tag}`); - break; - } catch (e) { - if (e.status === 422 && attempt < 10) { - core.info(`Tag '${tag}' already exists, trying next suffix...`); - tag = `${baseTag}-${attempt + 1}`; - } else { - throw e; - } - } - } @@ -71,7 +71,7 @@ $ su - # portmaster devel/cmake devel/pkgconf audio/freealut devel/apr1 devel/boost-libs x11-toolkits/fltk math/glm textproc/hunspell misc/meshoptimizer archivers/minizip graphics/nanosvg www/libnghttp2 graphics/openjpeg devel/sdl20 multimedia/vlc audio/libvorbis devel/xxhash # exit $ setenv LL_BUILD "-O3 -std=c++20 -fPIC" -$ setenv PYTHON /usr/local/bin/python3.11 +$ setenv PYTHON `which python3.12` $ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSE_OPENAL:BOOL=ON -DUSE_FMODSTUDIO:BOOL=OFF -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=OFF -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON ../indra $ make -j`nproc` $ cd .. @@ -99,7 +99,7 @@ $ megapahit ### macOS ``` -$ sudo port install cmake pkgconfig freealut +universal apr-util +universal boost188 +universal glm hunspell +universal freetype +universal minizip +universal nghttp2 +universal openjpeg +universal libvorbis +universal xxhashlib +$ sudo port install cmake pkgconfig freealut apr-util boost188 glm hunspell freetype minizip nghttp2 openjpeg libvorbis xxhashlib $ export LL_BUILD="-O3 -gdwarf-2 -stdlib=libc++ -mmacosx-version-min=12 -iwithsysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -std=c++20 -fPIC -DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -DNDEBUG -DPIC -DLL_DARWIN=1" $ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSE_OPENAL:BOOL=ON -DUSE_FMODSTUDIO:BOOL=OFF -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=ON -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=OFF -DCMAKE_INSTALL_PREFIX:PATH=newview/Megapahit.app/Contents/Resources -DCMAKE_OSX_ARCHITECTURES:STRING=`uname -m` -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=12 -DENABLE_SIGNING:BOOL=ON -DSIGNING_IDENTITY:STRING=- ../indra $ make -j`sysctl -n hw.ncpu` @@ -137,10 +137,10 @@ $ megapahit ### Windows arm64 ``` -$ vcpkg install python3 freealut apr-util boost curl freetype glm hunspell libjpeg-turbo meshoptimizer minizip nanosvg nghttp2 openjpeg sse2neon libvorbis libxml2[tools] xxhash +$ vcpkg install python3 freealut apr-util boost curl freetype hunspell libjpeg-turbo meshoptimizer minizip nanosvg nghttp2 openjpeg sse2neon libvorbis libxml2[tools] xxhash $ vcpkg install --allow-unsupported boost-fiber $ export LL_BUILD="/MD /O2 /Ob2 /std:c++20 /Zc:wchar_t- /Zi /GR /DLL_RELEASE=1 /DLL_RELEASE_FOR_DOWNLOAD=1 /DNDEBUG /D_SECURE_STL=0 /D_HAS_ITERATOR_DEBUGGING=0 /DWIN32 /D_WINDOWS /DLL_WINDOWS=1 /DUNICODE /D_UNICODE /DWINVER=0x0602 /D_WIN32_WINNT=0x0602 /Zc:preprocessor" -$ export PATH="$VCPKG_ROOT/downloads/tools/cmake-4.3.2-windows/cmake-4.3.2-windows-arm64/bin:$VCPKG_ROOT/installed/arm64-windows/tools/libxml2:/c/Program Files (x86)/Microsoft Visual Studio/18/BuildTools/MSBuild/Current/Bin:$PATH" +$ export PATH="$VCPKG_ROOT/downloads/tools/cmake-4.3.3-windows/cmake-4.3.3-windows-arm64/bin:$VCPKG_ROOT/installed/arm64-windows/tools/libxml2:/c/Program Files (x86)/Microsoft Visual Studio/18/BuildTools/MSBuild/Current/Bin:$PATH" $ export PYTHON="$VCPKG_ROOT/installed/arm64-windows/tools/python3" $ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSE_OPENAL:BOOL=ON -DUSE_FMODSTUDIO:BOOL=OFF -DENABLE_MEDIA_PLUGINS:BOOL=OFF -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=OFF -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=Megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON -DCMAKE_TOOLCHAIN_FILE:FILEPATH=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake -DVS_DISABLE_FATAL_WARNINGS:BOOL=ON ../indra $ MSBuild.exe Megapahit.slnx -p:Configuration=Release @@ -152,7 +152,7 @@ $ start Megapahit-`cat newview/viewer_version.txt`-win64.exe ``` $ vcpkg install python3 freealut apr-util boost freetype glm hunspell libjpeg-turbo meshoptimizer minizip nanosvg nghttp2 openjpeg libvorbis libxml2[tools] xxhash $ export LL_BUILD="/MD /O2 /Ob2 /std:c++20 /Zc:wchar_t- /Zi /GR /DLL_RELEASE=1 /DLL_RELEASE_FOR_DOWNLOAD=1 /DNDEBUG /D_SECURE_STL=0 /D_HAS_ITERATOR_DEBUGGING=0 /DWIN32 /D_WINDOWS /DLL_WINDOWS=1 /DUNICODE /D_UNICODE /DWINVER=0x0602 /D_WIN32_WINNT=0x0602" -$ export PATH="$VCPKG_ROOT/downloads/tools/cmake-4.3.2-windows/cmake-4.3.2-windows-x86_64/bin:$VCPKG_ROOT/installed/x64-windows/tools/libxml2:/c/Program Files (x86)/Microsoft Visual Studio/18/BuildTools/MSBuild/Current/Bin:$PATH" +$ export PATH="$VCPKG_ROOT/downloads/tools/cmake-4.3.3-windows/cmake-4.3.3-windows-x86_64/bin:$VCPKG_ROOT/installed/x64-windows/tools/libxml2:/c/Program Files (x86)/Microsoft Visual Studio/18/BuildTools/MSBuild/Current/Bin:$PATH" $ export PYTHON="$VCPKG_ROOT/installed/x64-windows/tools/python3" $ cmake -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=64 -DUSE_OPENAL:BOOL=ON -DUSE_FMODSTUDIO:BOOL=OFF -DENABLE_MEDIA_PLUGINS:BOOL=ON -DLL_TESTS:BOOL=OFF -DNDOF:BOOL=ON -DROOT_PROJECT_NAME:STRING=Megapahit -DVIEWER_CHANNEL:STRING=Megapahit -DVIEWER_BINARY_NAME:STRING=Megapahit -DBUILD_SHARED_LIBS:BOOL=OFF -DINSTALL:BOOL=ON -DPACKAGE:BOOL=ON -DCMAKE_TOOLCHAIN_FILE:FILEPATH=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake -DVS_DISABLE_FATAL_WARNINGS:BOOL=ON ../indra $ MSBuild.exe Megapahit.slnx -p:Configuration=Release diff --git a/autobuild.xml b/autobuild.xml index 571da61367..7184b72acb 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -52,7 +52,7 @@ <key>hash_algorithm</key> <string>sha1</string> <key>url</key> - <string>https://github.com/secondlife/3p-fltk/releases/download/v1.3.9-r1/fltk-1.3.9.8556992788-linux64-8556992788.tar.zst</string> + <string>https://megapahit.net/downloads/fltk-1.4.3-linux64.tar.zst</string> </map> <key>name</key> <string>linux</string> @@ -823,6 +823,20 @@ <key>source_type</key> <string>git</string> </map> + <key>glu</key> + <map> + <key>platforms</key> + <map> + <key>linux64</key> + <map> + <key>archive</key> + <map> + <key>url</key> + <string>https://megapahit.net/downloads/glu-9.0.2-linux64.tar.zst</string> + </map> + </map> + </map> + </map> <key>gstreamer</key> <map> <key>platforms</key> @@ -2609,6 +2623,14 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>name</key> <string>darwin64</string> </map> + <key>linux64</key> + <map> + <key>archive</key> + <map> + <key>url</key> + <string>https://megapahit.net/downloads/vlc-bin-3.0.23-linux64.tar.zst</string> + </map> + </map> <key>windows64</key> <map> <key>archive</key> diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 90ca9866bb..4b007ceec9 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -154,7 +154,7 @@ if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD") --param asan-stack=0 ) add_link_options(-fsanitize=address) - else() + elseif( NOT USE_FLATPAK ) add_compile_definitions( _FORTIFY_SOURCE=2 ) endif() diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake index 4ce0d47f7f..b7ada1cfb1 100644 --- a/indra/cmake/APR.cmake +++ b/indra/cmake/APR.cmake @@ -5,21 +5,22 @@ include_guard() add_library( ll::apr INTERFACE IMPORTED ) -if (WINDOWS) - target_include_directories(ll::apr SYSTEM INTERFACE ${prefix_result}/../include) - target_link_directories(ll::apr INTERFACE ${prefix_result}) - target_link_libraries(ll::apr INTERFACE libapr-1 libaprutil-1) -else () - include(FindPkgConfig) - pkg_check_modules(Apr REQUIRED apr-1 apr-util-1) - target_include_directories(ll::apr SYSTEM INTERFACE ${Apr_INCLUDE_DIRS}) - target_link_directories(ll::apr INTERFACE ${Apr_LIBRARY_DIRS}) - target_link_libraries(ll::apr INTERFACE ${Apr_LIBRARIES}) +if (NOT USE_FLATPAK) + if (WINDOWS) + target_include_directories(ll::apr SYSTEM INTERFACE ${prefix_result}/../include) + target_link_directories(ll::apr INTERFACE ${prefix_result}) + target_link_libraries(ll::apr INTERFACE libapr-1 libaprutil-1) + else () + include(FindPkgConfig) + pkg_check_modules(Apr REQUIRED apr-1 apr-util-1) + target_include_directories(ll::apr SYSTEM INTERFACE ${Apr_INCLUDE_DIRS}) + target_link_directories(ll::apr INTERFACE ${Apr_LIBRARY_DIRS}) + target_link_libraries(ll::apr INTERFACE ${Apr_LIBRARIES}) + endif () + return () endif () -return () - -use_system_binary( apr apr-util ) +#use_system_binary( apr apr-util ) use_prebuilt_binary(apr_suite) if (WINDOWS) diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index 25d673e49a..a6e60aa95b 100644 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -12,32 +12,45 @@ if (DARWIN) elseif (WINDOWS) target_include_directories( ll::boost SYSTEM INTERFACE ${prefix_result}/../include) target_link_directories( ll::boost INTERFACE ${prefix_result}) - if ($ENV{MSYSTEM_CARCH} MATCHES aarch64) - set(sfx -vc143-mt-a64-1_91) + # Detect the actual toolset/version suffix from whatever vcpkg installed. + # Glob for boost_context-*.lib and strip the known prefix to get the suffix. + file(GLOB _boost_context_libs "${prefix_result}/boost_context-*.lib") + if (_boost_context_libs) + list(GET _boost_context_libs 0 _boost_context_lib) + get_filename_component(_boost_context_name "${_boost_context_lib}" NAME_WE) + string(REPLACE "boost_context" "" sfx "${_boost_context_name}") else () - set(sfx -vc143-mt-x64-1_91) + if ($ENV{MSYSTEM_CARCH} MATCHES aarch64) + set(sfx -vc143-mt-a64-1_91) + else () + set(sfx -vc143-mt-x64-1_91) + endif () + message(WARNING "Could not detect Boost suffix via glob; using fallback '${sfx}'. " + "Check that vcpkg installed boost into ${prefix_result}.") endif () -else () +elseif (NOT USE_FLATPAK) find_package( Boost ) endif () -target_link_libraries( ll::boost INTERFACE - boost_context${sfx} - boost_fiber${sfx} - boost_filesystem${sfx} - boost_program_options${sfx} - boost_thread${sfx} - boost_url${sfx} - ) -if (WINDOWS) - target_link_libraries( ll::boost INTERFACE boost_json${sfx}) -else () - target_link_libraries( ll::boost INTERFACE boost_regex${sfx}) -endif () -if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES fedora) OR DARWIN) - target_link_libraries( ll::boost INTERFACE boost_system${sfx}) +if (NOT USE_FLATPAK) + target_link_libraries( ll::boost INTERFACE + boost_context${sfx} + boost_fiber${sfx} + boost_filesystem${sfx} + boost_program_options${sfx} + boost_thread${sfx} + boost_url${sfx} + ) + if (WINDOWS) + target_link_libraries( ll::boost INTERFACE boost_json${sfx}) + else () + target_link_libraries( ll::boost INTERFACE boost_regex${sfx}) + endif () + if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES fedora) OR DARWIN) + target_link_libraries( ll::boost INTERFACE boost_system${sfx}) + endif () + target_compile_definitions( ll::boost INTERFACE BOOST_BIND_GLOBAL_PLACEHOLDERS ) + return() endif () -target_compile_definitions( ll::boost INTERFACE BOOST_BIND_GLOBAL_PLACEHOLDERS ) -return() if( USE_CONAN ) target_link_libraries( ll::boost INTERFACE CONAN_PKG::boost ) @@ -153,3 +166,4 @@ if (LINUX) target_link_libraries(ll::boost INTERFACE rt) endif (LINUX) +target_include_directories(ll::boost SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/CEFPlugin.cmake b/indra/cmake/CEFPlugin.cmake index 117c83353e..1fc28ad415 100644 --- a/indra/cmake/CEFPlugin.cmake +++ b/indra/cmake/CEFPlugin.cmake @@ -1,7 +1,6 @@ # -*- cmake -*- include(Linking) include(Prebuilt) -include(UnixInstall) include_guard() add_library( ll::cef INTERFACE IMPORTED ) @@ -30,45 +29,51 @@ if (${LINUX_DISTRO} MATCHES arch) DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} ) endif () - if (NOT EXISTS ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10.tar.gz) + if (NOT EXISTS ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.13.accel.tar.gz) file(DOWNLOAD - https://github.com/secondlife/dullahan/archive/refs/tags/v1.30.0-CEF_147.0.10.tar.gz - ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10.tar.gz + https://github.com/secondlife/dullahan/archive/refs/tags/v1.40.0-CEF_150.0.13.accel.tar.gz + ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.13.accel.tar.gz ) endif () file(ARCHIVE_EXTRACT - INPUT ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10.tar.gz + INPUT ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.13.accel.tar.gz DESTINATION ${CMAKE_BINARY_DIR} ) try_compile(DULLAHAN_RESULT PROJECT dullahan - SOURCE_DIR ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10 - BINARY_DIR ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10 + SOURCE_DIR ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.13.accel + BINARY_DIR ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.13.accel CMAKE_FLAGS -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR} -DCMAKE_INSTALL_LIBDIR:PATH=${ARCH_PREBUILT_DIRS_RELEASE} -DCEF_WRAPPER_DIR:PATH=/usr/include/cef - -DCEF_WRAPPER_BUILD_DIR:PATH=${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10 - -DCEF_LIBRARY_RELEASE:FILEPATH=${INSTALL_PREFIX}/${_LIB}/cef/libcef.so + -DCEF_WRAPPER_BUILD_DIR:PATH=${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.13.accel + -DCEF_LIBRARY_RELEASE:FILEPATH=${INSTALL_PREFIX}/lib/cef/libcef.so -DCEF_DLL_LIBRARY_RELEASE:FILEPATH=${ARCH_PREBUILT_DIRS_RELEASE}/libcef_dll_wrapper.a "-DCMAKE_CXX_FLAGS:STRING=-I/usr/include/cef -I/usr/src/cef -DWRAPPING_CEF_SHARED" ) if (${DULLAHAN_RESULT}) file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/bin/release) file( - COPY ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10/dullahan_host + COPY ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.13.accel/dullahan_host DESTINATION ${LIBS_PREBUILT_DIR}/bin/release ) + if (CMAKE_BUILD_TYPE MATCHES Release) + execute_process( + COMMAND ${CMAKE_STRIP} dullahan_host + WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/bin/release + ) + endif () file( - COPY ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10/libdullahan.a + COPY ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.13.accel/libdullahan.a DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} ) file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/cef) file( COPY - ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10/src/dullahan.h - ${CMAKE_BINARY_DIR}/dullahan-1.30.0-CEF_147.0.10/src/dullahan_version.h + ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.13.accel/src/dullahan.h + ${CMAKE_BINARY_DIR}/dullahan-1.40.0-CEF_150.0.13.accel/src/dullahan_version.h DESTINATION ${LIBS_PREBUILT_DIR}/include/cef ) file(WRITE ${PREBUILD_TRACKING_DIR}/dullahan_installed "0") @@ -118,7 +123,7 @@ elseif (${LINUX_DISTRO} MATCHES fedora) -DCMAKE_INSTALL_LIBDIR:PATH=${ARCH_PREBUILT_DIRS_RELEASE} -DCEF_WRAPPER_DIR:PATH=/usr/include/cef -DCEF_WRAPPER_BUILD_DIR:PATH=${CMAKE_BINARY_DIR}/dullahan-1.29.0-CEF_146.0.12 - -DCEF_LIBRARY_RELEASE:FILEPATH=${INSTALL_PREFIX}/${_LIB}/cef/libcef.so + -DCEF_LIBRARY_RELEASE:FILEPATH=${INSTALL_PREFIX}/lib${ADDRESS_SIZE}/cef/libcef.so -DCEF_DLL_LIBRARY_RELEASE:FILEPATH=${ARCH_PREBUILT_DIRS_RELEASE}/libcef_dll_wrapper.a "-DCMAKE_CXX_FLAGS:STRING=-I/usr/include/cef -I/usr/src/cef-146.0.11 -DWRAPPING_CEF_SHARED" ) @@ -128,6 +133,12 @@ elseif (${LINUX_DISTRO} MATCHES fedora) COPY ${CMAKE_BINARY_DIR}/dullahan-1.29.0-CEF_146.0.12/dullahan_host DESTINATION ${LIBS_PREBUILT_DIR}/bin/release ) + if (CMAKE_BUILD_TYPE MATCHES Release) + execute_process( + COMMAND ${CMAKE_STRIP} dullahan_host + WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/bin/release + ) + endif () file( COPY ${CMAKE_BINARY_DIR}/dullahan-1.29.0-CEF_146.0.12/libdullahan.a DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} @@ -173,11 +184,29 @@ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) -DPROJECT_ARCH:STRING=${CMAKE_SYSTEM_PROCESSOR} ) if (${DULLAHAN_RESULT}) + if (CMAKE_BUILD_TYPE MATCHES Release) + execute_process( + COMMAND ${CMAKE_STRIP} + chrome-sandbox + libEGL.so + libGLESv2.so + libcef.so + libvk_swiftshader.so + libvulkan.so.1 + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/dullahan-1.24.0-CEF_139.0.40/_deps/cef_prebuild-src/${CMAKE_BUILD_TYPE} + ) + endif () execute_process( COMMAND ${CMAKE_MAKE_PROGRAM} install WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/dullahan-1.24.0-CEF_139.0.40 OUTPUT_VARIABLE dullahan_installed ) + if (CMAKE_BUILD_TYPE MATCHES Release) + execute_process( + COMMAND ${CMAKE_STRIP} dullahan_host + WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/bin/release + ) + endif () file( COPY ${CMAKE_BINARY_DIR}/dullahan-1.24.0-CEF_139.0.40/src/dullahan.h @@ -190,20 +219,6 @@ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) else () use_prebuilt_binary(dullahan) endif () - -execute_process( - COMMAND patchelf --set-rpath ${INSTALL_LIBRARY_DIR} bin/release/dullahan_host - WORKING_DIRECTORY ${LIBS_PREBUILT_DIR} -) - -if (${LINUX_DISTRO} MATCHES arch OR (${LINUX_DISTRO} MATCHES fedora)) - target_include_directories( ll::cef SYSTEM INTERFACE /usr/include/cef/include) - execute_process( - COMMAND patchelf --add-rpath ${INSTALL_PREFIX}/${_LIB}/cef bin/release/dullahan_host - WORKING_DIRECTORY ${LIBS_PREBUILT_DIR} - ) -endif () - target_include_directories( ll::cef SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/cef) if (WINDOWS) @@ -268,10 +283,34 @@ elseif (DARWIN) -output libdullahan.a WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE} ) - elseif (LINUX) + if (NOT USE_FLATPAK) + execute_process( + COMMAND patchelf --set-rpath ${INSTALL_LIBRARY_DIR} dullahan_host + WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/bin/release + ) + endif () if (${LINUX_DISTRO} MATCHES arch OR (${LINUX_DISTRO} MATCHES fedora)) - target_link_directories( ll::cef INTERFACE ${INSTALL_PREFIX}/${_LIB}/cef ) + target_include_directories( ll::cef SYSTEM INTERFACE /usr/include/cef/include) + if (${LINUX_DISTRO} MATCHES fedora) + set(LIB_SUFFIX ${ADDRESS_SIZE}) + endif () + target_link_directories( ll::cef INTERFACE ${INSTALL_PREFIX}/lib${LIB_SUFFIX}/cef ) + execute_process( + COMMAND patchelf --add-rpath ${INSTALL_PREFIX}/lib${LIB_SUFFIX}/cef dullahan_host + WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/bin/release + ) + elseif (CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 AND (CMAKE_BUILD_TYPE MATCHES Release)) + execute_process( + COMMAND ${CMAKE_STRIP} + bin/release/chrome-sandbox + bin/release/dullahan_host + lib/release/libEGL.so + lib/release/libGLESv2.so + lib/release/libvk_swiftshader.so + lib/release/libvulkan.so.1 + WORKING_DIRECTORY ${LIBS_PREBUILT_DIR} + ) endif () target_link_libraries( ll::cef INTERFACE libdullahan.a diff --git a/indra/cmake/Discord.cmake b/indra/cmake/Discord.cmake index 68e6f59ecb..28d32cd668 100644 --- a/indra/cmake/Discord.cmake +++ b/indra/cmake/Discord.cmake @@ -9,7 +9,7 @@ target_compile_definitions(ll::discord_sdk INTERFACE LL_DISCORD=1) if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/discord_sdk_installed OR NOT ${discord_sdk_installed} EQUAL 0) file(ARCHIVE_EXTRACT - INPUT $ENV{HOME}/Downloads/DiscordSocialSdk-1.9.15780.zip + INPUT $ENV{HOME}/Downloads/DiscordSocialSdk-1.9.17379.zip DESTINATION ${CMAKE_BINARY_DIR} ) file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/discord_sdk) @@ -45,6 +45,12 @@ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKIN COPY ${CMAKE_BINARY_DIR}/discord_social_sdk/lib/release${DISCORD_PLATFORM}/${LIBRARY_PREFIX}discord_partner_sdk.${LIBRARY_EXTENSION} DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} ) + if (CMAKE_BUILD_TYPE MATCHES Release AND LINUX) + execute_process( + COMMAND ${CMAKE_STRIP} libdiscord_partner_sdk.so + WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE} + ) + endif () endif () file(WRITE ${PREBUILD_TRACKING_DIR}/discord_sdk_installed "0") endif () diff --git a/indra/cmake/FMODSTUDIO.cmake b/indra/cmake/FMODSTUDIO.cmake index ad8dc38c70..ec0b8a07d6 100644 --- a/indra/cmake/FMODSTUDIO.cmake +++ b/indra/cmake/FMODSTUDIO.cmake @@ -34,7 +34,7 @@ if (USE_FMODSTUDIO) file(MAKE_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}) if (DARWIN) execute_process( - COMMAND hdiutil attach -noverify fmodstudioapi20234mac-installer.dmg + COMMAND hdiutil attach -noverify fmodstudioapi20235mac-installer.dmg WORKING_DIRECTORY $ENV{HOME}/Downloads ) file( @@ -64,36 +64,36 @@ if (USE_FMODSTUDIO) file(WRITE ${PREBUILD_TRACKING_DIR}/fmodstudio_installed "${fmodstudio_installed}") else () file(ARCHIVE_EXTRACT - INPUT $ENV{HOME}/Downloads/fmodstudioapi20234linux.tar.gz + INPUT $ENV{HOME}/Downloads/fmodstudioapi20235linux.tar.gz DESTINATION ${CMAKE_BINARY_DIR} ) file( COPY - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod.hpp - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod_codec.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod_common.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod_dsp.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod_dsp_effects.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod_errors.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/inc/fmod_output.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod.hpp + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod_codec.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod_common.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod_dsp.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod_dsp_effects.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod_errors.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/inc/fmod_output.h DESTINATION ${LIBS_PREBUILT_DIR}/include/fmodstudio ) if (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) file( COPY - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/lib/arm64/libfmod.so - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/lib/arm64/libfmod.so.13 - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/lib/arm64/libfmod.so.13.34 + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/lib/arm64/libfmod.so + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/lib/arm64/libfmod.so.13 + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/lib/arm64/libfmod.so.13.35 DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} FOLLOW_SYMLINK_CHAIN ) else () file( COPY - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13 - ${CMAKE_BINARY_DIR}/fmodstudioapi20234linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13.34 + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13 + ${CMAKE_BINARY_DIR}/fmodstudioapi20235linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13.35 DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} FOLLOW_SYMLINK_CHAIN ) diff --git a/indra/cmake/GLM.cmake b/indra/cmake/GLM.cmake index e4c6796f6c..d804774ff6 100644 --- a/indra/cmake/GLM.cmake +++ b/indra/cmake/GLM.cmake @@ -4,7 +4,7 @@ include(Prebuilt) add_library( ll::glm INTERFACE IMPORTED ) #use_system_binary( glm ) -if (${LINUX_DISTRO} MATCHES debian) +if (USE_FLATPAK OR (${LINUX_DISTRO} MATCHES debian) OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64 OR ($ENV{MSYSTEM_CARCH} MATCHES aarch64)) use_prebuilt_binary(glm) elseif (NOT WINDOWS) find_package( glm REQUIRED ) diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake index df8d96109f..a574bfadaa 100644 --- a/indra/cmake/LLPrimitive.cmake +++ b/indra/cmake/LLPrimitive.cmake @@ -18,155 +18,176 @@ if( USE_CONAN ) "${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/1.4/" ) endif() -if (TRUE) - include(FindPkgConfig) - pkg_check_modules(Minizip REQUIRED minizip) - if (${LINUX_DISTRO} MATCHES arch OR (${LINUX_DISTRO} MATCHES gentoo) OR DARWIN) +#use_system_binary( colladadom ) + +#use_prebuilt_binary(colladadom) +if (USE_FLATPAK) +use_prebuilt_binary(minizip-ng) # needed for colladadom +#use_prebuilt_binary(libxml2) + +find_library(MINIZIPNG_LIBRARY + NAMES + minizip.lib + libminizip.a + PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) + +target_link_libraries(ll::minizip-ng INTERFACE ${MINIZIPNG_LIBRARY}) +endif () + +if (FALSE) +find_library(LIBXML2_LIBRARY + NAMES + libxml2.lib + libxml2.a + PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) + +target_link_libraries(ll::libxml INTERFACE ${LIBXML2_LIBRARY}) + +if (WINDOWS) + target_link_libraries( ll::libxml INTERFACE Bcrypt.lib) +endif() +endif (FALSE) + +include(FindPkgConfig) +if (NOT USE_FLATPAK) + pkg_search_module(Minizip REQUIRED minizip) +endif () +if (${LINUX_DISTRO} MATCHES arch OR (${LINUX_DISTRO} MATCHES gentoo) OR DARWIN OR WINDOWS) set(Minizip_INCLUDE_DIRS ${Minizip_INCLUDE_DIRS}/minizip) - endif () - pkg_check_modules(Libxml2 REQUIRED libxml-2.0) - target_link_libraries( ll::minizip-ng INTERFACE ${Minizip_LIBRARIES} ) - target_link_libraries( ll::libxml INTERFACE ${Libxml2_LIBRARIES} ) - if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/colladadom_installed OR NOT ${colladadom_installed} EQUAL 0) +elseif (USE_FLATPAK) + set(Minizip_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/minizip-ng) + set(Minizip_LIBRARY_DIRS ${ARCH_PREBUILT_DIRS_RELEASE}) +endif () +pkg_search_module(Libxml2 REQUIRED libxml-2.0) +target_link_libraries( ll::minizip-ng INTERFACE ${Minizip_LIBRARIES} ) +target_link_libraries( ll::libxml INTERFACE ${Libxml2_LIBRARIES} ) +if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/colladadom_installed OR NOT ${colladadom_installed} EQUAL 0) if (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11.tar.gz) - file(DOWNLOAD - https://github.com/secondlife/3p-colladadom/archive/refs/tags/v2.3-r11.tar.gz - ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11.tar.gz + file(DOWNLOAD + https://github.com/secondlife/3p-colladadom/archive/refs/tags/v2.3-r11.tar.gz + ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11.tar.gz ) endif () file(ARCHIVE_EXTRACT - INPUT ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11.tar.gz - DESTINATION ${CMAKE_BINARY_DIR} + INPUT ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11.tar.gz + DESTINATION ${CMAKE_BINARY_DIR} ) if (WINDOWS OR CMAKE_COMMAND MATCHES /usr/bin/cmake) - execute_process( - COMMAND sed -i "s/include_directories/cmake_minimum_required(VERSION 3.28)\\ninclude_directories/" CMakeLists.txt - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 + execute_process( + COMMAND sed -i "s/include_directories/cmake_minimum_required(VERSION 3.28)\\ninclude_directories/" CMakeLists.txt + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 ) else () - execute_process( - COMMAND sed -i "" -e "s/include_directories/cmake_minimum_required(VERSION 3.28)\\ninclude_directories/" CMakeLists.txt - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 + execute_process( + COMMAND sed -i "" -e "s/include_directories/cmake_minimum_required(VERSION 3.28)\\ninclude_directories/" CMakeLists.txt + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 ) endif () if (WINDOWS) - execute_process( - COMMAND sed -i "s/SHARED/STATIC/" 1.4/CMakeLists.txt - COMMAND sed -i "/#include <cstdarg>/a #define WIN32" dae/daeUtils.cpp - COMMAND sed -i "/using namespace cdom;/a namespace boost{void boost::throw_exception(class std::exception const &){}}" dae/daeURI.cpp - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/src + execute_process( + COMMAND sed -i "s/SHARED/STATIC/" 1.4/CMakeLists.txt + COMMAND sed -i "/#include <cstdarg>/a #define WIN32" dae/daeUtils.cpp + COMMAND sed -i "/using namespace cdom;/a namespace boost{void boost::throw_exception(class std::exception const &){}}" dae/daeURI.cpp + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/src + ) + elseif (CMAKE_COMMAND MATCHES /usr/bin/cmake) + execute_process( + COMMAND sed -i "s/SHARED/STATIC/" src/1.4/CMakeLists.txt + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 ) else () - execute_process( - COMMAND sed -i "" -e "s/SHARED/STATIC/" src/1.4/CMakeLists.txt - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 + execute_process( + COMMAND sed -i "" -e "s/SHARED/STATIC/" src/1.4/CMakeLists.txt + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 ) endif () if (DARWIN) - set(BOOST_CFLAGS -I${Libxml2_LIBRARY_DIRS}exec/boost/1.88/include) - set(BOOST_LIBS -L${Minizip_LIBRARY_DIRS}exec/boost/1.88/lib) - set(BOOST_LIBRARY_SUFFIX -mt) + set(BOOST_CFLAGS -I${Libxml2_LIBRARY_DIRS}exec/boost/1.88/include) + set(BOOST_LIBS -L${Minizip_LIBRARY_DIRS}exec/boost/1.88/lib) + set(BOOST_LIBRARY_SUFFIX -mt) elseif (WINDOWS) - set(BOOST_CFLAGS -I${prefix_result}/../include) - set(BOOST_LIBS -L${prefix_result}) - if ($ENV{MSYSTEM_CARCH} MATCHES aarch64) - set(BOOST_LIBRARY_SUFFIX -vc143-mt-a64-1_91) + set(BOOST_CFLAGS -I${prefix_result}/../include) + set(BOOST_LIBS -L${prefix_result}) + # Detect actual toolset/version suffix from vcpkg-installed libs. + file(GLOB _boost_context_libs "${prefix_result}/boost_context-*.lib") + if (_boost_context_libs) + list(GET _boost_context_libs 0 _boost_context_lib) + get_filename_component(_boost_context_name "${_boost_context_lib}" NAME_WE) + string(REPLACE "boost_context" "" BOOST_LIBRARY_SUFFIX "${_boost_context_name}") else () - set(BOOST_LIBRARY_SUFFIX -vc143-mt-x64-1_91) + if ($ENV{MSYSTEM_CARCH} MATCHES aarch64) + set(BOOST_LIBRARY_SUFFIX -vc143-mt-a64-1_91) + else () + set(BOOST_LIBRARY_SUFFIX -vc143-mt-x64-1_91) + endif () + message(WARNING "Could not detect Boost suffix via glob in LLPrimitive; using fallback.") endif () elseif (CMAKE_SYSTEM_NAME MATCHES FreeBSD) - set(BOOST_CFLAGS -I/usr/local/include) - execute_process( - COMMAND sed -i "" -e "s/endif 0/endif/" dae/daeUtils.cpp - COMMAND sed -i "" -e "s/linux/FreeBSD/" dae/daeUtils.cpp - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/src + set(BOOST_CFLAGS -I/usr/local/include) + execute_process( + COMMAND sed -i "" -e "s/endif 0/endif/" dae/daeUtils.cpp + COMMAND sed -i "" -e "s/linux/FreeBSD/" dae/daeUtils.cpp + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/src ) + elseif (USE_FLATPAK) + set(BOOST_CFLAGS -I${LIBS_PREBUILT_DIR}/include) + set(BOOST_LIBS -L${ARCH_PREBUILT_DIRS_RELEASE}) endif () file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/collada/1.4) try_compile(COLLADADOM_RESULT - PROJECT colladadom - SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 - BINARY_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 - TARGET collada14dom - CMAKE_FLAGS - -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET} - -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR} - -DCMAKE_CXX_STANDARD:STRING=17 - -DCMAKE_CXX_FLAGS:STRING=-I${Minizip_INCLUDE_DIRS} - -DBoost_CFLAGS:STRING=${BOOST_CFLAGS} - -DEXTRA_COMPILE_FLAGS:STRING=-I${Libxml2_INCLUDE_DIRS} - "-DCMAKE_SHARED_LINKER_FLAGS:STRING=-L${Minizip_LIBRARY_DIRS} ${BOOST_LIBS}" - -DBoost_FILESYSTEM_LIBRARY:STRING=boost_filesystem${BOOST_LIBRARY_SUFFIX} - -DBoost_SYSTEM_LIBRARY:STRING=boost_system${BOOST_LIBRARY_SUFFIX} - -DZLIB_LIBRARIES:STRING=${Libxml2_LIBRARIES} - -DOPT_COLLADA14:BOOL=ON - -DCOLLADA_DOM_INCLUDE_INSTALL_DIR:PATH=${LIBS_PREBUILT_DIR}/include/collada + PROJECT colladadom + SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 + BINARY_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 + TARGET collada14dom + CMAKE_FLAGS + -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} + -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} + -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET} + -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR} + -DCMAKE_CXX_STANDARD:STRING=17 + -DCMAKE_CXX_FLAGS:STRING=-I${Minizip_INCLUDE_DIRS} + -DBoost_CFLAGS:STRING=${BOOST_CFLAGS} + -DEXTRA_COMPILE_FLAGS:STRING=-I${Libxml2_INCLUDE_DIRS} + "-DCMAKE_SHARED_LINKER_FLAGS:STRING=-L${Minizip_LIBRARY_DIRS} ${BOOST_LIBS}" + -DBoost_FILESYSTEM_LIBRARY:STRING=boost_filesystem${BOOST_LIBRARY_SUFFIX} + -DBoost_SYSTEM_LIBRARY:STRING=boost_system${BOOST_LIBRARY_SUFFIX} + -DZLIB_LIBRARIES:STRING=${Libxml2_LIBRARIES} + -DOPT_COLLADA14:BOOL=ON + -DCOLLADA_DOM_INCLUDE_INSTALL_DIR:PATH=${LIBS_PREBUILT_DIR}/include/collada ) if (WINDOWS) - execute_process( - COMMAND MSBuild.exe ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/Project.slnx -p:Configuration=${CMAKE_BUILD_TYPE} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 - OUTPUT_VARIABLE colladadom_installed + execute_process( + COMMAND MSBuild.exe ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/Project.slnx -p:Configuration=${CMAKE_BUILD_TYPE} + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 + OUTPUT_VARIABLE colladadom_installed ) - file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/include/collada) - file( - COPY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/include - DESTINATION ${LIBS_PREBUILT_DIR}/include + file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/include/collada) + file( + COPY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/include + DESTINATION ${LIBS_PREBUILT_DIR}/include ) - file(RENAME - ${LIBS_PREBUILT_DIR}/include/include - ${LIBS_PREBUILT_DIR}/include/collada + file(RENAME + ${LIBS_PREBUILT_DIR}/include/include + ${LIBS_PREBUILT_DIR}/include/collada ) - file(MAKE_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}) - file(RENAME - ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/src/1.4/${CMAKE_BUILD_TYPE}/collada14dom.lib - ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom23-s.lib + file(MAKE_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}) + file(RENAME + ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11/src/1.4/${CMAKE_BUILD_TYPE}/collada14dom.lib + ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom23-s.lib ) elseif (${COLLADADOM_RESULT}) - execute_process( - COMMAND ${CMAKE_MAKE_PROGRAM} install - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 - OUTPUT_VARIABLE colladadom_installed + execute_process( + COMMAND ${CMAKE_MAKE_PROGRAM} install + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r11 + OUTPUT_VARIABLE colladadom_installed ) - file(RENAME - ${ARCH_PREBUILT_DIRS}/libcollada14dom.a - ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom.a + file(RENAME + ${ARCH_PREBUILT_DIRS}/libcollada14dom.a + ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom.a ) endif () file(WRITE ${PREBUILD_TRACKING_DIR}/colladadom_installed "${colladadom_installed}") - endif () - -else (TRUE) - -use_system_binary( colladadom ) - -use_prebuilt_binary(colladadom) -use_prebuilt_binary(minizip-ng) # needed for colladadom -use_prebuilt_binary(libxml2) - -find_library(MINIZIPNG_LIBRARY - NAMES - minizip.lib - libminizip.a - PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) - -target_link_libraries(ll::minizip-ng INTERFACE ${MINIZIPNG_LIBRARY}) - -find_library(LIBXML2_LIBRARY - NAMES - libxml2.lib - libxml2.a - PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) - -target_link_libraries(ll::libxml INTERFACE ${LIBXML2_LIBRARY}) - -if (WINDOWS) - target_link_libraries( ll::libxml INTERFACE Bcrypt.lib) -endif() - -endif (TRUE) +endif () target_include_directories( ll::colladadom SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/collada diff --git a/indra/cmake/LibVLCPlugin.cmake b/indra/cmake/LibVLCPlugin.cmake index 981f020745..e8cd051021 100644 --- a/indra/cmake/LibVLCPlugin.cmake +++ b/indra/cmake/LibVLCPlugin.cmake @@ -27,11 +27,14 @@ if (DARWIN) target_include_directories( ll::libvlc SYSTEM INTERFACE /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/include) target_link_directories( ll::libvlc INTERFACE /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib) target_link_libraries( ll::libvlc INTERFACE vlc vlccore ) -elseif (WINDOWS) +elseif (WINDOWS OR USE_FLATPAK) use_prebuilt_binary(vlc-bin) + if (WINDOWS) + set(LIB_SUFFIX lib) + endif () target_link_libraries( ll::libvlc INTERFACE - libvlc.lib - libvlccore.lib + ${LIB_SUFFIX}vlc + ${LIB_SUFFIX}vlccore ) else () include(FindPkgConfig) diff --git a/indra/cmake/Meshoptimizer.cmake b/indra/cmake/Meshoptimizer.cmake index 225f44b1fb..e65d0cac71 100644 --- a/indra/cmake/Meshoptimizer.cmake +++ b/indra/cmake/Meshoptimizer.cmake @@ -16,20 +16,20 @@ if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR CMAKE_ elseif (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 AND NOT (${LINUX_DISTRO} MATCHES gentoo)) use_prebuilt_binary(meshoptimizer) elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed OR NOT ${meshoptimizer_installed} EQUAL 0) - if (NOT EXISTS ${CMAKE_BINARY_DIR}/meshoptimizer-1.0.1.tar.gz) + if (NOT EXISTS ${CMAKE_BINARY_DIR}/meshoptimizer-1.2.tar.gz) file(DOWNLOAD - https://github.com/zeux/meshoptimizer/archive/refs/tags/v1.0.1.tar.gz - ${CMAKE_BINARY_DIR}/meshoptimizer-1.0.1.tar.gz + https://github.com/zeux/meshoptimizer/archive/refs/tags/v1.2.tar.gz + ${CMAKE_BINARY_DIR}/meshoptimizer-1.2.tar.gz ) endif () file(ARCHIVE_EXTRACT - INPUT ${CMAKE_BINARY_DIR}/meshoptimizer-1.0.1.tar.gz + INPUT ${CMAKE_BINARY_DIR}/meshoptimizer-1.2.tar.gz DESTINATION ${CMAKE_BINARY_DIR} ) try_compile(MESHOPTIMIZER_RESULT PROJECT meshoptimizer - SOURCE_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-1.0.1 - BINARY_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-1.0.1 + SOURCE_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-1.2 + BINARY_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-1.2 TARGET meshoptimizer CMAKE_FLAGS -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} @@ -42,7 +42,7 @@ elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRA if (${MESHOPTIMIZER_RESULT}) execute_process( COMMAND ${CMAKE_MAKE_PROGRAM} install - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/meshoptimizer-1.0.1 + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/meshoptimizer-1.2 OUTPUT_VARIABLE meshoptimizer_installed ) file(WRITE ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed "${meshoptimizer_installed}") diff --git a/indra/cmake/OPENAL.cmake b/indra/cmake/OPENAL.cmake index 1b7f9b9071..dcb74ad36d 100644 --- a/indra/cmake/OPENAL.cmake +++ b/indra/cmake/OPENAL.cmake @@ -18,19 +18,26 @@ endif() if (USE_OPENAL) add_library( ll::openal INTERFACE IMPORTED ) - - target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1) - include(FindPkgConfig) - pkg_check_modules(Openal REQUIRED freealut) - target_include_directories(ll::openal SYSTEM INTERFACE ${Openal_INCLUDE_DIRS}) - target_link_directories(ll::openal INTERFACE ${Openal_LIBRARY_DIRS}) - target_link_libraries(ll::openal INTERFACE ${Openal_LIBRARIES}) - return () - + if (USE_FLATPAK) target_include_directories( ll::openal SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/AL") + endif () target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1) + if (USE_FLATPAK) use_prebuilt_binary(openal) + file(REMOVE + ${ARCH_PREBUILT_DIRS_RELEASE}/libopenal.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libopenal.so.1 + ${ARCH_PREBUILT_DIRS_RELEASE}/libopenal.so.1.24.2 + ${LIBS_PREBUILT_DIR}/include/AL/al.h + ${LIBS_PREBUILT_DIR}/include/AL/alc.h + ${LIBS_PREBUILT_DIR}/include/AL/alext.h + ${LIBS_PREBUILT_DIR}/include/AL/efx-creative.h + ${LIBS_PREBUILT_DIR}/include/AL/efx-presets.h + ${LIBS_PREBUILT_DIR}/include/AL/efx.h + ) + endif () + if (FALSE) find_library(OPENAL_LIBRARY NAMES OpenAL32 @@ -38,7 +45,11 @@ if (USE_OPENAL) libopenal.dylib libopenal.so PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) + endif () + include(FindPkgConfig) + if (USE_FLATPAK) + pkg_search_module(Openal REQUIRED openal) find_library(ALUT_LIBRARY NAMES alut @@ -47,5 +58,12 @@ if (USE_OPENAL) PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH) target_link_libraries(ll::openal INTERFACE ${OPENAL_LIBRARY} ${ALUT_LIBRARY}) + else () + pkg_search_module(Openal REQUIRED freealut) + endif () + + target_include_directories(ll::openal SYSTEM INTERFACE ${Openal_INCLUDE_DIRS}) + target_link_directories(ll::openal INTERFACE ${Openal_LIBRARY_DIRS}) + target_link_libraries(ll::openal INTERFACE ${Openal_LIBRARIES}) endif () diff --git a/indra/cmake/OpenGL.cmake b/indra/cmake/OpenGL.cmake index bf7cd8366a..5e00eff3b8 100644 --- a/indra/cmake/OpenGL.cmake +++ b/indra/cmake/OpenGL.cmake @@ -4,3 +4,8 @@ include(Variables) include(Prebuilt) include(FindOpenGL) +if (USE_FLATPAK) + add_library(ll::glu INTERFACE IMPORTED) + use_prebuilt_binary(glu) + target_link_libraries(ll::glu INTERFACE GLU) +endif () diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake index dc8d84217a..24dc121533 100644 --- a/indra/cmake/UI.cmake +++ b/indra/cmake/UI.cmake @@ -6,16 +6,19 @@ include(GLIB) add_library( ll::uilibraries INTERFACE IMPORTED ) if (LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD) + if (USE_FLATPAK) + use_prebuilt_binary(fltk) + endif () target_compile_definitions(ll::uilibraries INTERFACE LL_FLTK=1 LL_X11=1 ) if( USE_CONAN ) return() endif() - if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) + if (USE_FLATPAK OR (${LINUX_DISTRO} MATCHES debian) OR (${LINUX_DISTRO} MATCHES ubuntu)) include(FindPkgConfig) - pkg_check_modules(Cairo REQUIRED cairo) - target_include_directories(ll::uilibraries SYSTEM INTERFACE ${Cairo_INCLUDE_DIRS}) + pkg_check_modules(CAIRO REQUIRED cairo) + target_include_directories(ll::uilibraries SYSTEM INTERFACE ${CAIRO_INCLUDE_DIRS}) endif () target_link_libraries( ll::uilibraries INTERFACE @@ -51,8 +54,29 @@ if( WINDOWS ) ) endif() -if (FALSE) +if (USE_FLATPAK) target_include_directories( ll::uilibraries SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include ) + pkg_check_modules(CAIRO-XLIB REQUIRED cairo-xlib) + pkg_check_modules(DBUS-1 REQUIRED dbus-1) + pkg_check_modules(LIBDECOR-0 REQUIRED libdecor-0) + pkg_check_modules(PANGO REQUIRED pango) + pkg_check_modules(PANGOCAIRO REQUIRED pangocairo) + pkg_check_modules(WAYLAND-CLIENT REQUIRED wayland-client) + pkg_check_modules(WAYLAND-CURSOR REQUIRED wayland-cursor) + pkg_check_modules(XKBCOMMON REQUIRED xkbcommon) + pkg_check_modules(XKBCOMMON-X11 REQUIRED xkbcommon-x11) + target_link_libraries(ll::uilibraries INTERFACE + ${CAIRO_LIBRARIES} + ${CAIRO-XLIB_LIBRARIES} + ${DBUS-1_LIBRARIES} + ${LIBDECOR-0_LIBRARIES} + ${PANGO_LIBRARIES} + ${PANGOCAIRO_LIBRARIES} + ${WAYLAND-CLIENT_LIBRARIES} + ${WAYLAND-CURSOR_LIBRARIES} + ${XKBCOMMON_LIBRARIES} + ${XKBCOMMON-X11_LIBRARIES} + ) endif () diff --git a/indra/cmake/UnixInstall.cmake b/indra/cmake/UnixInstall.cmake index b82cbbcc2f..34c3ed0ec9 100644 --- a/indra/cmake/UnixInstall.cmake +++ b/indra/cmake/UnixInstall.cmake @@ -6,23 +6,25 @@ set(INSTALL OFF CACHE BOOL "Generate install target.") if (INSTALL) - if (CMAKE_SYSTEM_NAME MATCHES FreeBSD) + if (USE_FLATPAK OR CMAKE_SYSTEM_NAME MATCHES FreeBSD) set(INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} CACHE PATH "Top-level installation directory.") - else (CMAKE_SYSTEM_NAME MATCHES FreeBSD) + else () set(INSTALL_PREFIX /usr CACHE PATH "Top-level installation directory.") - endif (CMAKE_SYSTEM_NAME MATCHES FreeBSD) + endif () - if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) - set(_LIB lib/${ARCH}-linux-gnu) + if (USE_FLATPAK) + set(_LIB lib) + elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) + set(_LIB lib/${ARCH}-linux-gnu/${VIEWER_BINARY_NAME}) elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) - set(_LIB lib${ADDRESS_SIZE}) + set(_LIB lib${ADDRESS_SIZE}/${VIEWER_BINARY_NAME}) else () - set(_LIB lib) + set(_LIB lib/${VIEWER_BINARY_NAME}) endif () - set(INSTALL_LIBRARY_DIR ${INSTALL_PREFIX}/${_LIB}/${VIEWER_BINARY_NAME} CACHE PATH + set(INSTALL_LIBRARY_DIR ${INSTALL_PREFIX}/${_LIB} CACHE PATH "Installation directory for dynamic library files and their resources.") set(INSTALL_SHARE_DIR ${INSTALL_PREFIX}/share CACHE PATH @@ -35,13 +37,17 @@ if (INSTALL) set(APP_SHARE_DIR ${INSTALL_SHARE_DIR}/${VIEWER_BINARY_NAME} CACHE PATH "Installation directory for read-only data files.") - if (${LINUX_DISTRO} MATCHES arch) + if (USE_FLATPAK) + set(APP_LIBEXEC_DIR ${INSTALL_PREFIX}/libexec + CACHE PATH + "Installation directory for non-manual executables.") + elseif (${LINUX_DISTRO} MATCHES arch) set(APP_LIBEXEC_DIR ${INSTALL_PREFIX}/lib/${VIEWER_BINARY_NAME} CACHE PATH "Installation directory for non-manual executables.") - else (${LINUX_DISTRO} MATCHES arch) + else () set(APP_LIBEXEC_DIR ${INSTALL_PREFIX}/libexec/${VIEWER_BINARY_NAME} CACHE PATH "Installation directory for non-manual executables.") - endif (${LINUX_DISTRO} MATCHES arch) + endif () endif (INSTALL) diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake index 65b8e5cfc0..aece8f834c 100644 --- a/indra/cmake/ViewerMiscLibs.cmake +++ b/indra/cmake/ViewerMiscLibs.cmake @@ -16,7 +16,7 @@ endif() use_prebuilt_binary(slvoice) endif (FALSE) -if (DARWIN) +if (DARWIN OR USE_FLATPAK) use_prebuilt_binary(nanosvg) endif () use_prebuilt_binary(viewer-fonts) diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 0aaa7433ce..1f7b3163c6 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -303,7 +303,7 @@ elseif ($ENV{MSYSTEM_CARCH} MATCHES aarch64) target_include_directories(llcommon PUBLIC ${prefix_result}/../include/sse2neon) endif () -if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) +if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64 OR ($ENV{MSYSTEM_CARCH} MATCHES aarch64)) target_include_directories(llcommon PUBLIC ${LIBS_PREBUILT_DIR}/include) endif () diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 34f1b83b6d..39f3bdce6d 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -1015,7 +1015,7 @@ void LLPluginClassMedia::enableMediaPluginDebugging( bool enable ) sendMessage( message ); } -#if LL_LINUX +#if LL_LINUX || __FreeBSD__ void LLPluginClassMedia::enablePipeWireVolumeCatcher( bool enable ) { LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "enable_pipewire_volume_catcher"); diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h index 91901719d3..944108aa10 100644 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -134,7 +134,7 @@ public: // Text may be unicode (utf8 encoded) bool textInput(const std::string &text, MASK modifiers, LLSD native_key_data); -#if LL_LINUX +#if LL_LINUX || __FreeBSD__ void enablePipeWireVolumeCatcher( bool enable ); #endif diff --git a/indra/llplugin/slplugin/CMakeLists.txt b/indra/llplugin/slplugin/CMakeLists.txt index 38f4c92b09..f7adb9404b 100644 --- a/indra/llplugin/slplugin/CMakeLists.txt +++ b/indra/llplugin/slplugin/CMakeLists.txt @@ -61,6 +61,13 @@ elseif (DARWIN) ) endif () +if (CMAKE_BUILD_TYPE MATCHES Release AND (CMAKE_CXX_COMPILER_ID STREQUAL Clang OR CMAKE_CXX_COMPILER_ID MATCHES GNU)) + add_custom_command( + TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_STRIP} ${PROJECT_NAME} + ) +endif () + if (BUILD_SHARED_LIBS) set_target_properties(SLPlugin PROPERTIES LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Wl,--allow-shlib-undefined") @@ -69,6 +76,8 @@ endif () if (INSTALL) if (DARWIN OR WINDOWS) install(TARGETS ${PROJECT_NAME} DESTINATION .) + elseif (USE_FLATPAK) + install(TARGETS ${PROJECT_NAME} DESTINATION libexec) elseif (${LINUX_DISTRO} MATCHES arch) install(TARGETS ${PROJECT_NAME} DESTINATION lib/${VIEWER_BINARY_NAME}) else () diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt index 6de5685517..d7a1d76630 100644 --- a/indra/llrender/CMakeLists.txt +++ b/indra/llrender/CMakeLists.txt @@ -103,7 +103,12 @@ target_link_libraries(llrender llwindow ll::freetype OpenGL::GL - OpenGL::GLU ) +if (USE_FLATPAK) + target_link_libraries(${PROJECT_NAME} ll::glu) +else () + target_link_libraries(${PROJECT_NAME} OpenGL::GLU) +endif () + include(LibraryInstall) diff --git a/indra/llwebrtc/CMakeLists.txt b/indra/llwebrtc/CMakeLists.txt index 1c53b0263c..6fb4616087 100644 --- a/indra/llwebrtc/CMakeLists.txt +++ b/indra/llwebrtc/CMakeLists.txt @@ -69,6 +69,14 @@ ADD_CUSTOM_COMMAND(TARGET llwebrtc POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:llwebrtc> ${SHARED_LIB_STAGING_DIR}) + +if (CMAKE_BUILD_TYPE MATCHES Release AND (CMAKE_CXX_COMPILER_ID STREQUAL Clang OR CMAKE_CXX_COMPILER_ID MATCHES GNU)) + add_custom_command( + TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_STRIP} lib${PROJECT_NAME}.so + ) +endif () + # Add tests if (LL_TESTS) endif (LL_TESTS) @@ -76,6 +84,8 @@ endif (LL_TESTS) if (INSTALL) if (DARWIN) set(_LIB ../Frameworks) + elseif (USE_FLATPAK) + set(_LIB lib) elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) set(_LIB lib/${ARCH}-linux-gnu/${VIEWER_BINARY_NAME}) elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) diff --git a/indra/llwindow/llkeyboardmacosx.cpp b/indra/llwindow/llkeyboardmacosx.cpp index 89ff7c6d3f..101e035135 100644 --- a/indra/llwindow/llkeyboardmacosx.cpp +++ b/indra/llwindow/llkeyboardmacosx.cpp @@ -32,9 +32,32 @@ #include "llwindowmacosx-objc.h" +#include <CoreServices/CoreServices.h> // Required for TIS functions +#include <Carbon/Carbon.h> + LLKeyboardMacOSX::LLKeyboardMacOSX() { // Virtual keycode mapping table. Yes, this was as annoying to generate as it looks. + + bool isAzerty = false; + + TISInputSourceRef source = TISCopyCurrentKeyboardLayoutInputSource(); + if (source) + { + CFStringRef inputSourceID = (CFStringRef)TISGetInputSourceProperty(source, kTISPropertyInputSourceID); + if (inputSourceID) + { + char buf[128]; + // Convert CFString to a C-string for easy comparison + if (CFStringGetCString(inputSourceID, buf, sizeof(buf), kCFStringEncodingUTF8)) + { + // On macOS, AZERTY layouts are identified by "French" in their Input Source ID + isAzerty = (strstr(buf, "French") != nullptr); + } + } + CFRelease(source); + } + mTranslateKeyMap[0x00] = 'A'; mTranslateKeyMap[0x01] = 'S'; mTranslateKeyMap[0x02] = 'D'; @@ -52,6 +75,7 @@ LLKeyboardMacOSX::LLKeyboardMacOSX() mTranslateKeyMap[0x0f] = 'R'; mTranslateKeyMap[0x10] = 'Y'; mTranslateKeyMap[0x11] = 'T'; + mTranslateKeyMap[0x12] = '1'; mTranslateKeyMap[0x13] = '2'; mTranslateKeyMap[0x14] = '3'; @@ -132,6 +156,16 @@ LLKeyboardMacOSX::LLKeyboardMacOSX() mTranslateKeyMap[0x7d] = KEY_DOWN; mTranslateKeyMap[0x7e] = KEY_UP; + // azerty fix + if(isAzerty) + { + LL_WARNS() << "keyboard is AZERTY" << LL_ENDL; + mTranslateKeyMap[0x00] = 'Q'; + mTranslateKeyMap[0x06] = 'W'; + mTranslateKeyMap[0x0c] = 'A'; + mTranslateKeyMap[0x0d] = 'Z'; + } + // Build inverse map std::map<U16, KEY>::iterator iter; for (iter = mTranslateKeyMap.begin(); iter != mTranslateKeyMap.end(); iter++) diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt index 4736eef420..1a4d61616c 100644 --- a/indra/media_plugins/cef/CMakeLists.txt +++ b/indra/media_plugins/cef/CMakeLists.txt @@ -52,7 +52,10 @@ if (LINUX) list(APPEND media_plugin_cef_SOURCE_FILES ${LINUX_VOLUME_CATCHER}) set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--build-id") if (${LINUX_DISTRO} MATCHES arch OR (${LINUX_DISTRO} MATCHES fedora)) - set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH};${INSTALL_PREFIX}/${_LIB}/cef) + if (${LINUX_DISTRO} MATCHES fedora) + set(LIB_SUFFIX ${ADDRESS_SIZE}) + endif () + set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH};${INSTALL_PREFIX}/lib${LIB_SUFFIX}/cef) endif () list(APPEND media_plugin_cef_LINK_LIBRARIES llwindow ) elseif (DARWIN) @@ -130,6 +133,13 @@ if (DARWIN) endif (DARWIN) +if (CMAKE_BUILD_TYPE MATCHES Release AND (CMAKE_CXX_COMPILER_ID STREQUAL Clang OR CMAKE_CXX_COMPILER_ID MATCHES GNU)) + add_custom_command( + TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_STRIP} lib${PROJECT_NAME}.so + ) +endif () + if (INSTALL) if (DARWIN) set(_LIB SLPlugin.app/Contents/Frameworks) @@ -147,14 +157,23 @@ if (INSTALL) DESTINATION ${_LIB} ) elseif (LINUX) - if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) + if (USE_FLATPAK) + set(_LIB lib) + elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) set(_LIB lib/${ARCH}-linux-gnu/${VIEWER_BINARY_NAME}) elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) set(_LIB lib${ADDRESS_SIZE}/${VIEWER_BINARY_NAME}) else () set(_LIB lib/${VIEWER_BINARY_NAME}) endif () - if (${LINUX_DISTRO} MATCHES arch) + if (USE_FLATPAK) + install( + PROGRAMS + ${AUTOBUILD_INSTALL_DIR}/bin/release/chrome-sandbox + ${AUTOBUILD_INSTALL_DIR}/bin/release/dullahan_host + DESTINATION libexec + ) + elseif (${LINUX_DISTRO} MATCHES arch) install( PROGRAMS ${AUTOBUILD_INSTALL_DIR}/bin/release/dullahan_host DESTINATION lib/${VIEWER_BINARY_NAME} @@ -173,26 +192,15 @@ if (INSTALL) ) endif () if (NOT (${LINUX_DISTRO} MATCHES arch OR (${LINUX_DISTRO} MATCHES fedora))) - file(MAKE_DIRECTORY ${AUTOBUILD_INSTALL_DIR}/lib/release/${VIEWER_BINARY_NAME}) - file(CREATE_LINK - "../libGLESv2.so" - "${AUTOBUILD_INSTALL_DIR}/lib/release/${VIEWER_BINARY_NAME}/libGLESv2.so" - SYMBOLIC - ) - file(CREATE_LINK - "../libvulkan.so.1" - "${AUTOBUILD_INSTALL_DIR}/lib/release/${VIEWER_BINARY_NAME}/libvulkan.so.1" - SYMBOLIC - ) install( FILES + ${ARCH_PREBUILT_DIRS_RELEASE}/libEGL.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libGLESv2.so ${ARCH_PREBUILT_DIRS_RELEASE}/libcef.so ${ARCH_PREBUILT_DIRS_RELEASE}/libvk_swiftshader.so - ${ARCH_PREBUILT_DIRS_RELEASE}/libEGL.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libvulkan.so.1 ${ARCH_PREBUILT_DIRS_RELEASE}/v8_context_snapshot.bin ${ARCH_PREBUILT_DIRS_RELEASE}/vk_swiftshader_icd.json - ${ARCH_PREBUILT_DIRS_RELEASE}/${VIEWER_BINARY_NAME}/libGLESv2.so - ${ARCH_PREBUILT_DIRS_RELEASE}/${VIEWER_BINARY_NAME}/libvulkan.so.1 ${AUTOBUILD_INSTALL_DIR}/resources/chrome_100_percent.pak ${AUTOBUILD_INSTALL_DIR}/resources/chrome_200_percent.pak ${AUTOBUILD_INSTALL_DIR}/resources/icudtl.dat diff --git a/indra/media_plugins/libvlc/CMakeLists.txt b/indra/media_plugins/libvlc/CMakeLists.txt index 96790a8037..24174a6ef0 100644 --- a/indra/media_plugins/libvlc/CMakeLists.txt +++ b/indra/media_plugins/libvlc/CMakeLists.txt @@ -72,6 +72,13 @@ if (DARWIN) endif (DARWIN) +if (CMAKE_BUILD_TYPE MATCHES Release AND (CMAKE_CXX_COMPILER_ID STREQUAL Clang OR CMAKE_CXX_COMPILER_ID MATCHES GNU)) + add_custom_command( + TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_STRIP} lib${PROJECT_NAME}.so + ) +endif () + if (INSTALL) if (DARWIN) set(_LIB SLPlugin.app/Contents/Frameworks) @@ -87,6 +94,22 @@ if (INSTALL) /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib/libvlccore.dylib DESTINATION ${_LIB}/plugins ) + elseif (USE_FLATPAK) + set(_LIB lib) + install( + DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}/vlc + DESTINATION ${_LIB} + ) + install( + FILES + ${ARCH_PREBUILT_DIRS_RELEASE}/libvlc.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libvlc.so.5 + ${ARCH_PREBUILT_DIRS_RELEASE}/libvlc.so.5.6.1 + ${ARCH_PREBUILT_DIRS_RELEASE}/libvlccore.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libvlccore.so.9 + ${ARCH_PREBUILT_DIRS_RELEASE}/libvlccore.so.9.0.1 + DESTINATION ${_LIB} + ) elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) set(_LIB lib/${ARCH}-linux-gnu/${VIEWER_BINARY_NAME}) elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index e070fb3da3..6ff0b3977a 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1874,6 +1874,13 @@ else () ) endif () +if (CMAKE_BUILD_TYPE MATCHES Release AND (CMAKE_CXX_COMPILER_ID STREQUAL Clang OR CMAKE_CXX_COMPILER_ID MATCHES GNU)) + add_custom_command( + TARGET ${VIEWER_BINARY_NAME} POST_BUILD + COMMAND ${CMAKE_STRIP} ${VIEWER_BINARY_NAME} + ) +endif () + if(USE_PRECOMPILED_HEADERS) target_precompile_headers( ${VIEWER_BINARY_NAME} PRIVATE llviewerprecompiledheaders.h ) endif(USE_PRECOMPILED_HEADERS) @@ -2202,15 +2209,15 @@ endif () if (ENABLE_MEDIA_PLUGINS) target_link_libraries(${VIEWER_BINARY_NAME} ll::libvlc ) + if (NOT (CMAKE_SYSTEM_NAME MATCHES FreeBSD)) + target_link_libraries(${VIEWER_BINARY_NAME} ll::cef ) + endif () # Tell the viewer source which media-library version headers are # actually available in this build, so version reporting in # llappviewer.cpp is gated on the build configuration rather than on # a CPU/compiler macro. Mirrors the link availability above exactly. target_compile_definitions(${VIEWER_BINARY_NAME} PRIVATE LL_VLC=1) - if (DARWIN OR LINUX) - target_link_libraries(${VIEWER_BINARY_NAME} ll::cef ) - target_compile_definitions(${VIEWER_BINARY_NAME} PRIVATE LL_CEF=1) - endif () + target_compile_definitions(${VIEWER_BINARY_NAME} PRIVATE LL_CEF=1) endif () if (USE_DISCORD) @@ -2380,10 +2387,10 @@ if (LINUX) set(CPACK_DEBIAN_PACKAGE_SECTION net CACHE STRING "Debian package section.") if (${LINUX_DISTRO} MATCHES debian) - set(CPACK_DEBIAN_PACKAGE_DEPENDS "libalut0, libaprutil1t64, libboost-fiber1.83.0, libboost-filesystem1.83.0, libboost-program-options1.83.0, libboost-regex1.83.0, libboost-thread1.83.0, libboost-url1.83.0, libexpat1, libfltk1.4, libgles-dev, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1t64, libnghttp2-14, libnspr4, libnss3, libopenjp2-7, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base" + set(CPACK_DEBIAN_PACKAGE_DEPENDS "libalut0, libaprutil1t64, libboost-fiber1.83.0, libboost-filesystem1.83.0, libboost-program-options1.83.0, libboost-regex1.83.0, libboost-thread1.83.0, libboost-url1.83.0, libexpat1, libfltk1.4, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1t64, libnghttp2-14, libnspr4, libnss3, libopenjp2-7, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base" CACHE STRING "Debian package dependencies.") else () - set(CPACK_DEBIAN_PACKAGE_DEPENDS "libalut0, libaprutil1t64, libboost-fiber1.90.0, libboost-filesystem1.90.0, libboost-program-options1.90.0, libboost-regex1.90.0, libboost-thread1.90.0, libboost-url1.90.0, libexpat1, libfltk1.4, libgles-dev, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1t64, libnghttp2-14, libnspr4, libnss3, libopenjp2-7, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base" + set(CPACK_DEBIAN_PACKAGE_DEPENDS "libalut0, libaprutil1t64, libboost-fiber1.90.0, libboost-filesystem1.90.0, libboost-program-options1.90.0, libboost-regex1.90.0, libboost-thread1.90.0, libboost-url1.90.0, libexpat1, libfltk1.4, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1t64, libnghttp2-14, libnspr4, libnss3, libopenjp2-7, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base" CACHE STRING "Debian package dependencies.") endif () elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) diff --git a/indra/newview/FixBundle.cmake.in b/indra/newview/FixBundle.cmake.in index a2dfadd7ef..1d4192c94c 100644 --- a/indra/newview/FixBundle.cmake.in +++ b/indra/newview/FixBundle.cmake.in @@ -158,9 +158,9 @@ execute_process( COMMAND lipo libbz2.1.0.8.dylib -thin ${CMAKE_OSX_ARCHITECTURES} -output libbz2.1.0.8.dylib - COMMAND lipo libexpat.1.12.1.dylib + COMMAND lipo libexpat.1.12.2.dylib -thin ${CMAKE_OSX_ARCHITECTURES} - -output libexpat.1.12.1.dylib + -output libexpat.1.12.2.dylib COMMAND lipo libfreetype.6.dylib -thin ${CMAKE_OSX_ARCHITECTURES} -output libfreetype.6.dylib @@ -233,440 +233,3 @@ execute_process( WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Frameworks ERROR_QUIET ) - -message("By default, the situation is assumed to be the strictest, an Apple Silicon Mac with the default security settings. Running a native self-built viewer on it without correct codesigning would lead to a crash. Also, codesigning requires administrative access. If you believe you're not in such a situation, you can remove the sudos in this file.") -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libEGL.dylib - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libGLESv2.dylib - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libcef_sandbox.dylib - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libvk_swiftshader.dylib - Frameworks/Chromium\ Embedded\ Framework.framework - Frameworks/libalut.0.dylib - Frameworks/libapr-1.0.dylib - Frameworks/libaprutil-1.0.dylib - Frameworks/libboost_atomic-mt.dylib - Frameworks/libboost_context-mt.dylib - Frameworks/libboost_fiber-mt.dylib - Frameworks/libboost_filesystem-mt.dylib - Frameworks/libboost_program_options-mt.dylib - Frameworks/libboost_regex-mt.dylib - Frameworks/libboost_system-mt.dylib - Frameworks/libboost_thread-mt.dylib - Frameworks/libboost_url-mt.dylib - Frameworks/libbrotlicommon.1.2.0.dylib - Frameworks/libbrotlidec.1.2.0.dylib - Frameworks/libbz2.1.0.8.dylib - Frameworks/libdiscord_partner_sdk.dylib - Frameworks/libexpat.1.12.1.dylib - Frameworks/libfreetype.6.dylib - Frameworks/libhunspell-1.7.0.dylib - Frameworks/libiconv.2.dylib - Frameworks/libicudata.78.3.dylib - Frameworks/libicui18n.78.3.dylib - Frameworks/libicuuc.78.3.dylib - Frameworks/libjpeg.8.3.2.dylib - Frameworks/libllwebrtc.dylib - Frameworks/libminizip.1.dylib - Frameworks/libncurses.6.dylib - Frameworks/libndofdev.dylib - Frameworks/libnghttp2.14.dylib - Frameworks/libogg.0.dylib - Frameworks/libopenal.1.25.1.dylib - Frameworks/libopenjp2.2.5.4.dylib - Frameworks/libpng16.16.dylib - Frameworks/libvlc.5.dylib - Frameworks/libvlccore.9.dylib - Frameworks/libvorbis.0.dylib - Frameworks/libvorbisenc.2.dylib - Frameworks/libvorbisfile.3.dylib - Frameworks/libxml2.16.dylib - Frameworks/libz.1.3.2.dylib - Resources/libndofdev.dylib - Resources/SLPlugin.app/Contents/Frameworks/media_plugin_cef.dylib - Resources/SLPlugin.app/Contents/Frameworks/media_plugin_libvlc.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_concat_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_imem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_mms_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_dummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_file_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_http_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_livehttp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_rist_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_shout_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_srt_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_udp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_realrtsp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_srt_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadaptive_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsfsstorage_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsvorepository_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadjust_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadpcm_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaes3_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libafile_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaiff_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libalphamask_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libamem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libanaglyph_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libantiflicker_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaom_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaraw_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libarchive_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaribsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libasf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libattachment_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libau_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudio_format_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_a_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_v_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudioscrobbler_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiotoolboxmidi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libauhal_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavaudiocapture_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcapture_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcodec_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libball_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libblend_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libblendbench_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluescreen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-awt-j2se-1.4.0.jar - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-j2se-1.4.0.jar - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbonjour_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_block_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_read_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcanvas_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaopengllayer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdda_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libchain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libchorus_flanger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libci_filters_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libclone_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcolorthres_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcompressor_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libconsole_logger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcroppadd_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvdsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvpx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdav1d_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdcp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libddummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdecomp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdeinterlace_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_cdg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_chromecast_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_stl_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemuxdump_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdiracsys_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdirectory_demux_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdmxmus_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdolby_surround_decoder_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvbsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdnav_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdread_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdynamicoverlay_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libedgedetection_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libedummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libequalizer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liberase_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libes_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libexport_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libextract_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfaad_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_keystore_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_logger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfilesystem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfingerprinter_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libflac_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libflacsys_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libflaschen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfloat_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfolder_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreetype_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreeze_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libftp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libg711_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgaussianblur_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgestures_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libglconv_cvpx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgme_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgnutls_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgoom_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradfun_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradient_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrey_yuv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libh26x_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhds_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libheadphone_channel_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhotkeys_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhqdn3d_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_10_p010_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_nv12_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_mmx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_sse2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_mmx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_sse2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_i420_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_mmx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_sse2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libidummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libimage_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libimem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libinflate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libinteger_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libinvert_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libjpeg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libkaraoke_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libkate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libkeychain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibass_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibbluray_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblive555_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblpcm_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblua_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmacosx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmad_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmagnify_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmarq_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmediadirs_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmemory_keystore_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmirror_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmjpeg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmkv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmod_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmono_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmosaic_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotion_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotionblur_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotiondetect_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmp4_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpg123_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpgv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_asf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_avi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_dummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mp4_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mpjpeg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ogg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ts_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_wav_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libncurses_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnetsync_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnfs_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnormvol_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnoseek_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsspeechsynthesizer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnuv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libogg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liboggspots_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldmovie_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldrc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libopus_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libosx_notifications_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_a52_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_av1_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_copy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dirac_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dts_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_flac_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_h264_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_hevc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mlp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4audio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4video_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegaudio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegvideo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_vc1_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libparam_eq_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libplaylist_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpng_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpodcast_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libposterize_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpostproc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libprefetch_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpsychedelic_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpuzzle_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpva_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawaud_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawdv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvid_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvideo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libreal_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librecord_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libremap_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libremoteosd_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libripple_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librist_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librotate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librss_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librtp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librtpvideo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librv32_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsamplerate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsap_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsatip_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscale_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_pitch_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscene_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libschroedinger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscreen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte18_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte27_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsdp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsecuretransport_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsepia_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsftp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsharpen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libshm_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsid_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsimple_channel_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libskiptags_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsmf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatialaudio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatializer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspdif_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_resampler_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspudec_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstats_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstereo_widen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstl_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_autodel_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_bridge_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromaprint_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromecast_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_cycle_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_delay_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_description_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_display_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_dummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_duplicate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_es_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_gather_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_mosaic_bridge_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_record_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_rtp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_setid_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_smem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_standard_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_stats_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_transcode_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdec_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdelay_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubstx3g_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsusf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubtitle_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsvcdsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libswscale_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsyslog_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libt140_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtaglib_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtcp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtdummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtelx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtextst_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtheora_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtimecode_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtospdif_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtransform_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtrivial_channel_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libts_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtta_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libttml_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtwolame_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libty_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libudp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libugly_resampler_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libuleaddvaudio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libupnp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvc1_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvcd_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdr_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvhs_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvideotoolbox_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvisual_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlc.5.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlccore.9.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvmem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvobsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvoc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvod_rtsp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvorbis_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvout_macosx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvpx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwall_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwav_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwave_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwebvtt_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libx26410b_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libx264_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libx265_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libxa_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libxml_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuvp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i420_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i422_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libzvbi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Alerts\).app/Contents/MacOS/DullahanHelper\ \(Alerts\) - Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(GPU\).app/Contents/MacOS/DullahanHelper\ \(GPU\) - Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Plugin\).app/Contents/MacOS/DullahanHelper\ \(Plugin\) - WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - DullahanHelper.app - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - DullahanHelper\ \(Renderer\).app/Contents/MacOS/DullahanHelper\ \(Renderer\) - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --deep - DullahanHelper\ \(Alerts\).app - DullahanHelper\ \(GPU\).app - DullahanHelper\ \(Plugin\).app - WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - --deep - DullahanHelper\ \(Renderer\).app - WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - SLPlugin.app - WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - -i net.${VIEWER_BINARY_NAME}.viewer - ${VIEWER_CHANNEL}.app - WORKING_DIRECTORY ${viewer_BINARY_DIR} - ) diff --git a/indra/newview/FixPackage.cmake.in b/indra/newview/FixPackage.cmake.in index 4ae777c2f4..26fd3ccff7 100644 --- a/indra/newview/FixPackage.cmake.in +++ b/indra/newview/FixPackage.cmake.in @@ -158,9 +158,9 @@ execute_process( COMMAND lipo libbz2.1.0.8.dylib -thin ${CMAKE_OSX_ARCHITECTURES} -output libbz2.1.0.8.dylib - COMMAND lipo libexpat.1.12.1.dylib + COMMAND lipo libexpat.1.12.2.dylib -thin ${CMAKE_OSX_ARCHITECTURES} - -output libexpat.1.12.1.dylib + -output libexpat.1.12.2.dylib COMMAND lipo libfreetype.6.dylib -thin ${CMAKE_OSX_ARCHITECTURES} -output libfreetype.6.dylib @@ -233,439 +233,3 @@ execute_process( WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Frameworks ERROR_QUIET ) - -message("By default, the situation is assumed to be the strictest, an Apple Silicon Mac with the default security settings. Running a native self-built viewer on it without correct codesigning would lead to a crash. Also, codesigning requires administrative access. If you believe you're not in such a situation, you can remove the sudos in this file.") -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libEGL.dylib - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libGLESv2.dylib - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libcef_sandbox.dylib - Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libvk_swiftshader.dylib - Frameworks/Chromium\ Embedded\ Framework.framework - Frameworks/libalut.0.dylib - Frameworks/libapr-1.0.dylib - Frameworks/libaprutil-1.0.dylib - Frameworks/libboost_atomic-mt.dylib - Frameworks/libboost_context-mt.dylib - Frameworks/libboost_fiber-mt.dylib - Frameworks/libboost_filesystem-mt.dylib - Frameworks/libboost_program_options-mt.dylib - Frameworks/libboost_regex-mt.dylib - Frameworks/libboost_system-mt.dylib - Frameworks/libboost_thread-mt.dylib - Frameworks/libboost_url-mt.dylib - Frameworks/libbrotlicommon.1.2.0.dylib - Frameworks/libbrotlidec.1.2.0.dylib - Frameworks/libbz2.1.0.8.dylib - Frameworks/libdiscord_partner_sdk.dylib - Frameworks/libexpat.1.12.1.dylib - Frameworks/libfreetype.6.dylib - Frameworks/libhunspell-1.7.0.dylib - Frameworks/libiconv.2.dylib - Frameworks/libicudata.78.3.dylib - Frameworks/libicui18n.78.3.dylib - Frameworks/libicuuc.78.3.dylib - Frameworks/libjpeg.8.3.2.dylib - Frameworks/libllwebrtc.dylib - Frameworks/libminizip.1.dylib - Frameworks/libncurses.6.dylib - Frameworks/libndofdev.dylib - Frameworks/libnghttp2.14.dylib - Frameworks/libogg.0.dylib - Frameworks/libopenal.1.25.1.dylib - Frameworks/libopenjp2.2.5.4.dylib - Frameworks/libpng16.16.dylib - Frameworks/libvlc.5.dylib - Frameworks/libvlccore.9.dylib - Frameworks/libvorbis.0.dylib - Frameworks/libvorbisenc.2.dylib - Frameworks/libvorbisfile.3.dylib - Frameworks/libxml2.16.dylib - Frameworks/libz.1.3.2.dylib - Resources/libndofdev.dylib - Resources/SLPlugin.app/Contents/Frameworks/media_plugin_cef.dylib - Resources/SLPlugin.app/Contents/Frameworks/media_plugin_libvlc.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_concat_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_imem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_mms_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_dummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_file_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_http_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_livehttp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_rist_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_shout_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_srt_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_udp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_realrtsp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_srt_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadaptive_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsfsstorage_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsvorepository_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadjust_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadpcm_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libadummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaes3_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libafile_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaiff_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libalphamask_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libamem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libanaglyph_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libantiflicker_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaom_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaraw_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libarchive_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaribsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libasf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libattachment_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libau_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudio_format_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_a_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_v_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudioscrobbler_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiotoolboxmidi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libauhal_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavaudiocapture_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcapture_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcodec_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libavi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libball_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libblend_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libblendbench_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluescreen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-awt-j2se-1.4.0.jar - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-j2se-1.4.0.jar - Resources/SLPlugin.app/Contents/Frameworks/plugins/libbonjour_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_block_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_read_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcanvas_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaopengllayer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdda_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libchain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libchorus_flanger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libci_filters_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libclone_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcolorthres_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcompressor_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libconsole_logger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcroppadd_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvdsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvpx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdav1d_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdcp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libddummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdecomp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdeinterlace_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_cdg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_chromecast_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_stl_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemuxdump_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdiracsys_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdirectory_demux_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdmxmus_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdolby_surround_decoder_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvbsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdnav_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdread_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libdynamicoverlay_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libedgedetection_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libedummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libequalizer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liberase_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libes_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libexport_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libextract_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfaad_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_keystore_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_logger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfilesystem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfingerprinter_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libflac_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libflacsys_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libflaschen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfloat_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfolder_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreetype_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreeze_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libftp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libg711_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgaussianblur_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgestures_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libglconv_cvpx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgme_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgnutls_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgoom_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradfun_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradient_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrey_yuv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libh26x_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhds_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libheadphone_channel_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhotkeys_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhqdn3d_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_10_p010_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_nv12_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_mmx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_sse2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_mmx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_sse2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_i420_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_mmx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_sse2_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libidummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libimage_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libimem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libinflate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libinteger_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libinvert_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libjpeg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libkaraoke_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libkate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libkeychain_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibass_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibbluray_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblive555_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblpcm_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liblua_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmacosx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmad_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmagnify_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmarq_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmediadirs_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmemory_keystore_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmirror_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmjpeg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmkv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmod_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmono_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmosaic_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotion_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotionblur_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotiondetect_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmp4_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpg123_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpgv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_asf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_avi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_dummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mp4_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mpjpeg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ogg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ts_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_wav_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libncurses_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnetsync_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnfs_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnormvol_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnoseek_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsspeechsynthesizer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libnuv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libogg_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liboggspots_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldmovie_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldrc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libopus_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libosx_notifications_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_a52_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_av1_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_copy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dirac_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dts_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_flac_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_h264_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_hevc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mlp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4audio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4video_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegaudio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegvideo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_vc1_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libparam_eq_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libplaylist_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpng_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpodcast_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libposterize_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpostproc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libprefetch_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libps_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpsychedelic_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpuzzle_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libpva_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawaud_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawdv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvid_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvideo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libreal_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librecord_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libremap_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libremoteosd_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libripple_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librist_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librotate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librss_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librtp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librtpvideo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/librv32_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsamplerate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsap_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsatip_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscale_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_pitch_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscene_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libschroedinger_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscreen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte18_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte27_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsdp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsecuretransport_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsepia_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsftp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsharpen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libshm_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsid_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsimple_channel_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libskiptags_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsmf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatialaudio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatializer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspdif_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_resampler_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libspudec_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstats_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstereo_widen_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstl_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_autodel_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_bridge_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromaprint_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromecast_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_cycle_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_delay_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_description_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_display_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_dummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_duplicate_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_es_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_gather_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_mosaic_bridge_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_record_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_rtp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_setid_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_smem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_standard_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_stats_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_transcode_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdec_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdelay_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubstx3g_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsusf_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubtitle_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsvcdsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libswscale_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libsyslog_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libt140_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtaglib_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtcp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtdummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtelx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtextst_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtheora_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtimecode_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtospdif_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtransform_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtrivial_channel_mixer_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libts_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtta_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libttml_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libtwolame_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libty_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libudp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libugly_resampler_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libuleaddvaudio_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libupnp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvc1_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvcd_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdr_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdummy_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvhs_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvideotoolbox_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvisual_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlc.5.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlccore.9.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvmem_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvobsub_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvoc_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvod_rtsp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvorbis_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvout_macosx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libvpx_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwall_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwav_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwave_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libwebvtt_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libx26410b_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libx264_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libx265_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libxa_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libxml_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuv_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuvp_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i420_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i422_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/plugins/libzvbi_plugin.dylib - Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper.app - Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Alerts\).app/Contents/MacOS/DullahanHelper\ \(Alerts\) - Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(GPU\).app/Contents/MacOS/DullahanHelper\ \(GPU\) - Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Plugin\).app/Contents/MacOS/DullahanHelper\ \(Plugin\) - WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - DullahanHelper\ \(Renderer\).app/Contents/MacOS/DullahanHelper\ \(Renderer\) - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --deep - DullahanHelper\ \(Alerts\).app - DullahanHelper\ \(GPU\).app - DullahanHelper\ \(Plugin\).app - WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - --deep - DullahanHelper\ \(Renderer\).app - WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - SLPlugin.app - WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources - ) -execute_process( - COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} - --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements - -i net.${VIEWER_BINARY_NAME}.viewer - ${CPACK_BUNDLE_NAME}.app - WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME} - ) diff --git a/indra/newview/SignBundle.cmake.in b/indra/newview/SignBundle.cmake.in new file mode 100644 index 0000000000..eb6ea1a35d --- /dev/null +++ b/indra/newview/SignBundle.cmake.in @@ -0,0 +1,430 @@ +message("By default, the situation is assumed to be the strictest, an Apple Silicon Mac with the default security settings. Running a native self-built viewer on it without correct codesigning would lead to a crash. Also, codesigning requires administrative access. If you believe you're not in such a situation, you can remove the sudos in this file.") +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libEGL.dylib + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libGLESv2.dylib + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libcef_sandbox.dylib + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libvk_swiftshader.dylib + Frameworks/Chromium\ Embedded\ Framework.framework + Frameworks/libalut.0.dylib + Frameworks/libapr-1.0.dylib + Frameworks/libaprutil-1.0.dylib + Frameworks/libboost_atomic-mt.dylib + Frameworks/libboost_context-mt.dylib + Frameworks/libboost_fiber-mt.dylib + Frameworks/libboost_filesystem-mt.dylib + Frameworks/libboost_program_options-mt.dylib + Frameworks/libboost_regex-mt.dylib + Frameworks/libboost_system-mt.dylib + Frameworks/libboost_thread-mt.dylib + Frameworks/libboost_url-mt.dylib + Frameworks/libbrotlicommon.1.2.0.dylib + Frameworks/libbrotlidec.1.2.0.dylib + Frameworks/libbz2.1.0.8.dylib + Frameworks/libdiscord_partner_sdk.dylib + Frameworks/libexpat.1.12.2.dylib + Frameworks/libfreetype.6.dylib + Frameworks/libhunspell-1.7.0.dylib + Frameworks/libiconv.2.dylib + Frameworks/libicudata.78.3.dylib + Frameworks/libicui18n.78.3.dylib + Frameworks/libicuuc.78.3.dylib + Frameworks/libjpeg.8.3.2.dylib + Frameworks/libllwebrtc.dylib + Frameworks/libminizip.1.dylib + Frameworks/libncurses.6.dylib + Frameworks/libndofdev.dylib + Frameworks/libnghttp2.14.dylib + Frameworks/libogg.0.dylib + Frameworks/libopenal.1.25.1.dylib + Frameworks/libopenjp2.2.5.4.dylib + Frameworks/libpng16.16.dylib + Frameworks/libvlc.5.dylib + Frameworks/libvlccore.9.dylib + Frameworks/libvorbis.0.dylib + Frameworks/libvorbisenc.2.dylib + Frameworks/libvorbisfile.3.dylib + Frameworks/libxml2.16.dylib + Frameworks/libz.1.3.2.dylib + Resources/libndofdev.dylib + Resources/SLPlugin.app/Contents/Frameworks/media_plugin_cef.dylib + Resources/SLPlugin.app/Contents/Frameworks/media_plugin_libvlc.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_concat_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_imem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_mms_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_dummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_file_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_http_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_livehttp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_rist_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_shout_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_srt_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_udp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_realrtsp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_srt_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadaptive_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsfsstorage_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsvorepository_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadjust_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadpcm_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaes3_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libafile_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaiff_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libalphamask_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libamem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libanaglyph_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libantiflicker_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaom_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaraw_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libarchive_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaribsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libasf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libattachment_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libau_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudio_format_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_a_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_v_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudioscrobbler_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiotoolboxmidi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libauhal_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavaudiocapture_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcapture_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcodec_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libball_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libblend_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libblendbench_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluescreen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-awt-j2se-1.4.0.jar + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-j2se-1.4.0.jar + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbonjour_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_block_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_read_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcanvas_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaopengllayer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdda_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libchain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libchorus_flanger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libci_filters_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libclone_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcolorthres_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcompressor_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libconsole_logger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcroppadd_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvdsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvpx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdav1d_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdcp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libddummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdecomp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdeinterlace_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_cdg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_chromecast_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_stl_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemuxdump_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdiracsys_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdirectory_demux_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdmxmus_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdolby_surround_decoder_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvbsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdnav_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdread_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdynamicoverlay_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libedgedetection_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libedummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libequalizer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liberase_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libes_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libexport_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libextract_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfaad_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_keystore_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_logger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfilesystem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfingerprinter_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libflac_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libflacsys_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libflaschen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfloat_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfolder_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreetype_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreeze_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libftp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libg711_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgaussianblur_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgestures_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libglconv_cvpx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgme_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgnutls_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgoom_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradfun_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradient_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrey_yuv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libh26x_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhds_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libheadphone_channel_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhotkeys_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhqdn3d_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_10_p010_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_nv12_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_i420_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libidummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libimage_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libimem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libinflate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libinteger_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libinvert_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libjpeg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libkaraoke_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libkate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libkeychain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibass_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibbluray_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblive555_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblpcm_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblua_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmacosx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmad_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmagnify_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmarq_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmediadirs_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmemory_keystore_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmirror_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmjpeg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmkv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmod_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmono_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmosaic_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotion_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotionblur_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotiondetect_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmp4_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpg123_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpgv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_asf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_avi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_dummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mp4_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mpjpeg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ogg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ts_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_wav_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libncurses_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnetsync_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnfs_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnormvol_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnoseek_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsspeechsynthesizer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnuv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libogg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liboggspots_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldmovie_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldrc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libopus_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libosx_notifications_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_a52_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_av1_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_copy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dirac_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dts_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_flac_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_h264_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_hevc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mlp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4audio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4video_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegaudio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegvideo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_vc1_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libparam_eq_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libplaylist_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpng_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpodcast_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libposterize_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpostproc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libprefetch_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpsychedelic_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpuzzle_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpva_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawaud_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawdv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvid_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvideo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libreal_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librecord_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libremap_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libremoteosd_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libripple_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librist_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librotate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librss_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librtp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librtpvideo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librv32_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsamplerate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsap_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsatip_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscale_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_pitch_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscene_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libschroedinger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscreen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte18_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte27_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsdp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsecuretransport_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsepia_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsftp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsharpen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libshm_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsid_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsimple_channel_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libskiptags_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsmf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatialaudio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatializer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspdif_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_resampler_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspudec_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstats_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstereo_widen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstl_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_autodel_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_bridge_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromaprint_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromecast_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_cycle_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_delay_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_description_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_display_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_dummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_duplicate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_es_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_gather_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_mosaic_bridge_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_record_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_rtp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_setid_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_smem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_standard_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_stats_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_transcode_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdec_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdelay_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubstx3g_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsusf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubtitle_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsvcdsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libswscale_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsyslog_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libt140_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtaglib_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtcp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtdummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtelx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtextst_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtheora_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtimecode_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtospdif_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtransform_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtrivial_channel_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libts_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtta_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libttml_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtwolame_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libty_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libudp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libugly_resampler_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libuleaddvaudio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libupnp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvc1_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvcd_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdr_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvhs_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvideotoolbox_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvisual_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlc.5.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlccore.9.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvmem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvobsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvoc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvod_rtsp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvorbis_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvout_macosx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvpx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwall_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwav_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwave_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwebvtt_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libx26410b_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libx264_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libx265_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libxa_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libxml_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuvp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i420_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i422_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libzvbi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Alerts\).app/Contents/MacOS/DullahanHelper\ \(Alerts\) + Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(GPU\).app/Contents/MacOS/DullahanHelper\ \(GPU\) + Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Plugin\).app/Contents/MacOS/DullahanHelper\ \(Plugin\) + WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + DullahanHelper.app + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + DullahanHelper\ \(Renderer\).app/Contents/MacOS/DullahanHelper\ \(Renderer\) + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --deep + DullahanHelper\ \(Alerts\).app + DullahanHelper\ \(GPU\).app + DullahanHelper\ \(Plugin\).app + WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + --deep + DullahanHelper\ \(Renderer\).app + WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + SLPlugin.app + WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + -i net.${VIEWER_BINARY_NAME}.viewer + ${VIEWER_CHANNEL}.app + WORKING_DIRECTORY ${viewer_BINARY_DIR} + ) diff --git a/indra/newview/SignBundleMmxSse2.cmake.in b/indra/newview/SignBundleMmxSse2.cmake.in new file mode 100644 index 0000000000..9d463337b0 --- /dev/null +++ b/indra/newview/SignBundleMmxSse2.cmake.in @@ -0,0 +1,11 @@ +message("By default, the situation is assumed to be the strictest, an Apple Silicon Mac with the default security settings. Codesigning requires administrative access. If you believe you're not in such a situation, you can remove the sudos in this file.") +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_mmx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_sse2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_mmx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_sse2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_mmx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_sse2_plugin.dylib + WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents + ) diff --git a/indra/newview/SignPackage.cmake.in b/indra/newview/SignPackage.cmake.in new file mode 100644 index 0000000000..9b5be4a7fd --- /dev/null +++ b/indra/newview/SignPackage.cmake.in @@ -0,0 +1,430 @@ +message("By default, the situation is assumed to be the strictest, an Apple Silicon Mac with the default security settings. Running a native self-built viewer on it without correct codesigning would lead to a crash. Also, codesigning requires administrative access. If you believe you're not in such a situation, you can remove the sudos in this file.") +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libEGL.dylib + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libGLESv2.dylib + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libcef_sandbox.dylib + Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libvk_swiftshader.dylib + Frameworks/Chromium\ Embedded\ Framework.framework + Frameworks/libalut.0.dylib + Frameworks/libapr-1.0.dylib + Frameworks/libaprutil-1.0.dylib + Frameworks/libboost_atomic-mt.dylib + Frameworks/libboost_context-mt.dylib + Frameworks/libboost_fiber-mt.dylib + Frameworks/libboost_filesystem-mt.dylib + Frameworks/libboost_program_options-mt.dylib + Frameworks/libboost_regex-mt.dylib + Frameworks/libboost_system-mt.dylib + Frameworks/libboost_thread-mt.dylib + Frameworks/libboost_url-mt.dylib + Frameworks/libbrotlicommon.1.2.0.dylib + Frameworks/libbrotlidec.1.2.0.dylib + Frameworks/libbz2.1.0.8.dylib + Frameworks/libdiscord_partner_sdk.dylib + Frameworks/libexpat.1.12.2.dylib + Frameworks/libfreetype.6.dylib + Frameworks/libhunspell-1.7.0.dylib + Frameworks/libiconv.2.dylib + Frameworks/libicudata.78.3.dylib + Frameworks/libicui18n.78.3.dylib + Frameworks/libicuuc.78.3.dylib + Frameworks/libjpeg.8.3.2.dylib + Frameworks/libllwebrtc.dylib + Frameworks/libminizip.1.dylib + Frameworks/libncurses.6.dylib + Frameworks/libndofdev.dylib + Frameworks/libnghttp2.14.dylib + Frameworks/libogg.0.dylib + Frameworks/libopenal.1.25.1.dylib + Frameworks/libopenjp2.2.5.4.dylib + Frameworks/libpng16.16.dylib + Frameworks/libvlc.5.dylib + Frameworks/libvlccore.9.dylib + Frameworks/libvorbis.0.dylib + Frameworks/libvorbisenc.2.dylib + Frameworks/libvorbisfile.3.dylib + Frameworks/libxml2.16.dylib + Frameworks/libz.1.3.2.dylib + Resources/libndofdev.dylib + Resources/SLPlugin.app/Contents/Frameworks/media_plugin_cef.dylib + Resources/SLPlugin.app/Contents/Frameworks/media_plugin_libvlc.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_concat_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_imem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_mms_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_dummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_file_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_http_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_livehttp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_rist_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_shout_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_srt_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_output_udp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_realrtsp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaccess_srt_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadaptive_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsfsstorage_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaddonsvorepository_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadjust_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadpcm_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libadummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaes3_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libafile_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaiff_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libalphamask_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libamem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libanaglyph_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libantiflicker_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaom_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaraw_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libarchive_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaribsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libasf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libattachment_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libau_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudio_format_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_a_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiobargraph_v_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudioscrobbler_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libaudiotoolboxmidi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libauhal_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavaudiocapture_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcapture_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavcodec_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libavi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libball_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libblend_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libblendbench_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluescreen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-awt-j2se-1.4.0.jar + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbluray-j2se-1.4.0.jar + Resources/SLPlugin.app/Contents/Frameworks/plugins/libbonjour_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_block_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcache_read_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcanvas_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcaopengllayer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdda_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcdg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libchain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libchorus_flanger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libci_filters_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libclone_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcolorthres_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcompressor_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libconsole_logger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcroppadd_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvdsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libcvpx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdav1d_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdcp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libddummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdecomp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdeinterlace_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_cdg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_chromecast_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemux_stl_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdemuxdump_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdiracsys_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdirectory_demux_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdmxmus_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdolby_surround_decoder_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvbsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdnav_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdvdread_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libdynamicoverlay_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libedgedetection_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libedummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libequalizer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liberase_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libes_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libexport_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libextract_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfaad_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_keystore_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfile_logger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfilesystem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfingerprinter_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libflac_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libflacsys_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libflaschen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfloat_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfolder_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreetype_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libfreeze_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libftp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libg711_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgaussianblur_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgestures_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libglconv_cvpx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgme_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgnutls_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgoom_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradfun_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgradient_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libgrey_yuv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libh26x_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhds_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libheadphone_channel_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhotkeys_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhqdn3d_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libhttps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_10_p010_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_nv12_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_i420_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libidummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libimage_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libimem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libinflate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libinteger_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libinvert_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libjpeg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libkaraoke_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libkate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libkeychain_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibass_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblibbluray_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblive555_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblogo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblpcm_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liblua_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmacosx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmad_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmagnify_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmarq_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmediadirs_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmemory_keystore_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmirror_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmjpeg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmkv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmod_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmono_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmosaic_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotion_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotionblur_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmotiondetect_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmp4_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpg123_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmpgv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_asf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_avi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_dummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mp4_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_mpjpeg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ogg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_ts_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libmux_wav_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libncurses_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnetsync_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnfs_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnormvol_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnoseek_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsspeechsynthesizer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnsv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libnuv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libogg_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liboggspots_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldmovie_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/liboldrc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libopus_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libosx_notifications_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_a52_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_av1_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_copy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dirac_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_dts_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_flac_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_h264_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_hevc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mlp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4audio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpeg4video_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegaudio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_mpegvideo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpacketizer_vc1_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libparam_eq_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libplaylist_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpng_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpodcast_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libposterize_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpostproc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libprefetch_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libps_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpsychedelic_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpuzzle_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libpva_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawaud_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawdv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvid_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librawvideo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libreal_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librecord_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libremap_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libremoteosd_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libripple_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librist_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librotate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librss_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librtp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librtpvideo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/librv32_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsamplerate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsap_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsatip_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscale_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_pitch_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscaletempo_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscene_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libschroedinger_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscreen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte18_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libscte27_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsdp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsecuretransport_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsepia_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsftp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsharpen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libshm_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsid_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsimple_channel_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libskiptags_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsmf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatialaudio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspatializer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspdif_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspeex_resampler_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libspudec_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstats_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstereo_widen_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstl_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_autodel_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_bridge_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromaprint_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_chromecast_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_cycle_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_delay_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_description_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_display_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_dummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_duplicate_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_es_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_gather_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_mosaic_bridge_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_record_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_rtp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_setid_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_smem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_standard_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_stats_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libstream_out_transcode_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdec_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsdelay_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubstx3g_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubsusf_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsubtitle_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsvcdsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libswscale_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libsyslog_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libt140_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtaglib_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtcp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtdummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtelx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtextst_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtheora_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtimecode_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtospdif_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtransform_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtrivial_channel_mixer_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libts_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtta_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libttml_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libtwolame_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libty_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libudp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libugly_resampler_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libuleaddvaudio_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libupnp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvc1_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvcd_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdr_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvdummy_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvhs_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvideotoolbox_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvisual_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlc.5.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvlccore.9.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvmem_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvobsub_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvoc_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvod_rtsp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvorbis_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvout_macosx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libvpx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwall_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwav_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwave_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libwebvtt_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libx26410b_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libx264_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libx265_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libxa_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libxml_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuv_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuvp_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i420_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libyuy2_i422_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libzvbi_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Alerts\).app/Contents/MacOS/DullahanHelper\ \(Alerts\) + Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(GPU\).app/Contents/MacOS/DullahanHelper\ \(GPU\) + Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Plugin\).app/Contents/MacOS/DullahanHelper\ \(Plugin\) + WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + DullahanHelper.app + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + DullahanHelper\ \(Renderer\).app/Contents/MacOS/DullahanHelper\ \(Renderer\) + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --deep + DullahanHelper\ \(Alerts\).app + DullahanHelper\ \(GPU\).app + DullahanHelper\ \(Plugin\).app + WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + --deep + DullahanHelper\ \(Renderer\).app + WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + SLPlugin.app + WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources + ) +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements + -i net.${VIEWER_BINARY_NAME}.viewer + ${CPACK_BUNDLE_NAME}.app + WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME} + ) diff --git a/indra/newview/SignPackageMmxSse2.cmake.in b/indra/newview/SignPackageMmxSse2.cmake.in new file mode 100644 index 0000000000..9a1c22cf68 --- /dev/null +++ b/indra/newview/SignPackageMmxSse2.cmake.in @@ -0,0 +1,11 @@ +message("By default, the situation is assumed to be the strictest, an Apple Silicon Mac with the default security settings. Codesigning requires administrative access. If you believe you're not in such a situation, you can remove the sudos in this file.") +execute_process( + COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET} + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_mmx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_rgb_sse2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_mmx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi420_yuy2_sse2_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_mmx_plugin.dylib + Resources/SLPlugin.app/Contents/Frameworks/plugins/libi422_yuy2_sse2_plugin.dylib + WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents + ) diff --git a/indra/newview/ViewerInstall.cmake b/indra/newview/ViewerInstall.cmake index 8f2827e1bc..273c0df3af 100644 --- a/indra/newview/ViewerInstall.cmake +++ b/indra/newview/ViewerInstall.cmake @@ -75,13 +75,37 @@ if (DARWIN) ${CMAKE_CURRENT_SOURCE_DIR}/FixPackage.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake ) - else (PACKAGE) + if (CMAKE_OSX_ARCHITECTURES MATCHES x86_64) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/SignPackageMmxSse2.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/SignBundleMmxSse2.cmake + ) + endif () + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/SignPackage.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/SignBundle.cmake + ) + else () configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/FixBundle.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake ) - endif (PACKAGE) + if (CMAKE_OSX_ARCHITECTURES MATCHES x86_64) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/SignBundleMmxSse2.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/SignBundleMmxSse2.cmake + ) + endif () + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/SignBundle.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/SignBundle.cmake + ) + endif () install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake) + if (CMAKE_OSX_ARCHITECTURES MATCHES x86_64) + install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/SignBundleMmxSse2.cmake) + endif () + install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/SignBundle.cmake) elseif (WINDOWS) @@ -130,18 +154,29 @@ elseif (WINDOWS) set(BOOST_PLATFORM x${ADDRESS_SIZE}) endif () + # Detect the actual Boost DLL suffix from vcpkg-installed binaries. + file(GLOB _boost_context_dlls "${prefix_result}/../bin/boost_context-*.dll") + if (_boost_context_dlls) + list(GET _boost_context_dlls 0 _boost_context_dll) + get_filename_component(_boost_context_dll_name "${_boost_context_dll}" NAME_WE) + string(REPLACE "boost_context" "" BOOST_DLL_SFX "${_boost_context_dll_name}") + else () + set(BOOST_DLL_SFX -vc143-mt-${BOOST_PLATFORM}-1_91) + message(WARNING "Could not detect Boost DLL suffix via glob; using fallback '${BOOST_DLL_SFX}'.") + endif () + install( PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${VIEWER_BINARY_NAME}.exe ${prefix_result}/../bin/OpenAL32.dll ${prefix_result}/../bin/alut.dll - ${prefix_result}/../bin/boost_context-vc143-mt-${BOOST_PLATFORM}-1_91.dll - ${prefix_result}/../bin/boost_fiber-vc143-mt-${BOOST_PLATFORM}-1_91.dll - ${prefix_result}/../bin/boost_filesystem-vc143-mt-${BOOST_PLATFORM}-1_91.dll - ${prefix_result}/../bin/boost_json-vc143-mt-${BOOST_PLATFORM}-1_91.dll - ${prefix_result}/../bin/boost_program_options-vc143-mt-${BOOST_PLATFORM}-1_91.dll - ${prefix_result}/../bin/boost_thread-vc143-mt-${BOOST_PLATFORM}-1_91.dll - ${prefix_result}/../bin/boost_url-vc143-mt-${BOOST_PLATFORM}-1_91.dll + ${prefix_result}/../bin/boost_context${BOOST_DLL_SFX}.dll + ${prefix_result}/../bin/boost_fiber${BOOST_DLL_SFX}.dll + ${prefix_result}/../bin/boost_filesystem${BOOST_DLL_SFX}.dll + ${prefix_result}/../bin/boost_json${BOOST_DLL_SFX}.dll + ${prefix_result}/../bin/boost_program_options${BOOST_DLL_SFX}.dll + ${prefix_result}/../bin/boost_thread${BOOST_DLL_SFX}.dll + ${prefix_result}/../bin/boost_url${BOOST_DLL_SFX}.dll ${prefix_result}/../bin/brotlicommon.dll ${prefix_result}/../bin/brotlidec.dll ${prefix_result}/../bin/bz2.dll @@ -176,8 +211,8 @@ elseif (WINDOWS) install( PROGRAMS - ${prefix_result}/../bin/boost_context-vc143-mt-${BOOST_PLATFORM}-1_91.dll - ${prefix_result}/../bin/boost_fiber-vc143-mt-${BOOST_PLATFORM}-1_91.dll + ${prefix_result}/../bin/boost_context${BOOST_DLL_SFX}.dll + ${prefix_result}/../bin/boost_fiber${BOOST_DLL_SFX}.dll ${prefix_result}/../bin/libapr-1.dll ${prefix_result}/../bin/libaprutil-1.dll ${prefix_result}/../bin/libexpat.dll @@ -191,26 +226,39 @@ install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_BINARY_NAME} ) if (LINUX) - if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) - set(_LIB lib/${ARCH}-linux-gnu) + if (USE_FLATPAK) + set(_LIB lib) + elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) + set(_LIB lib/${ARCH}-linux-gnu/${VIEWER_BINARY_NAME}) elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) - set(_LIB lib${ADDRESS_SIZE}) + set(_LIB lib${ADDRESS_SIZE}/${VIEWER_BINARY_NAME}) else () - set(_LIB lib) + set(_LIB lib/${VIEWER_BINARY_NAME}) endif () if (USE_DISCORD) install( FILES ${ARCH_PREBUILT_DIRS_RELEASE}/libdiscord_partner_sdk.so - DESTINATION ${_LIB}/${VIEWER_BINARY_NAME} + DESTINATION ${_LIB} + ) + endif () + if (USE_FLATPAK AND USE_OPENAL) + install( + FILES + ${ARCH_PREBUILT_DIRS_RELEASE}/libalut.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libalut.so.0 + ${ARCH_PREBUILT_DIRS_RELEASE}/libalut.so.0.0.0 + DESTINATION ${_LIB} ) endif () if (USE_FMODSTUDIO) - install(FILES - ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.so - ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.so.13 - ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.so.13.34 - DESTINATION ${_LIB}/${VIEWER_BINARY_NAME}) - endif (USE_FMODSTUDIO) + install( + FILES + ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.so + ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.so.13 + ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.so.13.35 + DESTINATION ${_LIB} + ) + endif () endif (LINUX) install(DIRECTORY skins app_settings fonts @@ -218,9 +266,43 @@ install(DIRECTORY skins app_settings fonts PATTERN ".svn" EXCLUDE ) +if (USE_FLATPAK) + file( + COPY ${CMAKE_CURRENT_SOURCE_DIR}/icons/hicolor + DESTINATION ${CMAKE_CURRENT_BINARY_DIR} + ) + file(RENAME + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/48x48/apps/${VIEWER_BINARY_NAME}.png + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/48x48/apps/net.${VIEWER_BINARY_NAME}.Viewer.png + ) + file(RENAME + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/64x64/apps/${VIEWER_BINARY_NAME}.png + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/64x64/apps/net.${VIEWER_BINARY_NAME}.Viewer.png + ) + file(RENAME + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/96x96/apps/${VIEWER_BINARY_NAME}.png + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/96x96/apps/net.${VIEWER_BINARY_NAME}.Viewer.png + ) + file(RENAME + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/128x128/apps/${VIEWER_BINARY_NAME}.png + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/128x128/apps/net.${VIEWER_BINARY_NAME}.Viewer.png + ) + file(RENAME + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/256x256/apps/${VIEWER_BINARY_NAME}.png + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/256x256/apps/net.${VIEWER_BINARY_NAME}.Viewer.png + ) + file(RENAME + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/512x512/apps/${VIEWER_BINARY_NAME}.png + ${CMAKE_CURRENT_BINARY_DIR}/hicolor/512x512/apps/net.${VIEWER_BINARY_NAME}.Viewer.png + ) + install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/hicolor + DESTINATION share/icons + ) +else () install(DIRECTORY icons/hicolor DESTINATION share/icons ) +endif () find_file(IS_ARTWORK_PRESENT NAMES have_artwork_bundle.marker PATHS ${VIEWER_DIR}/newview/res) @@ -257,8 +339,31 @@ install(FILES ${SCRIPTS_DIR}/messages/message_template.msg DESTINATION share/${VIEWER_BINARY_NAME}/app_settings ) +if (USE_FLATPAK) + file(COPY_FILE + ${CMAKE_CURRENT_SOURCE_DIR}/linux_tools/${VIEWER_BINARY_NAME}.desktop + ${CMAKE_CURRENT_BINARY_DIR}/net.${VIEWER_BINARY_NAME}.Viewer.desktop + ) + execute_process( + COMMAND sed -i "s/Icon=megapahit/Icon=net.megapahit.Viewer/" net.${VIEWER_BINARY_NAME}.Viewer.desktop + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/net.${VIEWER_BINARY_NAME}.Viewer.desktop + DESTINATION share/applications + ) + string(TIMESTAMP TODAY_DATE "%Y-%m-%d" UTC) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/net.megapahit.Viewer.metainfo.xml.in + ${CMAKE_CURRENT_BINARY_DIR}/net.megapahit.Viewer.metainfo.xml + ) + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/net.megapahit.Viewer.metainfo.xml + DESTINATION share/metainfo + ) +else () install(FILES linux_tools/${VIEWER_BINARY_NAME}.desktop DESTINATION share/applications ) +endif () endif (DARWIN) diff --git a/indra/newview/linux_tools/megapahit.desktop b/indra/newview/linux_tools/megapahit.desktop index 091df71e11..69c9fcda49 100755 --- a/indra/newview/linux_tools/megapahit.desktop +++ b/indra/newview/linux_tools/megapahit.desktop @@ -7,4 +7,3 @@ Terminal=false Type=Application Categories=Network; StartupNotify=true -X-Desktop-File-Install-Version=3.0" diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 719447b920..4c0de50223 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3406,7 +3406,7 @@ LLSD LLAppViewer::getViewerInfo() const url = LLTrans::getString("RELEASE_NOTES_BASE_URL"); if (!LLStringUtil::endsWith(url, "/")) url += "/"; - url += LLURI::escape(versionInfo.getVersion()) + ".html"; + url += "#" + LLURI::escape(versionInfo.getVersion()); // + ".html"; } info["VIEWER_RELEASE_NOTES_URL"] = url; diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index 0358233637..21cf2a1837 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -387,7 +387,7 @@ void LLLoginInstance::handleLoginFailure(const LLSD& event) relnotes = LLTrans::getString("RELEASE_NOTES_BASE_URL"); if (!LLStringUtil::endsWith(relnotes, "/")) relnotes += "/"; - relnotes += LLURI::escape(login_version) + ".html"; + relnotes += "#" + LLURI::escape(login_version); // + ".html"; } if (gViewerWindow) diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 66ca722b88..b491701a36 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1873,7 +1873,7 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ bool media_plugin_debugging_enabled = gSavedSettings.getBOOL("MediaPluginDebugging"); media_source->enableMediaPluginDebugging( media_plugin_debugging_enabled || clean_browser); -#if LL_LINUX +#if LL_LINUX || __FreeBSD__ bool media_plugin_pipewire_volume_catcher = gSavedSettings.getBOOL("MediaPluginPipeWireVolumeCatcher"); media_source->enablePipeWireVolumeCatcher( media_plugin_pipewire_volume_catcher ); #endif diff --git a/indra/newview/net.megapahit.Viewer.metainfo.xml.in b/indra/newview/net.megapahit.Viewer.metainfo.xml.in new file mode 100644 index 0000000000..deeaa9c140 --- /dev/null +++ b/indra/newview/net.megapahit.Viewer.metainfo.xml.in @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<component type="desktop-application"> + <id>net.megapahit.Viewer</id> + <launchable type="desktop-id">net.megapahit.Viewer.desktop</launchable> + <metadata_license>CC0-1.0</metadata_license> + <project_license>LGPL-2.1</project_license> + <name>Megapahit</name> + <developer id="net.megapahit"> + <name>Megapahit</name> + </developer> + <summary>A fork of the Second Life viewer</summary> + <description> + <p>An entrance to virtual empires in only megabytes. A shelter for the metaverse refugees, especially those from less supported operating systems.</p> + </description> + <url type="homepage">https://megapahit.net/</url> + <url type="vcs-browser">https://megapahit.org</url> + <url type="bugtracker">https://megapahit.com</url> + <releases> + <release version="${VIEWER_VERSION_MAJOR}.${VIEWER_VERSION_MINOR}.${VIEWER_VERSION_PATCH}.${VIEWER_VERSION_REVISION}" date="${TODAY_DATE}" /> + </releases> +</component> diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp index 2cc06b3bbc..d66e304b7e 100644 --- a/indra/newview/rlvhandler.cpp +++ b/indra/newview/rlvhandler.cpp @@ -393,6 +393,10 @@ ECmdRet ForceHandler<EBehaviour::Detach>::onCommand(const RlvCommand& rlvCmd) folderID = findDescendentCategoryIDByName(folderID, option); LLAppearanceMgr::instance().takeOffOutfit(folderID); } + else + { + LLAppearanceMgr::instance().removeItemFromAvatar(gObjectList.findObject(LLUUID(option))->getAttachmentItemID()); + } } return ECmdRet::Succeeded; } |
