diff --git a/.clang-format b/.clang-format index ee8a8a8c92f..aea7259450c 100644 --- a/.clang-format +++ b/.clang-format @@ -87,7 +87,7 @@ PenaltyBreakString: 1000 PenaltyBreakTemplateDeclaration: 10 PenaltyExcessCharacter: 1000000 PenaltyReturnTypeOnItsOwnLine: 1000 -PointerAlignment: Right +PointerAlignment: Left ReflowComments: true SortIncludes: false SortUsingDeclarations: true diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000000..c46330192cb --- /dev/null +++ b/.gitattributes @@ -0,0 +1,56 @@ +* text eol=lf + +# Sources +*.cpp text diff=cpp +*.h text diff=cpp +*.py text diff=python +indra/newview/llimprocessing.cpp -text + +# Visual Studio +*.sln text eol=crlf +*.vcproj text eol=crlf +*.vcxproj text eol=crlf + +# Documents +*.txt text +*.xml text +indra/tools/vstool/README.txt -text +indra/newview/installers/windows/FILES_ARE_UNICODE_UTF-16LE.txt -text + +# Graphics +*.png binary diff=exif +*.jpg binary diff=exif +*.jpeg binary diff=exif +*.gif binary diff=exif +*.tif binary +*.tiff binary +*.ico binary +*.svg text +*.eps binary +*.tga binary +*.j2k binary +*.j2c binary +*.icns binary +*.bmp binary +*.BMP binary + +# Scripts +*.sh text eol=lf +*.bat text eol=crlf + +# Viewer Files +*.db2 binary +*.llm binary + +# Fonts +*.ttf binary +*.otf binary + +# Mac +*.nib binary + +*.exe binary + +# Exclude files from exporting +.gitattributes export-ignore +.gitignore export-ignore diff --git a/.github/ISSUE_TEMPLATE/10-bug.yaml b/.github/ISSUE_TEMPLATE/10-bug.yaml index 41208e8bf59..82bd70a4a0a 100644 --- a/.github/ISSUE_TEMPLATE/10-bug.yaml +++ b/.github/ISSUE_TEMPLATE/10-bug.yaml @@ -1,18 +1,19 @@ name: Bug report description: Viewer bug report +title: "[Bug]: " labels: [bug, triage] body: - type: markdown attributes: value: | - Write a descriptive bug title above. - - Search [open](https://github.com/secondlife/viewer/issues?q=is%3Aopen+label%3Abug+is%3Aissue) bugs to ensure that the issue has not already been identified. + - Search [open](https://github.com/AlchemyViewer/Alchemy/issues?q=is%3Aopen+label%3Abug+is%3Aissue) bugs to ensure that the issue has not already been identified. - type: textarea attributes: label: Environment - description: About Second Life Text - placeholder: ex. Second Life Test 7.1.3.240191747 (64bit) ... + description: About Alchemy Text + placeholder: ex. Alchemy Test 7.1.3.240191747 (64bit) ... validations: required: true diff --git a/.github/ISSUE_TEMPLATE/20-enhancement.md b/.github/ISSUE_TEMPLATE/20-enhancement.md deleted file mode 100644 index dd404788111..00000000000 --- a/.github/ISSUE_TEMPLATE/20-enhancement.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: Enhancement -about: New feature or enhancement -title: New Feature -labels: enhancement, triage ---- - -_What does this feature/enhancement do? Why is it needed?_ - -## Test Plan - -_Include information, such as guidance and test scenarios, QA will need to test this feature._ diff --git a/.github/ISSUE_TEMPLATE/20-enhancement.yaml b/.github/ISSUE_TEMPLATE/20-enhancement.yaml new file mode 100644 index 00000000000..994b6752f0f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/20-enhancement.yaml @@ -0,0 +1,25 @@ +name: Enhancement +description: New feature or enhancement +title: "[New Feature]: " +labels: [enhancement, triage] +body: +- type: markdown + attributes: + value: | + - Write a descriptive feature/enhancement title above. + - Search [open](https://github.com/AlchemyViewer/Alchemy/issues?q=is%3Aopen+label%3Aenhancement+is%3Aissue) feature/enhancement requests to ensure that the feature has not already been requested. + +- type: textarea + attributes: + label: Environment + description: About Alchemy Text + placeholder: ex. Alchemy Test 7.1.3.240191747 (64bit) ... + validations: + required: true + +- type: textarea + attributes: + label: Description + description: What does this feature/enhancement do? Why is it needed? Include screenshots to illustrate how it should function if possible! + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index f2d58f5f654..40a4319389e 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: false contact_links: -- name: 💬 Community Feedback (Canny) - url: https://feedback.secondlife.com +- name: 💬 Alchemy Viewer Discord + url: https://discordapp.com/invite/KugCgs6 about: Space for discussing and reviewing user-impacting bug reports and feature requests. diff --git a/.github/labeler.yaml b/.github/labeler.yaml deleted file mode 100644 index 6e03801b65a..00000000000 --- a/.github/labeler.yaml +++ /dev/null @@ -1,81 +0,0 @@ -llappearance: - - indra/llappearance/**/* - -llaudio: - - indra/llaudio/**/* - -llcharacter: - - indra/llcharacter/**/* - -llcommon: - - indra/llcommon/**/* - -llcorehttp: - - indra/llcorehttp/**/* - -llcrashlogger: - - indra/llcrashlogger/**/* - -llfilesystem: - - indra/llfilesystem/**/* - -llimage: - - indra/llimage/**/* - -llimagej2coj: - - indra/llimagej2coj/**/* - -llinventory: - - indra/llinventory/**/* - -llkdu: - - indra/llkdu/**/* - -llmath: - - indra/llmath/**/* - -llmeshoptimizer: - - indra/llmeshoptimizer/**/* - -llmessage: - - indra/llmessage/**/* - -llplugin: - - indra/llplugin/**/* - -llprimitive: - - indra/llprimitive/**/* - -llrender: - - indra/llrender/**/* - -llui: - - indra/llui/**/* - -llwindow: - - indra/llwindow/**/* - -llxml: - - indra/llxml/**/* - -cmake: - - '**/*.cmake' - - '**/*/cmake/*' - - '**/CMakeLists.txt' - -python: - - '**/*.py' - -c/cpp: - - '**/*.c' - - '**/*.cpp' - - '**/*.cxx' - - '**/*.h' - - '**/*.hpp' - - '**/*.hxx' - - '**/*.i' - - '**/*.inl' - - '**/*.y' - -'team:viewer': - - '*' diff --git a/.github/release.yaml b/.github/release.yaml deleted file mode 100644 index f550e520207..00000000000 --- a/.github/release.yaml +++ /dev/null @@ -1,18 +0,0 @@ -changelog: - exclude: - labels: - - ignore-for-release - authors: - - dependabot - categories: - - title: Breaking Changes 🛠 - labels: - - semver-major - - breaking-change - - title: New Features 🎉 - labels: - - semver-minor - - enhancement - - title: Other Changes - labels: - - '*' diff --git a/.github/workflows/cla.yaml b/.github/workflows/cla.yaml deleted file mode 100644 index 3f4bf218649..00000000000 --- 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 - 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 diff --git a/.github/workflows/label.yaml b/.github/workflows/label.yaml deleted file mode 100644 index 6e41d8aa2d8..00000000000 --- 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@v4 - 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 d626eef38d7..00000000000 --- 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@v4 - - uses: actions/setup-python@v4 - with: - python-version: 3.x - - uses: pre-commit/action@v3.0.0 diff --git a/.gitignore b/.gitignore index 3b3666af843..f255daaee53 100755 --- a/.gitignore +++ b/.gitignore @@ -17,24 +17,18 @@ *~ # Specific paths and/or names +.venv CMakeCache.txt cmake_install.cmake LICENSES -build-darwin-* -build-linux-* +build-* debian/files debian/secondlife-appearance-utility* debian/secondlife-viewer* indra/.distcc -indra/cmake/* indra/out/* indra/packages/* -build-vc80/ -build-vc100/ -build-vc120/ -build-vc*-32/ -build-vc*-64/ indra/CMakeFiles indra/build-vc[0-9]* indra/lib/mono/1.0/*.dll @@ -52,12 +46,12 @@ indra/newview/app_settings/static_*.db2 indra/newview/avatar_icons_cache.txt indra/newview/avatar_lad.log indra/newview/browser_profile -indra/newview/character indra/newview/dbghelp.dll indra/newview/filters.xml indra/newview/fmod.dll indra/newview/fmod.log indra/newview/fonts +indra/newview/installers/windows/*.ico indra/newview/mozilla-theme indra/newview/mozilla-universal-darwin.tgz indra/newview/pilot.txt @@ -89,6 +83,6 @@ trivial_change_force_build web/config.* web/locale.* web/secondlife.com.* - +/Pipfile.lock .env .vscode diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000000..edef7269eee --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,445 @@ +stages: + - build + - upload + +default: + interruptible: true + timeout: 4h + +variables: + BUILD_CHANNEL: + value: "Test" + options: + - "Release" + - "Beta" + - "Project" + - "Test" + description: "The deployment channel target. Set to 'Test' by default." + PUBLIC_BUILD: + value: "FALSE" + options: + - "FALSE" + - "TRUE" + description: "Are package registry uploads public?. Set to 'TRUE' by default" + ENABLE_TESTS: + value: "TRUE" + options: + - "FALSE" + - "TRUE" + description: "Enable Sentry crash reporting. Set to 'TRUE' by default." + description: "Enable Discord integrations. Set to 'TRUE' by default." + ENABLE_LTO: + value: "TRUE" + options: + - "FALSE" + - "TRUE" + description: "Enable Link Time Optimization. Set to 'TRUE' by default." + USE_HAVOK: + value: "TRUE" + options: + - "FALSE" + - "TRUE" + description: "Enable Havok integrations. Set to 'TRUE' by default." + USE_SENTRY: + value: "TRUE" + options: + - "FALSE" + - "TRUE" + description: "Enable Sentry crash reporting. Set to 'TRUE' by default." + USE_DISCORD: + value: "TRUE" + options: + - "FALSE" + - "TRUE" + AUTOBUILD_BUILD_ID: $CI_PIPELINE_ID + AUTOBUILD_GITLAB_TOKEN: $CI_JOB_TOKEN + AUTOBUILD_INSTALLABLE_CACHE: "$CI_PROJECT_DIR/.cache/autobuild" + PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" + +.win_build: + stage: build + tags: + - autobuild + - windows + cache: + key: + files: + - autobuild.xml + prefix: ${CI_JOB_NAME} + paths: + - .cache/autobuild + - .cache/pip + when: 'always' + before_script: + - python -m venv .venv + - .\.venv\Scripts\Activate.ps1 + - pip install --upgrade llbase autobuild certifi sentry-cli cmake + script: + - autobuild configure -c Release -- -DUSE_LTO="${ENABLE_LTO}" -DHAVOK_TPV="${USE_HAVOK}" -DLL_TESTS="${ENABLE_TESTS}" -DDISABLE_FATAL_WARNINGS=ON -DREVISION_FROM_VCS=FALSE + - autobuild build -c Release --no-configure + - autobuild graph -c Release --graph-file "alchemy-windows${AUTOBUILD_ADDRSIZE}-dependencies.svg" "build-vc-${AUTOBUILD_ADDRSIZE}/autobuild-package.xml" + - If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli debug-files upload --include-sources (Get-Item .\build-vc-${AUTOBUILD_ADDRSIZE}\newview\Release\alchemy-bin.*).FullName (Get-Item .\build-vc-64\newview\Release\*.dll).FullName } + artifacts: + name: "$env:CI_COMMIT_REF_NAME-$env:CI_COMMIT_SHORT_SHA" + expire_in: 1 week + paths: + - build-vc-*/newview/Release/build_data.json + - build-vc-*/newview/Release/Alchemy_*_Setup.exe + - alchemy-*-dependencies.svg + +.mac_build: + stage: build + tags: + - mac + - m1 + - bash + cache: + key: + files: + - autobuild.xml + prefix: ${CI_JOB_NAME} + paths: + - .cache/autobuild + - .cache/pip + when: 'always' + variables: + VIEWER_SIGNING_IDENTITY: $APPLE_SIGNATURE + before_script: + - python3 -m venv .venv + - source .venv/bin/activate + - pip3 install --upgrade llbase autobuild dmgbuild certifi sentry-cli cmake + script: + - autobuild configure -c Release -- -DENABLE_SIGNING=ON -DUSE_LTO="${ENABLE_LTO}" -DHAVOK_TPV=${USE_HAVOK} -DLL_TESTS="${ENABLE_TESTS}" -DDISABLE_FATAL_WARNINGS=ON -DREVISION_FROM_VCS=FALSE + - autobuild build -c Release --no-configure + - autobuild graph -c Release --graph-file alchemy-darwin${AUTOBUILD_ADDRSIZE}-dependencies.svg build-darwin-64/autobuild-package.xml + - if [ "$USE_SENTRY" = "TRUE" ]; then sentry-cli debug-files upload --include-sources build-darwin-64/newview/Release/*.app.dSYM build-darwin-64/newview/Release/*.app/Contents/MacOS/ build-darwin-64/newview/Release/*.app/Contents/Frameworks/ build-darwin-*/packages/lib/release/*.dSYM; fi + artifacts: + name: "$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA" + expire_in: 1 week + paths: + - build-darwin-*/build_data.json + - build-darwin-*/newview/Alchemy_*.dmg + - alchemy-*-dependencies.svg + +.linux_build: + stage: build + image: r.alchemyviewer.org/alchemy/infrastructure/ubuntu-build-image:latest-jammy + tags: + - linux + - docker + cache: + key: + files: + - autobuild.xml + prefix: ${CI_JOB_NAME} + paths: + - .cache/autobuild + - .cache/pip + when: 'always' + before_script: + - python3 -m venv .venv + - source .venv/bin/activate + - pip3 install --upgrade llbase autobuild certifi sentry-cli cmake ninja + script: + - autobuild configure -c Release -- -DUSE_LTO="${ENABLE_LTO}" -DLL_TESTS="${ENABLE_TESTS}" -DDISABLE_FATAL_WARNINGS=ON -DREVISION_FROM_VCS=FALSE -DCOMPRESS_DEBUG=ON + - autobuild build -c Release --no-configure + - autobuild graph -c Release --graph-file alchemy-linuxs${AUTOBUILD_ADDRSIZE}-dependencies.svg build-linux-${AUTOBUILD_ADDRSIZE}/autobuild-package.xml + - if [ "$USE_SENTRY" = "TRUE" ]; then sentry-cli debug-files upload --include-sources build-linux-64/newview/*.debug build-linux-64/newview/packaged/alchemy-bin build-linux-64/llwebrtc/*.so build-linux-64/packages/lib/release/*.so*; fi + artifacts: + name: "$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA" + expire_in: 1 week + paths: + - build-linux-*/build_data.json + - build-linux-*/newview/Alchemy_*.tar.* + - alchemy-*-dependencies.svg + +coverity_scan: + stage: build + image: r.alchemyviewer.org/alchemy/infrastructure/ubuntu-build-image:latest-llvm-coverity + tags: + - linux + - docker + rules: + - if: '$CI_COMMIT_BRANCH == "coverity"' + cache: + key: + files: + - autobuild.xml + prefix: ${CI_JOB_NAME} + paths: + - .cache/autobuild + - .cache/pip + when: 'always' + variables: + AUTOBUILD_ADDRSIZE: 64 + before_script: + - python -m venv .venv + - source .venv/bin/activate + - pip3 install --upgrade llbase autobuild cmake ninja + script: + - cov-configure --template --comptype clangcc --compiler clang-12 + - cov-configure --template --comptype clangcxx --compiler clang++-12 + - autobuild configure -c Coverity -- -DLL_TESTS=OFF -DUSE_FMODSTUDIO=ON -DUSE_NVAPI=ON -DUSE_LTO=OFF -DDISABLE_FATAL_WARNINGS=ON -DREVISION_FROM_VCS=FALSE -DUSE_PRECOMPILED_HEADERS=OFF + - autobuild build -c Coverity --no-configure + - pushd "build-linux-64" + - tar caf alchemyviewer.xz cov-int + - curl --header "JOB-TOKEN:$CI_JOB_TOKEN" --upload-file alchemyviewer.xz "${CI_API_V4_URL}/projects/165/packages/generic/coverity/0.0.$CI_PIPELINE_ID/alchemyviewer.xz" + - popd + + +.win32_build: + extends: .win_build + variables: + AUTOBUILD_ADDRSIZE: 32 + cache: + key: + prefix: windows32 + +.win64_build: + extends: .win_build + variables: + AUTOBUILD_ADDRSIZE: 64 + cache: + key: + prefix: windows64 + +.mac64_build: + extends: .mac_build + variables: + AUTOBUILD_ADDRSIZE: 64 + cache: + key: + prefix: darwin64 + +.linux32_build: + extends: .linux_build + variables: + AUTOBUILD_ADDRSIZE: 32 + cache: + key: + prefix: linux32 + +.linux64_build: + extends: .linux_build + variables: + AUTOBUILD_ADDRSIZE: 64 + cache: + key: + prefix: linux64 + +.dev_rules: + rules: + - if: $BUILD_CHANNEL != "Test" || $CI_COMMIT_TAG + when: never + - if: '$CI_PIPELINE_SOURCE == "web"' + - if: '$CI_PIPELINE_SOURCE == "schedule"' + #- if: '$CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push"' + # when: delayed + # start_in: '12 hours' + variables: + USE_SENTRY: "FALSE" + VIEWER_CHANNEL_TYPE: Test + VIEWER_USE_CRASHPAD: "FALSE" + +.project_rules: + rules: + - if: '$BUILD_CHANNEL == "Project" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")' + - if: '$CI_COMMIT_TAG =~ /.*-project/' + variables: + VIEWER_CHANNEL_TYPE: Project + +.beta_rules: + rules: + - if: '$BUILD_CHANNEL == "Beta" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")' + - if: '$CI_COMMIT_TAG =~ /.*-beta/' + variables: + VIEWER_CHANNEL_TYPE: Beta + +.release_rules: + rules: + - if: '$BUILD_CHANNEL == "Release" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")' + - if: '$CI_COMMIT_TAG =~ /.*-release/' + variables: + VIEWER_CHANNEL_TYPE: Release + +build:dev:linux64: + extends: + - .linux64_build + - .dev_rules + +build:dev:mac64: + extends: + - .mac64_build + - .dev_rules + +.build:dev:windows32: + extends: + - .win32_build + - .dev_rules + +build:dev:windows64: + extends: + - .win64_build + - .dev_rules + +build:project:linux64: + extends: + - .linux64_build + - .project_rules + +build:project:mac64: + extends: + - .mac64_build + - .project_rules + +.build:project:windows64: + extends: + - .win32_build + - .project_rules + +build:project:windows64: + extends: + - .win64_build + - .project_rules + +build:beta:linux64: + extends: + - .linux64_build + - .beta_rules + +build:beta:mac64: + extends: + - .mac64_build + - .beta_rules + +.build:beta:windows32: + extends: + - .win32_build + - .beta_rules + +build:beta:windows64: + extends: + - .win64_build + - .beta_rules + +build:release:linux64: + extends: + - .linux64_build + - .release_rules + +build:release:mac64: + extends: + - .mac64_build + - .release_rules + +.build:release:windows32: + extends: + - .win32_build + - .release_rules + +build:release:windows64: + extends: + - .win64_build + - .release_rules + +.upload_template: + stage: upload + image: r.alchemyviewer.org/alchemy/infrastructure/viewer-deploy-image:latest + tags: + - pwsh + - docker + allow_failure: false + before_script: + - python3 -m venv .venv + - ./.venv/bin/Activate.ps1 + - pip3 install --upgrade sentry-cli + script: + - $BuildData = Get-Content ./build-vc-64/newview/Release/build_data.json | ConvertFrom-Json + - $BuildChannelVersion = $BuildData.Channel + ' ' + $BuildData.Version + - $BuildChannelOneword = $BuildData.Channel.Replace(" ", "") + - $PkgName = $BuildData.Channel.Replace(" ", "_") + - $PkgVer = $BuildData.Version + - $SetupUploadProjectID = "${CI_PROJECT_ID}" + - If ($env:PUBLIC_BUILD -eq 'FALSE') { $SetupUploadProjectID = "200" } + - $UploadDestURL = "${CI_API_V4_URL}/projects/${SetupUploadProjectID}/packages/generic/${PkgName}/${PkgVer}" + - $UpdateDeployDestURL = "${CI_API_V4_URL}/projects/198/packages/generic/${BuildChannelOneword}" + - > + $UploadParams = @{ + Method = "PUT"; + Headers = @{ + "JOB-TOKEN" = "${CI_JOB_TOKEN}"; }; + Verbose = $false; + }; + + - If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli releases new $BuildChannelVersion && sentry-cli releases set-commits --auto $BuildChannelVersion } + + - $DestStatus = "?select=package_file&status=default" + + - Push-Location ./build-linux-64/ + - Push-Location ./newview/ + - $LnxFileName = Get-ChildItem -Path . -Name -Include Alchemy_*.tar.* + - $LnxFileHash = (Get-FileHash .\$LnxFileName -a sha256).Hash + - $LnxPackageUrl = "${UploadDestURL}/${LnxFileName}" + - $LnxUploadResult = Invoke-WebRequest @UploadParams -InFile ./$LnxFileName -Uri "${LnxPackageUrl}${DestStatus}" -MaximumRetryCount 5 -RetryIntervalSec 30 | ConvertFrom-Json + - If ($LnxFileHash -ne $LnxUploadResult.file_sha256) { Write-Output "Upload hash mismatch. expected $Hash actual $($LnxUploadResult.file_sha256)" && Exit 1 } + - Pop-Location + - Pop-Location + + - Push-Location ./build-darwin-64/ + - Push-Location ./newview/ + - $MacFileName = Get-ChildItem -Path . -Name -Include Alchemy_*.dmg + - $MacFileHash = (Get-FileHash .\$MacFileName -a sha256).Hash + - $MacPackageUrl = "${UploadDestURL}/${MacFileName}" + - $MacUploadResult = Invoke-WebRequest @UploadParams -InFile ./$MacFileName -Uri "${MacPackageUrl}${DestStatus}" -MaximumRetryCount 5 -RetryIntervalSec 30 | ConvertFrom-Json + - If ($MacFileHash -ne $MacUploadResult.file_sha256) { Write-Output "Upload hash mismatch. expected $Hash actual $($MacUploadResult.file_sha256)" && Exit 1 } + - Pop-Location + - Pop-Location + + - Push-Location ./build-vc-64/ + - Push-Location ./newview/Release/ + - $WinFileName = Get-ChildItem -Path . -Name -Include Alchemy_*_Setup.exe + - $WinFileHash = (Get-FileHash .\$WinFileName -a sha256).Hash + - $WinPackageUrl = "${UploadDestURL}/${WinFileName}" + - $WinUploadResult = Invoke-WebRequest @UploadParams -InFile ./$WinFileName -Uri "${WinPackageUrl}${DestStatus}" -MaximumRetryCount 5 -RetryIntervalSec 30 | ConvertFrom-Json + - If ($WinFileHash -ne $WinUploadResult.file_sha256) { Write-Output "Upload hash mismatch. expected $Hash actual $($WinUploadResult.file_sha256)" && Exit 1 } + + - Pop-Location + - Pop-Location + - If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli releases finalize $BuildChannelVersion } + - Write-Output "Package Listing > https://git.alchemyviewer.org/alchemy/alchemy-next/-/packages/$($WinUploadResult.package_id)" + - Write-Output "Windows Package > ${WinPackageUrl}" + - Write-Output "macOS Package > ${MacPackageUrl}" + - Write-Output "Linux Package > ${LnxPackageUrl}" + +upload:project: + extends: + - .upload_template + rules: + - if: '$BUILD_CHANNEL == "Project" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")' + when: manual + - if: '$CI_COMMIT_TAG =~ /.*-project/' + when: manual + environment: + name: qa + +upload:beta: + extends: + - .upload_template + rules: + - if: '$BUILD_CHANNEL == "Beta" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")' + when: manual + - if: '$CI_COMMIT_TAG =~ /.*-beta/' + when: manual + environment: + name: beta + +upload:release: + extends: + - .upload_template + rules: + - if: '$BUILD_CHANNEL == "Release" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")' + when: manual + - if: '$CI_COMMIT_TAG =~ /.*-release/' + when: manual + environment: + name: release diff --git a/.gitlab/.gitlab-webide.yml b/.gitlab/.gitlab-webide.yml new file mode 100644 index 00000000000..3eb4463f07a --- /dev/null +++ b/.gitlab/.gitlab-webide.yml @@ -0,0 +1,3 @@ +terminal: + image: r.alchemyviewer.org/alchemy/infrastructure/ubuntu-build-image:latest-llvm + script: sleep 60 \ No newline at end of file diff --git a/.gitlab/issue_templates/Bug.md b/.gitlab/issue_templates/Bug.md new file mode 100644 index 00000000000..18f929f2ffc --- /dev/null +++ b/.gitlab/issue_templates/Bug.md @@ -0,0 +1,20 @@ +## Environment +``` +(Please open `Help->About Alchemy` and click Copy to Clipboard then paste the About information here.) +``` + +## Summary +(Summarize the bug encountered concisely.) + +## Steps to reproduce +(How one can reproduce the issue - this is very important) + +## What is the expected correct behavior? +(What you should see or what should happen instead) + +## Relevant logs and/or screenshots +``` +(Attach or paste any relevant logs) +``` + +/label ~Type::Bug ~Status::Awaiting-Investigation diff --git a/.gitlab/issue_templates/Improvement.md b/.gitlab/issue_templates/Improvement.md new file mode 100644 index 00000000000..25d9fd68a57 --- /dev/null +++ b/.gitlab/issue_templates/Improvement.md @@ -0,0 +1,10 @@ +## Summary +(Summarize the requested improvement concisely.) + +## Why is this improvement important to you? How would it benefit the community? +(Provide reasoning as to why the improvement is important to you, and ways it could benefit the larger Alchemy Viewer community.) + +## Screenshots, Mockups, etc +(Attach or paste any relevant screenshots or mockups.) + +/label ~Type::Improvement ~Status::Awaiting-Investigation \ No newline at end of file diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d40f02dc0c4..44d26507c1b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,18 +1,18 @@ +ci: + autofix_prs: false repos: - repo: https://github.com/secondlife/git-hooks.git rev: v1.0.2 hooks: - - id: opensource-license - id: llsd - id: no-trigraphs - - id: copyright - id: end-of-file files: \.(cpp|c|h|py|glsl|cmake|txt)$ exclude: language.txt - id: indent-with-spaces files: \.(cpp|c|h|inl|py|glsl|cmake)$ - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v5.0.0 hooks: - id: check-xml - id: mixed-line-ending diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 00000000000..871305031c7 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,2 @@ +# Protect sensitive files +.gitlab-ci.yml @rye \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6bd8a2b74c5..80a9ea89c0e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,76 +1,85 @@ # Contributor guidelines -Thanks for your interest in contributing to Second Life! This document +Thanks for your interest in contributing to Alchemy Viewer! This document summarizes some of the most important points for people looking to contribute -to the platform especially those looking to provide bug reports and code +to the project especially those looking to provide bug reports and code changes. ## Table of contents -- [Communication](#communication) -- [Reporting bugs and requesting features](#reporting-bugs-and-requesting-features) -- [Contributing pull requests](#contributing-pull-requests) +- [Contributor guidelines](#contributor-guidelines) + - [Table of contents](#table-of-contents) + - [Communication](#communication) + - [Reporting Bugs and Requesting Features](#reporting-bugs-and-requesting-features) + - [Importance of Your Feedback](#importance-of-your-feedback) + - [Our Relationship with Linden Lab and Code Inheritance](#our-relationship-with-linden-lab-and-code-inheritance) + - [Reporting Bugs to Linden Lab](#reporting-bugs-to-linden-lab) + - [Submitting Feedback to Alchemy Viewer](#submitting-feedback-to-alchemy-viewer) + - [Contributing pull requests](#contributing-pull-requests) ## Communication -Second Life has multiple channels for communication. Some of these channels are -more end-user focused, while others are more tailored for -developer-to-developer or support. - -- [feedback.secondlife.com][] is Second Life's primary community engagement - forum. Ideas and bug reports should be placed here unless they relate to - ongoing development issues and developer-to-developer communication. -- [Public user groups][slug] are held on a regular basis, including those for - discussing open source development, content creation, server topics and more. -- [Github issues][] provide a means for staff to organize their - work and collaborate with other developers. By default most user-facing - discussions should happen on [feedback.secondlife.com][] so that they are - visible to more people, can build consensus, and be placed onto our public - roadmap. Github issues are useful for collaboration between viewer forks - and the official upstream and when engineering-specific and technical - collaboration is beneficial. -- [Official forums][] exist for many topics including content creation, - scripting, social topics and more. -- The [opensource-dev mailing list][] is useful for announcements and - discussion between viewer maintainers. - - -## Reporting bugs and requesting features - -Report bugs and provide ideas for features using the respective board on Second -Life's feedback portal: - -- [Features](https://feedback.secondlife.com/feature-requests) -- [Scripting bugs](https://feedback.secondlife.com/scripting-bugs) -- [Scripting features](https://feedback.secondlife.com/scripting-features) -- [Server bugs](https://feedback.secondlife.com/scripting-bugs) -- [Viewer bugs](https://feedback.secondlife.com/bug-reports) -- [Web/Marketplace bugs](https://feedback.secondlife.com/web-bugs) -- [Web/Marketplace features](https://feedback.secondlife.com/web-features) - -Creating posts on feedback.secondlife.com is important as it allows the greatest -exposure and input from Second Life users. It also allows Linden Lab staff to -place work on a single public roadmap. - -Issues created on feedback.secondlife.com are imported onto Github after they -have been reviewed by staff and accepted. +Alchemy Viewer has multiple channels for communication. Some of these channels are +more end-user focused while others are more tailored for developer-to-developer or support. + +- [Our Discord][discord] is the primary community engagement platform for the project. + This is where we announce our releases, answer questions from the community, + and provide support to users. This is also a great place for developers to interact + with the Alchemy users to determine if their feature is interesting to them. +- [Github issues][] provide a means for developers and contributors to organize + their work and collaborate with other developers. By default most user-facing + discussions should happen on [the Discord][discord] so that they are + visible to more people, and can build consensus. + +## Reporting Bugs and Requesting Features + +### Importance of Your Feedback + +We value your feedback and invite you to help us identify bugs and suggest new features for Alchemy Viewer. +Your input is crucial in shaping the future of our project. + +Your cooperation with these guidelines will help us improve Alchemy Viewer, +and ensures that Linden Lab can address broader issues within their codebase. + +### Our Relationship with Linden Lab and Code Inheritance + +It's important to note that while we are not affiliated with or endorsed by Linden Lab, +the creators of Second Life, our viewer incorporates a significant amount of code from them. + +This shared codebase means some issues may originate from the Linden Lab viewer, +and addressing these effectively benefits both viewers. + +### Reporting Bugs to Linden Lab + +If you encounter defects or unwanted behavior that are inherited from the official Second Life viewer, +please report these issues directly to Linden Lab. + +Before submitting a bug report to Alchemy Viewer, kindly check the [official Second Life viewer][lindenviewer] +to determine if the defect exists there as well. + +Reporting it to Linden Lab, if it hasn't already been reported, will ensure they are aware of the issue. +If you are unsure, you are encouraged to share your findings with an Alchemy team member to receive guidance. +Linden Lab's page for submitting bug reports can be found on [feedback.secondlife.com/bug-reports][lindenbugs]. + +### Submitting Feedback to Alchemy Viewer + +If the defect is unique to Alchemy Viewer or pertains to features exclusive to our viewer, please proceed to submit your bug report to us on Github. Provide as much detail as possible, including steps to reproduce the issue, logs, and screenshots if available. This information will help us diagnose and address the problem more efficiently. ## Contributing pull requests If you wish to contribute a new pull request, please ensure that: - You talk to other developers about how best to implement the work. -- The functionality is desired. Be sure to talk to users and Second Life staff to ensure - the work is a good idea and will be accepted. +- The functionality is desired. Be sure to talk to users and members of the Alchemy + team to ensure the work is a good idea and will be accepted. - The work is high quality and the PR follows [PR etiquette][] - You have tested the work locally The [Git Style Guide](https://github.com/agis/git-style-guide) is also a good reference for best git practices. -[feedback.secondlife.com]: https://feedback.secondlife.com -[slug]: https://community.secondlife.com/blogs/entry/6509-introducing-the-second-life-public-calendar/ [PR etiquette]: https://gist.github.com/mikepea/863f63d6e37281e329f8 -[Github issues]: https://github.com/secondlife/viewer/issues -[Official forums]: https://community.secondlife.com/forums/ -[opensource-dev mailing list]: https://wiki.secondlife.com/wiki/OpenSource-Dev +[Github issues]: https://github.com/AlchemyViewer/Alchemy/issues +[discord]: https://discordapp.com/invite/KugCgs6 +[lindenviewer]: https://releasenotes.secondlife.com/viewer.html +[lindenbugs]: https://feedback.secondlife.com/bug-reports diff --git a/LICENSE b/LICENSE deleted file mode 100755 index 4362b49151d..00000000000 --- a/LICENSE +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000000..3a3af496f87 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,494 @@ +GNU Lesser General Public License +================================= + +_Version 2.1, February 1999_ +_Copyright © 1991, 1999 Free Software Foundation, Inc._ +_51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA_ + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +_This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence +the version number 2.1._ + +### Preamble + +The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + +This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + +When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + +To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + +For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + +We protect your rights with a two-step method: **(1)** we copyright the +library, and **(2)** we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + +To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + +Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + +Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + +When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + +We call this license the “Lesser†General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + +For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + +In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + +Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + +The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +“work based on the library†and a “work that uses the libraryâ€. The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + +### TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +**0.** This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called “this Licenseâ€). +Each licensee is addressed as “youâ€. + +A “library†means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + +The “Libraryâ€, below, refers to any such software library or work +which has been distributed under these terms. A “work based on the +Library†means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term “modificationâ€.) + +“Source code†for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + +**1.** You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + +You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + +**2.** You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + +* **a)** The modified work must itself be a software library. +* **b)** You must cause the files modified to carry prominent notices +stating that you changed the files and the date of any change. +* **c)** You must cause the whole of the work to be licensed at no +charge to all third parties under the terms of this License. +* **d)** If a facility in the modified Library refers to a function or a +table of data to be supplied by an application program that uses +the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, +in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of +its purpose remains meaningful. +(For example, a function in a library to compute square roots has +a purpose that is entirely well-defined independent of the +application. Therefore, Subsection 2d requires that any +application-supplied function or table used by this function must +be optional: if the application does not supply it, the square +root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + +**3.** You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + +Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + +This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + +**4.** You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + +If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + +**5.** A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a “work that uses the Libraryâ€. Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + +However, linking a “work that uses the Library†with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a “work that uses the +libraryâ€. The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + +When a “work that uses the Library†uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + +If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + +Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + +**6.** As an exception to the Sections above, you may also combine or +link a “work that uses the Library†with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + +You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + +* **a)** Accompany the work with the complete corresponding +machine-readable source code for the Library including whatever +changes were used in the work (which must be distributed under +Sections 1 and 2 above); and, if the work is an executable linked +with the Library, with the complete machine-readable “work that +uses the Libraryâ€, as object code and/or source code, so that the +user can modify the Library and then relink to produce a modified +executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the +Library will not necessarily be able to recompile the application +to use the modified definitions.) +* **b)** Use a suitable shared library mechanism for linking with the +Library. A suitable mechanism is one that (1) uses at run time a +copy of the library already present on the user's computer system, +rather than copying library functions into the executable, and (2) +will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. +* **c)** Accompany the work with a written offer, valid for at +least three years, to give the same user the materials +specified in Subsection 6a, above, for a charge no more +than the cost of performing this distribution. +* **d)** If distribution of the work is made by offering access to copy +from a designated place, offer equivalent access to copy the above +specified materials from the same place. +* **e)** Verify that the user has already received a copy of these +materials or that you have already sent this user a copy. + +For an executable, the required form of the “work that uses the +Library†must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + +It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + +**7.** You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + +* **a)** Accompany the combined library with a copy of the same work +based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. +* **b)** Give prominent notice with the combined library of the fact +that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + +**8.** You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + +**9.** You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + +**10.** Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + +**11.** If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +**12.** If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + +**13.** The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +“any later versionâ€, you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + +**14.** If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + +### NO WARRANTY + +**15.** BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY “AS IS†WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +**16.** IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + +_END OF TERMS AND CONDITIONS_ + +### How to Apply These Terms to Your New Libraries + +If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + +To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +“copyright†line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a “copyright disclaimer†for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/README.md b/README.md index 1e40c7f9f58..f01c920f27c 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,29 @@ - - - - Second Life Logo - + [![Alchemy Logo](https://alchemyviewer.org/assets/images/banner-4bed76df9322897136b74485a58ae2d7.webp)](https://www.alchemyviewer.org) -**[Second Life][] is a free 3D virtual world where users can create, connect and chat with others from around the -world.** This repository contains the source code for the official client. - -## Open Source - -Second Life provides a huge variety of tools for expression, content creation, socialization and play. Its vibrancy is -only possible because of input and contributions from its residents. The client codebase has been open source since -2007 and is available under the LGPL license. The [Open Source Portal][] contains additional information about Linden -Lab's open source history and projects. +[Alchemy Viewer](https://www.alchemyviewer.org) is a third-party client for Second Life. Our focus is on creating a cohesive and modern experience, with carefully considered default behaviors and settings while maintaining a bleeding-edge approach to adopting new features and developments from the Second Life platform. ## Download -Most people use a pre-built viewer release to access Second Life. Windows and macOS builds are -[published on the official website][download]. More experimental viewers, such as release candidates and -project viewers, are detailed on the [Alternate Viewers page](https://releasenotes.secondlife.com/viewer.html). - -### Third Party Viewers - -Third party maintained forks, which include Linux compatible builds, are indexed in the [Third Party Viewer Directory][tpv]. +Most people use a pre-built release of Alchemy Viewer. Windows macOS, and Linux builds are published as [releases on Github][releasesgh]. More experimental releases, such as release candidates and project viewers, are typically announced on our [Discord server][discord]. ## Build Instructions -[Windows](https://wiki.secondlife.com/wiki/Build_the_Viewer_on_Windows) +[Windows](https://alchemyviewer.org/docs/build/Windows) -[Mac](https://wiki.secondlife.com/wiki/Build_the_Viewer_on_macOS) +Mac (todo) -[Linux](https://wiki.secondlife.com/wiki/Build_the_Viewer_on_Linux) +[Linux](https://alchemyviewer.org/docs/build/Linux) ## Contribute -Help make Second Life better! You can get involved with improvements by filing bugs, suggesting enhancements, submitting -pull requests and more. See the [CONTRIBUTING][] and the [open source portal][] for details. +Help improve Alchemy Viewer! You can get involved with improvements by filing bugs, suggesting enhancements, submitting pull requests and more. See [CONTRIBUTING][] for details. + +## Resources + +* [Alchemy Website](http://www.alchemyviewer.org) +* [Downloads](https://alchemyviewer.org/downloads) +* [Issue Tracker](https://github.com/AlchemyViewer/Alchemy/issues) -[Second Life]: https://secondlife.com/ -[download]: https://secondlife.com/support/downloads/ -[tpv]: http://wiki.secondlife.com/wiki/Third_Party_Viewer_Directory -[open source portal]: http://wiki.secondlife.com/wiki/Open_Source_Portal -[contributing]: https://github.com/secondlife/viewer/blob/main/CONTRIBUTING.md +[contributing]: https://github.com/alchemyviewer/alchemy/blob/main/CONTRIBUTING.md +[releasesgh]: https://github.com/AlchemyViewer/Alchemy/releases +[discord]: https://discordapp.com/invite/KugCgs6 diff --git a/autobuild.xml b/autobuild.xml index a6b852f2fd2..af97d670591 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -7,35 +7,65 @@ autobuild installables - SDL + SDL2 + copyright + Copyright (C) 1997-2022 Sam Lantinga (slouken@libsdl.org) + description + Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. + license + lgpl + license_file + LICENSES/SDL2.txt + name + SDL2 platforms + darwin64 + + archive + + hash + a6aa829c1e7f193b624f05415588e4d727454c8f + hash_algorithm + sha1 + url + https://github.com/secondlife/3p-sdl2/releases/download/v2.30.9-r1/SDL2-2.30.9-r1-darwin64-11943333704.tar.zst + + name + darwin64 + linux64 archive hash - 7ea2df03bfc35c06acf23dd9e734adac + ad1b738a7cef16d5cec63ab99b1c80146626f47b + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1103/2554/SDL-1.2.15-linux64-501092.tar.bz2 + https://github.com/secondlife/3p-sdl2/releases/download/v2.30.9-r1/SDL2-2.30.9-r1-linux64-11943333704.tar.zst name linux64 + windows64 + + archive + + hash + 97153f9d302f964142df971b57680724824f458f + hash_algorithm + sha1 + url + https://github.com/secondlife/3p-sdl2/releases/download/v2.30.9-r1/SDL2-2.30.9-r1-windows64-11943333704.tar.zst + + name + windows64 + - license - lgpl - license_file - LICENSES/SDL.txt - copyright - Copyright (C) 1997-2012 Sam Lantinga version - 1.2.15 - name - SDL - description - Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. + 2.30.9-r1 apr_suite @@ -46,11 +76,11 @@ archive hash - dc4a38439f90325b406ec3f7cc4fa66edf0eeec8 + e615045ce95e0513e623b47fc46f59e630307c313bcb048baf1e29f1f4f28dfa158df1de650548da2860e3d88351a859ef67f367ac6e024b9bfcd888ecf52e78 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-e935465/apr_suite-1.7.2-e935465-darwin64-e935465.tar.zst + https://github.com/AlchemyViewer/3p-apr_suite/releases/download/v1.4.5-3aaecf3/apr_suite-1.4.5-darwin64-9537338814.tar.zst name darwin64 @@ -60,9 +90,11 @@ archive hash - 84a1a140f20b25d714949185e854d14b + 94c9d86c313979fde5f2ad376d4ded7d4c6d96ede15fd0ff1fb2eefb5255e71c1e019c3904f4d6bd584628b173714f69e2183647d9dc48e38a816e1bd7d20c34 + hash_algorithm + blake2b url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/4811/15302/apr_suite-1.4.5.504800-linux64-504800.tar.bz2 + https://github.com/AlchemyViewer/3p-apr_suite/releases/download/v1.4.5-3aaecf3/apr_suite-1.4.5-linux64-9537338814.tar.zst name linux64 @@ -72,11 +104,11 @@ archive hash - 8233de9a11f323a03d569db1043ba5198176457b + 3dc2906ddfdd9b9c7026e41ebb068cb0803395e82e37b8ccb55478e316af37be14a75cb3371c58f4d6d435b7456e72b581be8cd3ea23761adbc1a994f3ea65cf hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-e935465/apr_suite-1.7.2-e935465-windows64-e935465.tar.zst + https://github.com/AlchemyViewer/3p-apr_suite/releases/download/v1.4.5-3aaecf3/apr_suite-1.4.5-windows64-9537338814.tar.zst name windows64 @@ -89,7 +121,7 @@ copyright Copyright © 2012 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. version - 1.7.2-e935465 + 1.4.5 name apr_suite description @@ -104,25 +136,39 @@ archive hash - 8539775e0a0783bd252bc548b20b3472a8254c31 + 37b3302ba0cd7b3c383c78dade84b3d56c76f48115c5c821f9363e4435b7fdb21d2b462b8bcc3e51dd4b6de3a6766095b123452c83b750313205a9abdfe5aa21 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-boost/releases/download/v1.81-09d25a7/boost-1.81-darwin64-09d25a7.tar.zst + https://github.com/AlchemyViewer/3p-boost/releases/download/v1.85.0-85295ff/boost-1.85.0-darwin64-9629744929.tar.zst name darwin64 + linux64 + + archive + + hash + 66544c685f55d87f92afea9e3a662c35ad74a320b320f0610b0dd84e6a12142abd20b32fa868a29f840421b57f95bf29cdff3ab7f6b78d7bdb9da8a12db57852 + hash_algorithm + blake2b + url + https://github.com/AlchemyViewer/3p-boost/releases/download/v1.85.0-85295ff/boost-1.85.0-linux64-9629744929.tar.zst + + name + linux64 + windows64 archive hash - d40c86fbcb6ce064d546165cbabbf035ea80e07b + 7859a0f90d6937c24dd4b86b83f712f40d5b1f656993c0fa668b4bcdb1d7657ac0487e46dbd4d3629b9dc32a3b422e3d5b24f5201af22112f97f93bbd6ce55e9 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-boost/releases/download/v1.81-09d25a7/boost-1.81-windows64-09d25a7.tar.zst + https://github.com/AlchemyViewer/3p-boost/releases/download/v1.85.0-85295ff/boost-1.85.0-windows64-9629744929.tar.zst name windows64 @@ -135,57 +181,51 @@ copyright (see individual source files) version - 1.81-09d25a7 + 1.85.0 name boost description Boost C++ Libraries - bugsplat + branding platforms - darwin64 - - archive - - hash - d152f19f4a5a9c8013f006e19b1fcd88692bccf1 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7-527603a/bugsplat-1.0.7-527603a-darwin64-527603a.tar.zst - - name - darwin64 - - windows64 + common archive hash - 1364da04333570b73c771e4f4acd1bacc7fc3f02 + 5b2b81f993aa66c0fc5d6b4dd6bf2500153df7c48b9b6fb67461d63e0d7d0bfedd88fc069e3d7a9d84baeed159c4c20dfd06937cb80403236d7a0dc42011f2fc hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7-527603a/bugsplat-4.0.3.0-527603a-windows64-527603a.tar.zst + https://github.com/AlchemyViewer/viewer-branding/releases/download/v1.0.0-383e3ba/branding-1.0.0-common-9427245893.tar.zst name - windows64 + common license - Proprietary + All Rights Reserved. license_file - LICENSES/BUGSPLAT_LICENSE.txt + LICENSES/branding.txt copyright - Copyright 2003-2017, BugSplat + Copyright (c) 2024 Alchemy Development Group version - 4.0.3.0-527603a + 1.0.0 name - bugsplat + branding + vcs_branch + refs/tags/v1.0.0-383e3ba + vcs_revision + 383e3ba43630843fcd75b037606f4093fa378665 + vcs_url + git://github.com/AlchemyViewer/viewer-branding.git + canonical_repo + https://github.com/AlchemyViewer/viewer-branding description - Bugsplat crash reporting package + Alchemy Branding Material colladadom @@ -196,25 +236,39 @@ archive hash - b1bb8a9c8d458d8842d79f9633fb61df12f1b0ad + f02d0da7f3ce0e88077fa2eb2dba65be57597736602b577bf4ce3177e2e45782898eca603678db278cb2ffad099b5b267d8031c543a7620997752413d86da89b hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-colladadom/releases/download/v2.3.ab0c124/colladadom-2.3.ab0c124-darwin64-ab0c124.tar.zst + https://github.com/AlchemyViewer/3p-colladadom/releases/download/v2.3.0-d98bc18/colladadom-2.3.0-darwin64-9630695601.tar.zst name darwin64 + linux64 + + archive + + hash + 81bb8fc806b4b441ab94de060eccfd993013e10077c917f551166f450e65b0ed7dcc7fbbf27eb8d65db0174b10db5065968a32f52006d3ca731baa8e937ef57c + hash_algorithm + blake2b + url + https://github.com/AlchemyViewer/3p-colladadom/releases/download/v2.3.0-d98bc18/colladadom-2.3.0-linux64-9630695601.tar.zst + + name + linux64 + windows64 archive hash - 0df4c05d4efa3019afa4cbf09599df60b586fc5c + fc4f29138735ebbc9e413a7a4a4a207314b9e73b81d44113dea50e4285f00a3a1f312789519c45d89e169f45223dab196e82636bc78694a00bf8406d11420680 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-colladadom/releases/download/v2.3.ab0c124/colladadom-2.3.ab0c124-windows64-ab0c124.tar.zst + https://github.com/AlchemyViewer/3p-colladadom/releases/download/v2.3.0-d98bc18/colladadom-2.3.0-windows64-9630695601.tar.zst name windows64 @@ -227,7 +281,7 @@ copyright Copyright 2006 Sony Computer Entertainment Inc. version - 2.3.ab0c124 + 2.3.0 name colladadom @@ -235,45 +289,19 @@ platforms - darwin64 - - archive - - hash - d5fb3832a338bbe4891b823c64fdb4806706568e - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-cubemap_to_eqr_js/releases/download/v1.1.0-d7afe27/cubemaptoequirectangular-1.1.0-darwin64-d7afe27.tar.zst - - name - darwin64 - - linux64 - - archive - - hash - 77c53daf558f51aec6e9f4bd9e930a103630ee7d - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-cubemap_to_eqr_js/releases/download/v1.1.0-d7afe27/cubemaptoequirectangular-1.1.0-linux64-d7afe27.tar.zst - - - windows64 + common archive hash - 6c51855bcf3a8628289881fdaea08c25cf7b1b90 + c8b190ac1bdc401bd155c7a895b57a9823ec8252b48d491154d833742e280317502f6353ca5d928d261c9da7cab15bf93908164ffa73ae3857b8820f300e1135 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-cubemap_to_eqr_js/releases/download/v1.1.0-d7afe27/cubemaptoequirectangular-1.1.0-windows64-d7afe27.tar.zst + https://github.com/AlchemyViewer/3p-cubemap_to_eqr_js/releases/download/v1.1.0-52404b1/cubemaptoequirectangular-1.1.0-common-9430681282.tar.zst name - windows64 + common license @@ -286,6 +314,14 @@ 1.1.0 name cubemaptoequirectangular + vcs_branch + refs/tags/v1.1.0-52404b1 + vcs_revision + 52404b1b89f3f631083b3e9fa34aed98b5ec6197 + vcs_url + git://github.com/AlchemyViewer/3p-cubemap_to_eqr_js.git + canonical_repo + https://github.com/AlchemyViewer/3p-cubemap_to_eqr_js curl @@ -296,11 +332,11 @@ archive hash - d4d5f27008de1ff7e86ae852841c68849b02eaea + 12936215382d7299d1a37b6d96cb3e922c6dacc25179000176b376fdb854ee9436fdd0d96d4a59a2432391332216fb0adf80e49ca02ca12a2ba4f51255b06055 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-curl/releases/download/v7.54.1-5a4a82d/curl-7.54.1-5a4a82d-darwin64-5a4a82d.tar.zst + https://github.com/AlchemyViewer/3p-curl/releases/download/v7.54.1-3666cee/curl-7.54.1-darwin64-9631096934.tar.zst name darwin64 @@ -310,9 +346,11 @@ archive hash - 630a2ddf43bba6e5b6e171dc68921dcb + a00218cafc5d3c3ba76de479c3746b5ee4866b26eabdf01d8abb471fb0bb42d98889675ef43c91ffa89024f9ab682a7f8c46f56156e31719d7a844d644ce5f3d + hash_algorithm + blake2b url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/8663/36142/curl-7.54.1.508652-linux64-508652.tar.bz2 + https://github.com/AlchemyViewer/3p-curl/releases/download/v7.54.1-3666cee/curl-7.54.1-linux64-9631096934.tar.zst name linux64 @@ -322,11 +360,11 @@ archive hash - 07423f41d1320ea405f493869f6460cf8c45def5 + dd4b8be444a0f919c64a1e9d628b3db6a010231039c37c25051c0f5303f0f4eaf7bfaba59e79a9d87d44e58e48eb5bc1f8f765bdd12891af6e942fbcbcff5bc2 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-curl/releases/download/v7.54.1-5a4a82d/curl-7.54.1-5a4a82d-windows64-5a4a82d.tar.zst + https://github.com/AlchemyViewer/3p-curl/releases/download/v7.54.1-3666cee/curl-7.54.1-windows64-9631096934.tar.zst name windows64 @@ -337,75 +375,121 @@ license_file LICENSES/curl.txt copyright - Copyright (c) 1996 - 2014, Daniel Stenberg, (daniel@haxx.se). + Copyright (c) 1996 - 2017, Daniel Stenberg, (daniel@haxx.se), and many contributors version - 7.54.1-5a4a82d + 7.54.1 name curl description Library for transferring data specified with URL syntax - dbus_glib + dictionaries platforms - linux64 + common archive hash - 7ee7b9aed3c0c8c09e7bf26bba7af8e1 + 2ae19f70fe73a6201e809b018eab20d3294b6c376a20ff077fce57642bcb312c4330ad0965ff6ac9766aad38150d0b89a486289fa986be09e29f20050183fc7d + hash_algorithm + blake2b url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-dbus-glib/rev/314266/arch/Linux/installer/dbus_glib-0.76-linux64-314266.tar.bz2 + https://github.com/AlchemyViewer/3p-dictionaries/releases/download/v1.0.0-724be51/dictionaries-1.0.0-common-9430157592.tar.zst name - linux64 + common license - Academic Free License v. 2.1 + various open source license_file - LICENSES/dbus-glib.txt + LICENSES/dictionaries.txt copyright - Copyright (C) Red Hat Inc. + various contributors version - 0.76 + 1.0.0 name - dbus_glib + dictionaries + vcs_branch + refs/tags/v1.0.0-724be51 + vcs_revision + 724be514bc1e7cc029b216df4472a3237c16c318 + vcs_url + git://github.com/AlchemyViewer/3p-dictionaries.git + canonical_repo + https://github.com/AlchemyViewer/3p-dictionaries description - D-Bus bindings for glib + Spell checking dictionaries to bundle into the viewer - dictionaries + discord-gamesdk platforms - common + darwin64 + + archive + + creds + github + hash + e7782073dabdf53ad1947e313ee945efea85a71e5fc64e9c59919c995d92f3649fea2fb9030967ace22aab27d2a91163d061de1bb9307356d48d77ee5d8db4ea + hash_algorithm + blake2b + url + https://api.github.com/repos/AlchemyViewer/3p-discord-gamesdk-private/releases/assets/174144074 + + name + darwin64 + + linux64 archive + creds + github hash - e03eb77224290c875ff84f75b7fe3d0e7c162c94 + 18a38f594376af699675b4479f3a7064856485acacc87ab25e4534f0458e67d1bb62650a8d05539691bff52c026750f0cca1d4fbfb7aaff2e42f549727422d9f hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-dictionaries/releases/download/v1-a01bb6c/dictionaries-1.a01bb6c-common-a01bb6c.tar.zst + https://api.github.com/repos/AlchemyViewer/3p-discord-gamesdk-private/releases/assets/174144071 name - common + linux64 + + windows64 + + archive + + creds + github + hash + 41f69c94ab4c866546e1ddf16c558e6beced34322825120998c8e60338e9ab2f1e1b4f5dd36ca33f9127bbd1dca9642e9aaffd593d10f51430d9b037b792523f + hash_algorithm + blake2b + url + https://api.github.com/repos/AlchemyViewer/3p-discord-gamesdk-private/releases/assets/174144075 + + name + windows64 license - various open source + proprietary license_file - LICENSES/dictionaries.txt + LICENSES/discord-gamesdk.txt copyright - Copyright 2014 Apache OpenOffice software + Copyright (c) Discord. version - 1.a01bb6c + 3.2.1 name - dictionaries + discord-gamesdk + canonical_repo + https://www.github.com/AlchemyViewer/3p-discord-gamesdk description - Spell checking dictionaries to bundled into the viewer + Discord GameSDK for integrating with Discord dullahan @@ -416,25 +500,39 @@ archive hash - e4d568c166049ce61b39d69887b56d2382781a1a + 261dc4b88e13bafd04a472904141bd3d9b5c393d3f58db926e770f6b51968eec5d0d331bd6c198befaba8ff95db006df2ac202d4758d88a9918f3da1aef6c8c0 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/dullahan/releases/download/v118.0.5993.54/dullahan-1.14.0.202310131309_118.4.1_g3dd6078_chromium-118.0.5993.54-darwin64-6b02a60.tar.zst + https://github.com/AlchemyViewer/dullahan/releases/download/v1.14.0-50ab5ac/dullahan-1.14.0_118.4.1_g3dd6078_chromium-118.0.5993.54-darwin64-9552427392.tar.zst name darwin64 + linux64 + + archive + + hash + 2feb41e5d8fb13988579fd3ae527ce6a87591bf0176b2242e915f669a6bd4fc7de40298c20a1b0484a399f854d33d2de7202baabe1f49bacf00a7cb8fdbe52d0 + hash_algorithm + blake2b + url + https://github.com/AlchemyViewer/dullahan/releases/download/v1.14.0-50ab5ac/dullahan-1.14.0_118.4.1_g3dd6078_chromium-118.0.5993.54-linux64-9552427392.tar.zst + + name + linux64 + windows64 archive hash - a00eae7f5dc430ae48389ab723ced39739b0a144 + 623b30ebb59b4d974433e363246756198d07948cea6ae31d555a68e53bb884aad4e538d4f37eac0965a64896702c945e44f6fb922c2e6332b0dd24bfd43654f7 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/dullahan/releases/download/v118.0.5993.54/dullahan-1.14.0.202310131404_118.4.1_g3dd6078_chromium-118.0.5993.54-windows64-6b02a60.tar.zst + https://github.com/AlchemyViewer/dullahan/releases/download/v1.14.0-50ab5ac/dullahan-1.14.0_118.4.1_g3dd6078_chromium-118.0.5993.54-windows64-9552427392.tar.zst name windows64 @@ -447,7 +545,7 @@ copyright Copyright (c) 2017, Linden Research, Inc. version - 1.14.0.202310131404_118.4.1_g3dd6078_chromium-118.0.5993.54 + 1.14.0_118.4.1_g3dd6078_chromium-118.0.5993.54 name dullahan description @@ -457,33 +555,19 @@ platforms - darwin64 - - archive - - hash - 52c41a4547d2d9aceb4a9a1e9e1680c71e5ffa79 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-emoji-shortcodes/releases/download/v6.1.0.5413f58/emoji_shortcodes-6.1.0.5413f58-darwin64-5413f58.tar.zst - - name - darwin64 - - windows64 + common archive hash - 3137e06d376767a631bc9626832d558c4d5e5aa9 + 9c58108270fbad15a321f75501cdfb9c6b78a6f2 hash_algorithm sha1 url - https://github.com/secondlife/3p-emoji-shortcodes/releases/download/v6.1.0.5413f58/emoji_shortcodes-6.1.0.5413f58-windows64-5413f58.tar.zst + https://github.com/secondlife/3p-emoji-shortcodes/releases/download/v15.3.2-r1/emoji_shortcodes-15.3.2.10207138275-common-10207138275.tar.zst name - windows64 + common license @@ -493,7 +577,7 @@ copyright Copyright 2017-2019 Miles Johnson. version - 6.1.0.5413f58 + 15.3.2.10207138275 name emoji_shortcodes canonical_repo @@ -510,11 +594,11 @@ archive hash - b85526ca80b6a7e73c7870285cf68d568f742095 + 123abd3d7567adc45fd427067b9b94a4977e09ee517cb5cfbbcf9cecd553496b9898f28d7cf6f7b105aba22d7af20602adc520a6516e2ee2d8f5b1ee6fb0c62c hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-expat/releases/download/v2.1.1.1f36d02/expat-2.1.1.1f36d02-darwin64-1f36d02.tar.zst + https://github.com/AlchemyViewer/3p-expat/releases/download/v2.6.2-52fb19a/expat-2.6.2-darwin64-9537251096.tar.zst name darwin64 @@ -524,11 +608,11 @@ archive hash - 4cd82e2dec06ddff19e9b3dc0254f2593ec80452 + fa56993eabda225e5bcf5f8694acfed79392ce58b800421339b7777479bbb03775063f6f7a4d4a7e0171a1df943fee6b7474f6ffec7b4bea32bce851f9672744 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-expat/releases/download/v2.1.1.1f36d02/expat-2.1.1.1f36d02-linux64-1f36d02.tar.zst + https://github.com/AlchemyViewer/3p-expat/releases/download/v2.6.2-52fb19a/expat-2.6.2-linux64-9537251096.tar.zst name linux64 @@ -538,11 +622,11 @@ archive hash - 47c01a89bc32c5740efe51be43e459ffd9b7cd34 + ac11371fd3c248b5ab355ee7c846ac6887aec917942b11b6179574f473cc8dfd8b1f7bb38ae60963f987a019a5959bd5f1c4c07f98ce2f526d430725bd77fd3b hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-expat/releases/download/v2.1.1.1f36d02/expat-2.1.1.1f36d02-windows64-1f36d02.tar.zst + https://github.com/AlchemyViewer/3p-expat/releases/download/v2.6.2-52fb19a/expat-2.6.2-windows64-9537251096.tar.zst name windows64 @@ -553,9 +637,9 @@ license_file LICENSES/expat.txt copyright - Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper - Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers. + Copyright (c) 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper - Copyright (c) 2001-2022 Expat maintainers version - 2.1.1.1f36d02 + 2.6.2 name expat description @@ -572,11 +656,11 @@ creds github hash - a2074b67de7ad4c04b5ca8f8f161506add9697b2 + e5e37b56f81d0604c53c485f04073da398bc18edfad7c45ed3a18555c161ca528c697e1aa7d62c155f18ce8682318aef18b6d451c9536b8566b819ef74b0a2d7 hash_algorithm - sha1 + blake2b url - https://api.github.com/repos/secondlife/3p-fmodstudio/releases/assets/149207589 + https://api.github.com/repos/AlchemyViewer/3p-fmodstudio-private/releases/assets/215807187 name darwin64 @@ -588,11 +672,11 @@ creds github hash - 8c1b701648c077220dbc576c3d9aefbef47f8324 + 422512d3f65165ac67326e74c88ea89bd04c40240cb01b21a5b3e4160631446706acae4eb7f508c2347c4d8e7f7097564841a4eb532b478130b8390b9bfd6dc5 hash_algorithm - sha1 + blake2b url - https://api.github.com/repos/secondlife/3p-fmodstudio/releases/assets/149207592 + https://api.github.com/repos/AlchemyViewer/3p-fmodstudio-private/releases/assets/215807186 name linux64 @@ -604,58 +688,68 @@ creds github hash - 7e0c3d50e8b99d8735c6c9596a72ded9ee2bc1c8 + 5d86d27111336b5f9641d654e26f0670f5a7f687fffbcbb31877c2e52d8e758a130eafd618ba0c05d67dd3bf1556038c0341e1065098ef062320a5be6fa0de8a hash_algorithm - sha1 + blake2b url - https://api.github.com/repos/secondlife/3p-fmodstudio/releases/assets/149207594 + https://api.github.com/repos/AlchemyViewer/3p-fmodstudio-private/releases/assets/215807189 name windows64 license - fmod + fmodstudio license_file LICENSES/fmodstudio.txt copyright - FMOD Studio by Firelight Technologies Pty Ltd. + FMOD Studio, Copyright (c) Firelight Technologies Pty Ltd. version - 2.02.20.c78ef55 + 2.02.26 name fmodstudio description - FMOD Studio API + FMOD Studio audio system library - fontconfig + fonts platforms - linux64 + common archive hash - e2419d56960c160670051fbb055fb729 + 9788bb1993e1a75eb9a121570bbf05a665e9a1d9324a9693549004e44557ed25383d62248e16a72623279c755f5401e20fcc82c6d05a01bf5d9c0d337664237c + hash_algorithm + blake2b url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-fontconfig/rev/314281/arch/Linux/installer/fontconfig-2.11.0-linux64-314281.tar.bz2 + https://github.com/AlchemyViewer/3p-fonts/releases/download/vf66e1b7/fonts-f66e1b7-common-9427253190.tar.zst name - linux64 + common license - bsd + various license_file - LICENSES/fontconfig.txt + LICENSES/fonts.txt copyright - Copyright (C) 2000,2001,2002,2003,2004,2006,2007 Keith Packard, 2005 Patrick Lam, 2009 Roozbeh Pournader, 2008,2009 Red Hat, Inc., 2008 Danilo Å egan, 2012 Google, Inc. + Various Licenses version - 2.11.0 + f66e1b7 name - fontconfig + fonts + vcs_branch + refs/tags/vf66e1b7 + vcs_revision + f66e1b7f09dc67231742d10f60a0499b302572ed + vcs_url + git://github.com/AlchemyViewer/3p-fonts.git + canonical_repo + https://github.com/AlchemyViewer/3p-fonts description - Fontconfig is a library for configuring and customizing font access. + A collection of fonts used by the viewer freetype @@ -666,56 +760,42 @@ archive hash - d90a5c2fb4a729eeff3965ea6dd0a35cf146d379 + 3723a0938fe994ca43c248509b1d159a76ad6fe192ce7cea421ee7278432dbb84f8359eb8f9c8e84b283687e9ac14537cab4a7b8ab3a0d58030f4a1181b42f03 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-freetype/releases/download/v.2.12.1.557becd/freetype-2.12.1.557becd-darwin64-557becd.tar.zst + https://github.com/AlchemyViewer/3p-freetype/releases/download/v2.13.2-772783c/freetype-2.13.2-darwin64-9630693278.tar.zst name darwin64 - linux64 - - archive - - hash - 4a999279562e8f3e4ba02d3e78a844ddf6fe18f1 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-freetype/releases/download/v.2.12.1.557becd/freetype-2.12.1.557becd-linux64-557becd.tar.zst - - name - linux64 - - windows + windows64 archive hash - 4fecff41a38d67d6b1c97c7c73980667b6a8a1bd + b1b296147210031df2febda2128e87715cef7187550dd1a36a39275a5ed5cef4403e32614b9f727d86318359eaba11c1396be0dfbfe6f5d9265141ad1d989a83 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-freetype/releases/download/v.2.12.1.557becd/freetype-2.12.1.557becd-windows-557becd.tar.zst + https://github.com/AlchemyViewer/3p-freetype/releases/download/v2.13.2-772783c/freetype-2.13.2-windows64-9630693278.tar.zst name - windows + windows64 - windows64 + linux64 archive hash - 1837fdfd44204c78e79134944f824b0211817883 + 095d9ef2fcebc237b9efa33de7fb46f9ed3dc3a483b021997c8fb665497b918288b5e3c0318a36cb23122d46fca032f8a4b04b79c934b4b362474ffa416ae8ce hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-freetype/releases/download/v.2.12.1.557becd/freetype-2.12.1.557becd-windows64-557becd.tar.zst + https://github.com/AlchemyViewer/3p-freetype/releases/download/v2.13.2-772783c/freetype-2.13.2-linux64-9630693278.tar.zst name - windows64 + linux64 license @@ -725,7 +805,7 @@ copyright Copyright 2006, 2007, 2008, 2009, 2010 by David Turner, Robert Wilhelm, and Werner Lemberg. version - 2.12.1.557becd + 2.13.2 name freetype description @@ -740,11 +820,11 @@ archive hash - 7cc58b3acb230a7e65ea5f0ff800be393eb4aa1b + 64d6a3ea63788c63ef21535fd24235bd205e1840b40dd3a405535b4b69648d815a3cfd4cf95840c9acba733a419580d0bfa6becbc43f7a88a8c0be869d3fb26f hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-glext/releases/download/v69/glext-68-common-685b36e.tar.zst + https://github.com/AlchemyViewer/3p-glext/releases/download/v20240327-5691615/glext-20240327-common-9429975081.tar.zst name common @@ -757,9 +837,17 @@ copyright Copyright (c) 2007-2010 The Khronos Group Inc. version - 68 + 20240327 name glext + vcs_branch + refs/tags/v20240327-5691615 + vcs_revision + 5691615f55c118e4678247696e846bdaf14ff94d + vcs_url + git://github.com/AlchemyViewer/3p-glext.git + canonical_repo + https://github.com/AlchemyViewer/3p-glext description glext headers define function prototypes and constants for OpenGL extensions @@ -795,51 +883,47 @@ description glh - is a platform-indepenedent C++ OpenGL helper library - googlemock + glm platforms - darwin64 + common archive hash - dce3174b12136746f5f910e311e895c1b47bf8fb + 353ae3a560143732503a8e14499ae12db1e66056 hash_algorithm sha1 url - https://github.com/secondlife/3p-googlemock/releases/download/v1.7.0.2b109d4/googlemock-1.7.0.2b109d4-darwin64-2b109d4.tar.zst + https://github.com/secondlife/3p-glm/releases/download/v1.0.1-r1/glm-v1.0.1-common-9066386153.tar.zst name - darwin64 - - windows64 - - archive - - hash - 265813f84b04c3b03f3d7d33e149b3d5e3cf31db - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-googlemock/releases/download/v1.7.0.2b109d4/googlemock-1.7.0.2b109d4-windows64-2b109d4.tar.zst - - name - windows64 + common license - BSD + MIT license_file - LICENSES/gmock.txt + LICENSES/glm_license.txt copyright - Copyright 2008, Google Inc. + Copyright (c) 2005 - G-Truc Creation version - 1.7.0.2b109d4 + v1.0.1 name - googlemock + glm + vcs_branch + refs/tags/v1.0.1-r1 + vcs_revision + 399cd5ba57a9267a560ce07e50a0f8c5fe3dc66f + vcs_url + git://github.com/secondlife/3p-glm.git + canonical_repo + https://github.com/secondlife/3p-glm description - a library for writing and using C++ mock classes + OpenGL Mathematics + source_type + git gstreamer @@ -869,139 +953,63 @@ name gstreamer - gtk-atk-pango-glib - - platforms - - linux64 - - archive - - hash - de7bba8fd2275a11b077b124413065d0 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-gtk-atk-pango-glib/rev/314220/arch/Linux/installer/gtk_atk_pango_glib-0.1-linux64-314220.tar.bz2 - - name - linux64 - - - license - lgpl - license_file - LICENSES/gtk-atk-pango-glib.txt - copyright - Copyright (various, see sources) - version - 0.1 - name - gtk-atk-pango-glib - - havok-source + innosetup platforms - darwin64 - - archive - - creds - github - hash - ae2c2a215b1bc2e3f37a67e301926dc405902d1a - hash_algorithm - sha1 - url - https://api.github.com/repos/secondlife/3p-havok-source/releases/assets/136778143 - - name - darwin64 - - linux64 - - archive - - hash - 00d0333936a67059a43a6ec8ac38d564 - url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/748/1563/havok_source-2012.1-2-linux64-500739.tar.bz2 - - name - linux64 - windows64 archive - creds - github hash - 0393dd75c58f7046bed47e62a8884a78cb02a5c3 + c8712c55915fc98f735030f4b49edc14b3a5ac58e503ea5286f7ce3efc99f993d7dba22db695d322fe6bea24ec143a87fb93e06f9d89f41bad0903befc2b9a8c hash_algorithm - sha1 + blake2b url - https://api.github.com/repos/secondlife/3p-havok-source/releases/assets/136778145 + https://github.com/AlchemyViewer/3p-innosetup/releases/download/v6.2.2-5e7476c/innosetup-6.2.2-windows64-9431263855.tar.zst name windows64 license - havok + MIT license_file - LICENSES/havok.txt + LICENSES/innosetup.txt copyright - Uses Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (and its Licensors). All Rights Reserved. See www.havok.com for details. + Copyright (C) 1997-2023 Jordan Russell. All rights reserved. version - 2012.1-2 + 6.2.2 name - havok-source + innosetup + vcs_branch + refs/tags/v6.2.2-5e7476c + vcs_revision + 5e7476c72483461591cb842f8bbd3c9b720d479a + vcs_url + git://github.com/AlchemyViewer/3p-innosetup.git + canonical_repo + https://github.com/AlchemyViewer/3p-innosetup description - Havok source code for libs and demos + Innosetup installer framework jpegencoderbasic platforms - darwin64 - - archive - - hash - f271809c0d4244128fb52a71226a4d7674e14e0a - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-jpeg_encoder_js/releases/download/v1.0-9165e47/jpegencoderbasic-1.0-darwin64-9165e47.tar.zst - - name - darwin64 - - linux64 - - archive - - hash - 35d6a617444fde9c8a5e998ef29dc43b95747637 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-jpeg_encoder_js/releases/download/v1.0-9165e47/jpegencoderbasic-1.0-linux64-9165e47.tar.zst - - - windows64 + common archive hash - 8ec22e9fc8734ba3d1826f4b88171a6017cc8676 + 36a4b914b39dce5bbfa85e4378f69536a1560ef31085a89392a57d43bf6a3d36b6a445b24f87755b5ec5af40c5642e465ceba2af2b9e0ddafdab77713a2df4a0 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-jpeg_encoder_js/releases/download/v1.0-9165e47/jpegencoderbasic-1.0-windows64-9165e47.tar.zst + https://github.com/AlchemyViewer/3p-jpeg_encoder_js/releases/download/v1.0-9baa576/jpegencoderbasic-1.0-common-9430709713.tar.zst name - windows64 + common license @@ -1014,147 +1022,81 @@ 1.0 name jpegencoderbasic + vcs_branch + refs/tags/v1.0-9baa576 + vcs_revision + 9baa5763ca67e004a3c26e34ee7e1217d6e80c7b + vcs_url + git://github.com/AlchemyViewer/3p-jpeg_encoder_js.git + canonical_repo + https://github.com/AlchemyViewer/3p-jpeg_encoder_js - jpeglib + libjpeg-turbo platforms - darwin64 - - archive - - hash - 776d114aa1e3455bb13deaacd756deb07b53ecbe - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-jpeglib/releases/download/v8c.7846234/jpeglib-8c.7846234-darwin64-7846234.tar.zst - - name - darwin64 - - linux64 - - archive - - hash - b4b2278bd2fcae85619e2145a243cca388d760d7 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-jpeglib/releases/download/v8c.7846234/jpeglib-8c.7846234-linux64-7846234.tar.zst - - name - linux64 - windows64 archive hash - d50fcac69eeb9404638da07db96ee3e1191ecf93 + 34cf4fdbbc999e67b0528f7ca3c7f31f35267ecf hash_algorithm sha1 url - https://github.com/secondlife/3p-jpeglib/releases/download/v8c.7846234/jpeglib-8c.7846234-windows64-7846234.tar.zst + https://github.com/secondlife/3p-libjpeg-turbo/releases/download/v3.0.3-r2/libjpeg_turbo-3.0.3-r2-windows64-10341191820.tar.zst name windows64 - - license - jpeglib - license_file - LICENSES/jpeglib.txt - copyright - Copyright (C) 1991-2011, Thomas G. Lane, Guido Vollbeding. - version - 8c.7846234 - name - jpeglib - description - JPEG encoding, decoding library - - jsoncpp - - platforms - - darwin64 - - archive - - hash - 07761ab01e61d5d6b40d303ffafd85ec055ec9f7 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-jsoncpp/releases/download/v0.5.0.bc46e62/jsoncpp-0.5.0.bc46e62-darwin64-bc46e62.tar.zst - - name - darwin64 - linux64 archive hash - 97e268754808cb2fbd682c4d3beafd2c598e1ba7 + 5ff05a0e5ed0aba1514b84d3c2edaf70c18738b5 hash_algorithm sha1 url - https://github.com/secondlife/3p-jsoncpp/releases/download/v0.5.0.bc46e62/jsoncpp-0.5.0.bc46e62-linux64-bc46e62.tar.zst + https://github.com/secondlife/3p-libjpeg-turbo/releases/download/v3.0.3-r2/libjpeg_turbo-3.0.3-r2-linux64-10341191820.tar.zst name linux64 - windows64 + darwin64 archive hash - 500e455b210d6bc4985185cef2472987ed3034bf + 7c38eabc050b4a6bdb183a1d7a38da885341049c hash_algorithm sha1 url - https://github.com/secondlife/3p-jsoncpp/releases/download/v0.5.0.bc46e62/jsoncpp-0.5.0.bc46e62-windows64-bc46e62.tar.zst + https://github.com/secondlife/3p-libjpeg-turbo/releases/download/v3.0.3-r2/libjpeg_turbo-3.0.3-r2-darwin64-10341191820.tar.zst name - windows64 + darwin64 license - public domain + libjpeg-turbo license_file - LICENSES/jsoncpp.txt + LICENSES/libjpeg-turbo.txt copyright - Copyright (c) 2007-2010 Baptiste Lepilleur + Copyright (C)2009-2024 D. R. Commander. All Rights Reserved. Copyright (C)2015 Viktor Szathmáry. All Rights Reserved. version - 0.5.0.bc46e62 + 3.0.3-r2 name - jsoncpp + libjpeg-turbo + canonical_repo + https://github.com/secondlife/3p-libjpeg-turbo description - jsoncpp is an implementation of a JSON (http://json.org) reader and writer in C++. + JPEG encoding, decoding library kdu platforms - darwin64 - - archive - - creds - github - hash - ad72fa1d103df777906f0d98f3e882b9916aeada - hash_algorithm - sha1 - url - https://api.github.com/repos/secondlife/3p-kdu/releases/assets/136774118 - - name - darwin64 - linux64 archive @@ -1162,11 +1104,11 @@ creds github hash - e46e4ac93a237b5c4a14183766f76ba5d58935a2 + 699a27bdd09edfc84597868237b68385e9d454b94c147219223532654d2833a5c9f469bde539f3e24bdf01523298485065e2d26277f59b34aa5c042811ca39ec hash_algorithm - sha1 + blake2b url - https://api.github.com/repos/secondlife/3p-kdu/releases/assets/136774125 + file:///opt/alchemy-packages/kdu-8.0.6-linux64-9538013150.tar.zst name linux64 @@ -1178,31 +1120,15 @@ creds github hash - bb37557f78c72b26580a521f8b8dabfa1b34e6e6 + 9008cd6ee8476fda558014f90636c6e8ccbd368c900d4c97d919d5dca38a5655e0a1d299c3c7e23e5b16e8d8425b0a144420f663ecc5b2bec65a63ec60910600 hash_algorithm - sha1 + blake2b url - https://api.github.com/repos/secondlife/3p-kdu/releases/assets/136774126 + file:///C:/alchemy-packages/kdu-8.0.6-windows64-9538013150.tar.zst name windows64 - linux - - archive - - creds - github - hash - 711b82f9f588d3a125af7dcd8c81f93d9c343a7d - hash_algorithm - sha1 - url - https://api.github.com/repos/secondlife/3p-kdu/releases/assets/136774121 - - name - linux - license Kakadu @@ -1211,7 +1137,7 @@ copyright Kakadu software version - 7.10.4.4b9ec5f + 8.0.6 name kdu description @@ -1226,11 +1152,11 @@ archive hash - d5757ab84d934fa358f299ab91e2e297beaa3dac + e71ae7a645603fe967a69aa5beb5b3009185e177 hash_algorithm sha1 url - https://github.com/secondlife/3p-libhunspell/releases/download/v1.3.2.650fb94/libhunspell-1.3.2.650fb94-darwin64-650fb94.tar.zst + https://github.com/secondlife/3p-libhunspell/releases/download/v1.7.2-r1/libhunspell-1.7.2.10207243663-darwin64-10207243663.tar.zst name darwin64 @@ -1240,11 +1166,11 @@ archive hash - 6413d3bd4cd50c2a6b7f949eb4bd6f0c94feb984 + 275ffb7f60064d8008aed8406f80f34229f651fc hash_algorithm sha1 url - https://github.com/secondlife/3p-libhunspell/releases/download/v1.3.2.650fb94/libhunspell-1.3.2.650fb94-linux64-650fb94.tar.zst + https://github.com/secondlife/3p-libhunspell/releases/download/v1.7.2-r1/libhunspell-1.7.2.10207243663-linux64-10207243663.tar.zst name linux64 @@ -1254,11 +1180,11 @@ archive hash - c1be4a79b20435030b2e0e01b582c61b462c8376 + 89ff24e93eaeca7949ccdb5cc368f938f5b1f307 hash_algorithm sha1 url - https://github.com/secondlife/3p-libhunspell/releases/download/v1.3.2.650fb94/libhunspell-1.3.2.650fb94-windows64-650fb94.tar.zst + https://github.com/secondlife/3p-libhunspell/releases/download/v1.7.2-r1/libhunspell-1.7.2.10207243663-windows64-10207243663.tar.zst name windows64 @@ -1269,9 +1195,9 @@ license_file LICENSES/hunspell.txt copyright - See hunspell.txt + LGPL 2.1 version - 1.3.2.650fb94 + 1.7.2.10207243663 name libhunspell description @@ -1286,11 +1212,11 @@ archive hash - e3dd320c90e67e0c80caf4d4df23257b0196dfb6 + 7165eb11bad033b223622ee4cf9eeddf2089bdcb0e8e0003e1577507a70b41d740b405113b68ef5d436c8d28a44e1b6b441fd46b04b7acec29d0ab7f626cb2af hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-libndofdev/releases/download/v0.1.8e9edc7/libndofdev-0.1.8e9edc7-darwin64-8e9edc7.tar.zst + https://github.com/AlchemyViewer/3p-libndofdev/releases/download/v0.1.0-27abd5f/libndofdev-0.1.0-darwin64-9458170976.tar.zst name darwin64 @@ -1300,11 +1226,11 @@ archive hash - ae9d554e8839f42230b8ed6c850445d54654a38f + e3befe5dbbb7559da7ff9c6a92e806f8eabc226393649aa25d73e23ac88178f7a31c26a8f5cbb864371f7acdca427ea21fe4c5f4333af23f6aa983016b6b1e14 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-libndofdev/releases/download/v0.1.8e9edc7/libndofdev-0.1.8e9edc7-windows64-8e9edc7.tar.zst + https://github.com/AlchemyViewer/3p-libndofdev/releases/download/v0.1.0-27abd5f/libndofdev-0.1.0-windows64-9458170976.tar.zst name windows64 @@ -1317,7 +1243,7 @@ copyright Copyright (c) 2007, 3Dconnexion, Inc. - All rights reserved. version - 0.1.8e9edc7 + 0.1.0 name libndofdev description @@ -1332,11 +1258,11 @@ archive hash - fea8f0684a4ed0a73343651948b13049a135a92a + 5dcd1b99a264ad26e270a5f10fc0ce296d67c08e0f483ecef3e8f72098a4e5189d459d8178536b5dba77624257c155e6155e6d2e33bc39b3379bdd9157453307 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-libpng/releases/download/v1.6.38-ca06e99/libpng-1.6.38-ca06e99-darwin64-ca06e99.tar.zst + https://github.com/AlchemyViewer/3p-libpng/releases/download/v1.6.43-d595053/libpng-1.6.43-darwin64-9630541657.tar.zst name darwin64 @@ -1346,9 +1272,11 @@ archive hash - 13de93ea11544051b69f238eeb644fd3 + 94821ea321758dc788665a152dc5d9bd56a4cd19bdb7a737332dc1e24b703ae88c5b830e412b79751d4cde1b83b41587d53f6fac0b07d36181cc617940f3cc45 + hash_algorithm + blake2b url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/882/1946/libpng-1.6.8.500873-linux64-500873.tar.bz2 + https://github.com/AlchemyViewer/3p-libpng/releases/download/v1.6.43-d595053/libpng-1.6.43-linux64-9630541657.tar.zst name linux64 @@ -1358,11 +1286,11 @@ archive hash - b91c116a1fda2377954355e56517634db0137699 + 7d255b38e1afda7a2f042f09e0c6c80badcee1b28dfc2f7193ff00bae4deb4d19bd2b83a7513a94714752a93d55b8b013ff6ae1dbfe252710996360828b0be25 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-libpng/releases/download/v1.6.38-ca06e99/libpng-1.6.38-ca06e99-windows64-ca06e99.tar.zst + https://github.com/AlchemyViewer/3p-libpng/releases/download/v1.6.43-d595053/libpng-1.6.43-windows64-9630541657.tar.zst name windows64 @@ -1373,43 +1301,75 @@ license_file LICENSES/libpng.txt copyright - Copyright (c) 2004, 2006-2013 Glenn Randers-Pehrson + Copyright (c) 1995-2019 The PNG Reference Library Authors version - 1.6.38-ca06e99 + 1.6.43 name libpng description PNG Reference library - libuuid + libwebp platforms + darwin64 + + archive + + hash + db556e0192d8eaed3ff5ab5cf1a38690e63460fc6b886e06ee240b9c0b8edf15e5bd22b59a451e8b9912ef7c5db9a7f834f319f03ef88705718e7e62a2b88c8d + hash_algorithm + blake2b + url + https://github.com/AlchemyViewer/3p-libwebp/releases/download/v1.3.2-2d5e525/libwebp-1.3.2-darwin64-9458313902.tar.zst + + name + darwin64 + linux64 archive hash - fb89f1281dd54d8b99b339fc5b712b27 + 8244d39e96b370f4a68e846cccb627c7bf567fc8636a1d4aa9b9f8c7884eef0f0f14306d49682423b123ba29a801639878af305ba70b0602e35b49b3123c807f + hash_algorithm + blake2b url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-libuuid/rev/314269/arch/Linux/installer/libuuid-1.6.2-linux64-314269.tar.bz2 + https://github.com/AlchemyViewer/3p-libwebp/releases/download/v1.3.2-2d5e525/libwebp-1.3.2-linux64-9458313902.tar.zst name linux64 + windows64 + + archive + + hash + d715d40c5a3019f75f4b01dfcfbd041562ffb4c57dad101b3848cfaf45e97daeca1e6fdb60221e069c2478ed02775256c9897f652f6064ebbd98912d565af3a1 + hash_algorithm + blake2b + url + https://github.com/AlchemyViewer/3p-libwebp/releases/download/v1.3.2-2d5e525/libwebp-1.3.2-windows64-9458313902.tar.zst + + name + windows64 + license - UUID + BSD license_file - LICENSES/uuid.txt + LICENSES/libwebp.txt copyright - Copyright (c) 2004-2008 The OSSP Project <http://www.ossp.org/> + Copyright (c) 2010, Google Inc. All rights reserved. version - 1.6.2 + 1.3.2 name - libuuid + libwebp + canonical_repo + https://www.github.com/AlchemyViewer/3p-libwebp description - OSSP uuid is a ISO-C:1999 application programming interface (API) and corresponding command line interface (CLI) for the generation of DCE 1.1, ISO/IEC 11578:1996 and RFC 4122 compliant Universally Unique Identifier (UUID). + WebP is a modern image format that provides superior lossless and lossy compression for images on the web. libxml2 @@ -1420,11 +1380,11 @@ archive hash - 2c46547d9dc83c47f41eacc7e5092affa72f3eee + 73e6d655a1d027e8cb1dc9df720eb880d1c6d75d0ba292c5f1bfd146f3892c4f1f44d46aa234c554f2b83900012033cd195a813da3418a10b754d311b1feadcf hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.7476681/libxml2-2.9.4.7476681-darwin64-7476681.tar.zst + https://github.com/AlchemyViewer/3p-libxml2/releases/download/v2.13.0-a2a03d8/libxml2-2.13.0-darwin64-9629737705.tar.zst name darwin64 @@ -1434,11 +1394,11 @@ archive hash - 4cda464277bfa6756ce4663a91cd724f3f45b8d8 + d2a396c61d26a9fbc4981f2d18b882dc9cbe276274dc0efd799212ba09089cd3e0eccbb06e7387202116021fef9ec53d4f803bd38869d150793644dae6f768f3 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.7476681/libxml2-2.9.4.7476681-linux64-7476681.tar.zst + https://github.com/AlchemyViewer/3p-libxml2/releases/download/v2.13.0-a2a03d8/libxml2-2.13.0-linux64-9629737705.tar.zst name linux64 @@ -1448,11 +1408,11 @@ archive hash - 7e506d26f8cb6f205146e41d74095e7e27087e84 + 942a446cfbbbe8e4978c29b43b9408ba8f74d35c318807e26e9aa37482bea0fcf45dd92e8619848d091a49465545275a3f7e29f162051d220d65872141cd113d hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.7476681/libxml2-2.9.4.7476681-windows64-7476681.tar.zst + https://github.com/AlchemyViewer/3p-libxml2/releases/download/v2.13.0-a2a03d8/libxml2-2.13.0-windows64-9629737705.tar.zst name windows64 @@ -1465,44 +1425,23 @@ copyright Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved. version - 2.9.4.7476681 + 2.13.0 name libxml2 description Libxml2 is the XML C parser and toolkit developed for the Gnome project. - llappearance_utility + llca - platforms - - linux - - archive - - hash - fddd634dec5ec03924d62cc774f7f8ea - url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/p64_viewer-llappearance-utility/rev/317266/arch/Linux/installer/llappearance_utility-0.0.1-linux-317266.tar.bz2 - - name - linux - - + copyright + Copyright (c) 2016, Linden Research, Inc.; data provided by the Mozilla NSS Project. + license - Proprietary + mit license_file - LICENSES/llappearanceutility.txt - copyright - Copyright (c) 2000-2012, Linden Research, Inc. - version - 0.0.1 + LICENSES/ca-license.txt name - llappearance_utility - description - Linden Lab appearance utility for server-side avatar baking services. - - llca - + llca platforms common @@ -1510,27 +1449,18 @@ archive hash - a9503e1b4e1d9790cf29d18a3d9ab39e6a515679 + 6d6771706a5b70caa24893ff62afc925f8d035f6 hash_algorithm sha1 url - https://github.com/secondlife/llca/releases/download/v202402012004.0-0f5d9c3/llca-202402012004.0-common-0f5d9c3.tar.zst + https://github.com/secondlife/llca/releases/download/v202407221723.0-a0fd5b9/llca-202407221423.0-common-10042698865.tar.zst name common - license - mit - license_file - LICENSES/ca-license.txt - copyright - Copyright (c) 2016, Linden Research, Inc.; data provided by the Mozilla NSS Project. - version - 202402012004.0 - name - llca + 202407221423.0 llphysicsextensions_source @@ -1543,11 +1473,11 @@ creds github hash - b037cc0b29ea70ee834cfae6dda5b7a25cd57174 + 9e59c93c7110e87b4ff3db330f11a23c50e5000f hash_algorithm sha1 url - https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/144851460 + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/178910560 name darwin64 @@ -1559,11 +1489,11 @@ creds github hash - bdea1fd5c4da9da5afde088d16188b45d0853e04 + 7ed994db5bafa9a7ad09a1b53da850a84715c65e hash_algorithm sha1 url - https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/144851461 + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/178910561 name linux64 @@ -1575,11 +1505,11 @@ creds github hash - f652ce0d6aef864689f0ed44255da4d9cd65a43f + 66824c02e0e5eabbfbe37bfb173360195f89697c hash_algorithm sha1 url - https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/144851463 + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/178910562 name windows64 @@ -1592,7 +1522,7 @@ copyright Copyright (c) 2010, Linden Research, Inc. version - 1.0.479d20a + 1.0.66e6919 name llphysicsextensions_source @@ -1600,41 +1530,19 @@ platforms - darwin64 - - archive - - hash - f290b000b31f9e36f2489946cbc99f5e - url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59995/563653/llphysicsextensions_stub-1.0.542456-darwin64-542456.tar.bz2 - - name - darwin64 - - linux64 - - archive - - hash - 711f4ec769e4b5f59ba25ee43c11bcbc - url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/4724/14846/llphysicsextensions_stub-1.0.504712-linux64-504712.tar.bz2 - - name - linux64 - - windows64 + common archive hash - 2e5f1f7046a49d8b0bc295aa878116bc + 5389c8dc9b40b11e1b346ccd32bda8508272dc0583b94b1e254dc27dbcea6067a2a423c88f1d50c09aa454c5cdd4e3f1419e5c63f1db3de56d1a96f2953e7790 + hash_algorithm + blake2b url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60043/564063/llphysicsextensions_stub-1.0.542456-windows-542456.tar.bz2 + https://github.com/AlchemyViewer/llphysicsextensions_stub/releases/download/v1.0-4c02558/llphysicsextensions_stub-1.0-common-9442370996.tar.zst name - windows64 + common license @@ -1644,7 +1552,7 @@ copyright Copyright (c) 2010, Linden Research, Inc. version - 1.0.542456 + 1.0 name llphysicsextensions_stub @@ -1656,90 +1564,14 @@ archive + creds + github hash - f09066891d5a52add50bdb14efdc86f6 - url - https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/84729/788142/llphysicsextensions_tpv-1.0.561752-darwin64-561752.tar.bz2 - - name - darwin64 - - linux64 - - archive - - hash - 711f4ec769e4b5f59ba25ee43c11bcbc - url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/4724/14846/llphysicsextensions_stub-1.0.504712-linux64-504712.tar.bz2 - - name - linux64 - - windows64 - - archive - - hash - a43e360236e7c17b5823f91e4c349e60 - url - https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/84731/788139/llphysicsextensions_tpv-1.0.561752-windows64-561752.tar.bz2 - - name - windows - - - license - internal - license_file - LICENSES/HavokSublicense.pdf - copyright - Copyright (c) 2010, Linden Research, Inc. - version - 1.0.561752 - name - llphysicsextensions_tpv - - mesa - - platforms - - linux - - archive - - hash - 22c50a5d362cad311b4f413cfcffbba2 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/mesa_3p-update-mesa/rev/297294/arch/Linux/installer/mesa-7.11.1.297294-linux-297294.tar.bz2 - - name - linux - - - license - mesa - license_file - LICENSES/mesa.txt - version - 7.11.1.297294 - name - mesa - - meshoptimizer - - platforms - - darwin64 - - archive - - hash - 3bf88febd23656327a4ee2a3ebe99cae4b15573e + 1fe4cbb09fc2e7e85f304880351ebf923a6e13473193ecbe8fdbd23a7215362e41b7be69bfd02125f349cdd90b0748a2db51fe5bbccac109c62dc9ddd7aafc39 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-meshoptimizer/releases/download/v160-032f20a/meshoptimizer-160-darwin64-032f20a.tar.zst + https://api.github.com/repos/AlchemyViewer/llphysicsextensions_tpv/releases/assets/174139889 name darwin64 @@ -1748,91 +1580,67 @@ archive + creds + github hash - 13c0a33d9c49cc07b354527c7ef992d33f854c59 + a6f38ee871f498741a1274dbc3dcc6205b9f9aebb10cc00bf86cec49426358627afb47632a39c2abcfae6468975554b1530a6bb1a1c5ff74283440f838bc4259 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-meshoptimizer/releases/download/v160-032f20a/meshoptimizer-160-windows64-032f20a.tar.zst + https://api.github.com/repos/AlchemyViewer/llphysicsextensions_tpv/releases/assets/174139885 name windows64 license - meshoptimizer + commercial license_file - LICENSES/meshoptimizer.txt + LICENSES/llphysicsextensions.txt copyright - Copyright (c) 2016-2021 Arseny Kapoulkine + Copyright (c) 2010, Linden Research, Inc. version - 160 + 1.0.7493682926 name - meshoptimizer - canonical_repo - https://bitbucket.org/lindenlab/3p-meshoptimizer - description - Meshoptimizer. Mesh optimization library. + llphysicsextensions_tpv mikktspace platforms - darwin64 - - archive - - hash - 65edf85c36a10001e32bdee582bec4732137208b - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-mikktspace/releases/download/v2-e967e1b/mikktspace-1-darwin64-8756084692.tar.zst - - name - darwin64 - - linux64 - - archive - - hash - fa9dcee4584df7e7271fdf69c08e6fd3122a47fc - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-mikktspace/releases/download/v2-e967e1b/mikktspace-1-linux64-8756084692.tar.zst - - name - linux64 - - windows64 + common archive hash - 130b33a70bdb3a8a188376c6a91840bdb61380a8 + 8895c201ad0a54e1ca1030279b7b08df269abf1cd06a00d7efea7835d51e72a11931bd914c3f7f451999293538af6e8f17f8f1e383de50479565cad6a1c055f5 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-mikktspace/releases/download/v2-e967e1b/mikktspace-1-windows64-8756084692.tar.zst + https://github.com/AlchemyViewer/3p-mikktspace/releases/download/v2.0.0-445eec3/mikktspace-2-common-9426976986.tar.zst name - windows64 + common license - Apache 2.0 + Copyright (C) 2011 by Morten S. Mikkelsen license_file mikktspace.txt copyright - Copyright (C) 2011 by Morten S. Mikkelsen, Copyright (C) 2022 Blender Authors + Copyright (C) 2011 by Morten S. Mikkelsen version - 1 + 2 name mikktspace + vcs_branch + refs/tags/v2.0.0-445eec3 + vcs_revision + 445eec3183beee40f7da6d11de6294cc997e4210 + vcs_url + git://github.com/AlchemyViewer/3p-mikktspace.git canonical_repo - https://bitbucket.org/lindenlab/3p-mikktspace + https://github.com/secondlife/3p-mikktspace description Mikktspace Tangent Generator @@ -1845,11 +1653,11 @@ archive hash - 303fa93a0fd6c636a65fd9d5d53beceb84752b0e + f14e4d7add9877ca3d766b9b0441e69b8baa231e2ff190c90a6a9b2b7c9d750c7ca78eac8ddeb11a25d85ab4ae5435106c319de3c5876b2aa391644513594d82 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.3e9876e/minizip_ng-3.0.2.3e9876e-darwin64-3e9876e.tar.zst + https://github.com/AlchemyViewer/3p-minizip-ng/releases/download/v4.0.7-4328474/minizip_ng-4.0.7-darwin64-9629724505.tar.zst name darwin64 @@ -1859,11 +1667,11 @@ archive hash - d4f35ebcea53ab6e9f2e6cbc0d680b10d10b9c53 + 3cbcbed90568fc3856c269e513f7ca4087cd5c3950294f2a4610461f4e2f79271e730151f9452547dfe28d5a881a5d897525812f4c0c6ae85a024fd4de732293 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.3e9876e/minizip_ng-3.0.2.3e9876e-linux64-3e9876e.tar.zst + https://github.com/AlchemyViewer/3p-minizip-ng/releases/download/v4.0.7-4328474/minizip_ng-4.0.7-linux64-9629724505.tar.zst name linux64 @@ -1873,32 +1681,72 @@ archive hash - 5dc469172ba4c6015d5b771e516bc88a65d769eb + 89753eee852550f120f66cb5a95156cd9fac842546c2c91bf663cc4f5f80223567fbe8a90050be30f5f813dd93bc50cdf8ecdf90d97b12622128bda2286055f8 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.3e9876e/minizip_ng-3.0.2.3e9876e-windows64-3e9876e.tar.zst + https://github.com/AlchemyViewer/3p-minizip-ng/releases/download/v4.0.7-4328474/minizip_ng-4.0.7-windows64-9629724505.tar.zst name windows64 license - minizip-ng + zlib license_file LICENSES/minizip-ng.txt copyright - This project uses the zlib license. Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler + Copyright (C) 2010-2021 Nathan Moinvaziri version - 3.0.2.3e9876e + 4.0.7 name minizip-ng canonical_repo - https://bitbucket.org/lindenlab/3p-minizip-ng + https://www.github.com/AlchemyViewer/3p-minizip-ng description - minizip-ng is a zip manipulation library. Based on work of Gilles Vollant. + Fork of the popular zip manipulation library found in the zlib distribution. nanosvg + + platforms + + common + + archive + + hash + e2ef97f3f9165f209eb4fe13a2292ce1814786afc19fde3181ad90fa4d3a593b8a28880b94e17552e40588af928002b56b8343d1f9728c7c5ef1c59171055228 + hash_algorithm + blake2b + url + https://github.com/AlchemyViewer/3p-nanosvg/releases/download/v2024.03.01-e98809b/nanosvg-2024.03.01-common-9427146439.tar.zst + + name + common + + + license + Zlib + license_file + LICENSES/nanosvg.txt + copyright + Copyright (c) 2013-14 Mikko Mononen + version + 2024.03.01 + name + nanosvg + vcs_branch + refs/tags/v2024.03.01-e98809b + vcs_revision + e98809b385b8458e71e2721518d663aec463e879 + vcs_url + git://github.com/AlchemyViewer/3p-nanosvg.git + canonical_repo + https://github.com/AlchemyViewer/3p-nanosvg + description + NanoSVG is a simple single-header-file SVG parser and rasterizer + + ndPhysicsStub platforms @@ -1907,52 +1755,56 @@ archive hash - 32ead724319c2ea6f65fc5be0e3157cc + b808f32989a475821636a58bda646de69c57969e0f5a60bb7afca5e54c13d7ba327729f588e7e164c74bb21c16a3f2454d6005d368bba6e3417bd00403b9cd72 + hash_algorithm + blake2b url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/115452/994130/nanosvg-2022.09.27-darwin64-580364.tar.bz2 + https://github.com/AlchemyViewer/3p-ndphysics/releases/download/v0.1.2-828e329/ndPhysicsStub-0.1.2-darwin64-9458319131.tar.zst name darwin64 - linux + linux64 archive hash - 84698f044598ff79e255965f3d1c3e80 + 8fee81880f24b8dc095e4bc88ad4f124c432ac69d62e9221fa20da7dee79a86f20226f5c3212ccf3e80892c62ad371ca04ad82f8c1df99e8a9d10c556b393e5b + hash_algorithm + blake2b url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/115397/993664/nanosvg-2022.09.27-linux-580337.tar.bz2 + https://github.com/AlchemyViewer/3p-ndphysics/releases/download/v0.1.2-828e329/ndPhysicsStub-0.1.2-linux64-9458319131.tar.zst name - linux + linux64 windows64 archive hash - ee61ff8b866be04c325f1fe2db516d71 + b1ea965ec6e8a10ebbe4a10ca896b0084aea77648910aac6888c0a1fd182970417ebdeaca9b6f1e1260008e4e86b4e06fd24f1882133524b49ba094f13aa7301 + hash_algorithm + blake2b url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/115454/994144/nanosvg-2022.09.27-windows64-580364.tar.bz2 + https://github.com/AlchemyViewer/3p-ndphysics/releases/download/v0.1.2-828e329/ndPhysicsStub-0.1.2-windows64-9458319131.tar.zst name windows64 license - Zlib + LGPL license_file - LICENSES/nanosvg.txt + LICENSES/ndphysicsstub.txt copyright - Copyright (c) 2013-14 Mikko Mononen + Copyright (c)2011-2013 Nicky Dasmijn version - 2022.09.27 + 0.1.2 name - nanosvg - canonical_repo - https://bitbucket.org/lindenlab/3p-nanosvg + ndPhysicsStub description - NanoSVG is a simple single-header-file SVG parser and rasterizer + ndPhysicsStub nghttp2 @@ -1963,11 +1815,11 @@ archive hash - fff611030a34e78b3a88168f64e4e33aef117bc3 + c42e000d1216e9594fb8c4658549275d5279907b5f09143194ca473e846408878a1c1bfe5ca0705649dc4fd59f01f938e35ba60f19fd61ac4af771092dfdcd71 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-nghttp2/releases/download/v1.40.0.b1526c6/nghttp2-1.40.0.b1526c6-darwin64-b1526c6.tar.zst + https://github.com/AlchemyViewer/3p-nghttp2/releases/download/v1.62.1-59062cf/nghttp2-1.62.1-darwin64-9631068005.tar.zst name darwin64 @@ -1977,11 +1829,11 @@ archive hash - 5798b5f6c8579ad44f211a873c072ee8d3fd8c93 + 423fcf201e772228863b0ca1b642fc6391fc6996433fc057fa557f7fd791e00dfd7cb409978dcacf69db91182b8716a25e0d66f1eecc3f52a68c9891600da86e hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-nghttp2/releases/download/v1.40.0.b1526c6/nghttp2-1.40.0.b1526c6-linux64-b1526c6.tar.zst + https://github.com/AlchemyViewer/3p-nghttp2/releases/download/v1.62.1-59062cf/nghttp2-1.62.1-linux64-9631068005.tar.zst name linux64 @@ -1991,11 +1843,11 @@ archive hash - 05aad7759519719a54a6100fddd35b69e57f2386 + f36d8dedecb23bddafce695213c8893df4e10c7ca4c32821231d489aa46045b10a22c7b592984478c0ffd6e4286258d80d3f92ebb36c467b2d9c055f2ab94964 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-nghttp2/releases/download/v1.40.0.b1526c6/nghttp2-1.40.0.b1526c6-windows64-b1526c6.tar.zst + https://github.com/AlchemyViewer/3p-nghttp2/releases/download/v1.62.1-59062cf/nghttp2-1.62.1-windows64-9631068005.tar.zst name windows64 @@ -2009,7 +1861,7 @@ Copyright (c) 2012, 2014, 2015, 2016 Tatsuhiro Tsujikawa Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors version - 1.40.0.b1526c6 + 1.62.1 name nghttp2 description @@ -2026,24 +1878,24 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 1ebe715fc1096198e343c41d50654c11509cdbba + bc574ea89164387a6c12bb49e1bac091c1d4da27 hash_algorithm sha1 url - https://github.com/secondlife/3p-nvapi/releases/download/v352.aac0e19/nvapi-352.aac0e19-windows64-aac0e19.tar.zst + https://github.com/secondlife/3p-nvapi/releases/download/v560-r1/nvapi-560.0.0-r1-windows64-10390321492.tar.zst name windows64 license - NVIDIA Corporation Software License Agreement – NVAPI SDK + MIT license_file - LICENSES/NVAPI_SDK_License_Agreement.pdf + LICENSES/nvapi.txt copyright - Copyright © 2012 NVIDIA Corporation. All rights reserved. + Copyright (c) 2024 NVIDIA CORPORATION and AFFILIATES. All rights reserved. version - 352.aac0e19 + 560.0.0-r1 name nvapi description @@ -2058,11 +1910,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - ad0dd0f608b868cc44c225ee48e114239fca2807 + 3abb5d21655aeca9d6a4de37704e8475821c28d9 hash_algorithm sha1 url - https://github.com/secondlife/3p-ogg_vorbis/releases/download/v1.3.3-1.3.6.e4101b6/ogg_vorbis-1.3.3-1.3.6.e4101b6-darwin64-e4101b6.tar.zst + https://github.com/secondlife/3p-ogg_vorbis/releases/download/v1.3.5-1.3.7-r1/ogg_vorbis-1.3.5-1.3.7.10341271136-darwin64-10341271136.tar.zst name darwin64 @@ -2072,9 +1924,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 45ebd074053dc9cae8c5c74b52085d4b + d89dff615c51b46ebdb3d42ac6bd9e0faae5ddf1 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/465/990/ogg_vorbis-1.2.2-1.3.2.500397-linux64-500397.tar.bz2 + https://github.com/secondlife/3p-ogg_vorbis/releases/download/v1.3.5-1.3.7-r1/ogg_vorbis-1.3.5-1.3.7.10341271136-linux64-10341271136.tar.zst name linux64 @@ -2084,11 +1938,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 2e73a0a5659c9a09eba2f94619aa5c23c7cc3937 + 0dc0f5334d1c882d5d7bce6d2cfaecf2f7ab1ae6 hash_algorithm sha1 url - https://github.com/secondlife/3p-ogg_vorbis/releases/download/v1.3.3-1.3.6.e4101b6/ogg_vorbis-1.3.3-1.3.6.e4101b6-windows64-e4101b6.tar.zst + https://github.com/secondlife/3p-ogg_vorbis/releases/download/v1.3.5-1.3.7-r1/ogg_vorbis-1.3.5-1.3.7.10341271136-windows64-10341271136.tar.zst name windows64 @@ -2101,7 +1955,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors copyright Copyright (c) 2002, Xiph.org Foundation version - 1.3.3-1.3.6.e4101b6 + 1.3.5-1.3.7.10341271136 name ogg_vorbis description @@ -2109,6 +1963,23 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors open-libndofdev + platforms + + linux64 + + archive + + hash + a93b63fc4e5aa3e226b819fb02ce9a05b00dfea1 + hash_algorithm + sha1 + url + https://github.com/secondlife/3p-open-libndofdev/releases/download/v1.14-r5/open_libndofdev-0.14.11968684513-linux64-11968684513.tar.zst + + name + linux64 + + license BSD license_file @@ -2116,7 +1987,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors copyright Copyright (c) 2008, Jan Ciger (jan.ciger (at) gmail.com) version - 0.3 + 0.14.11968684513 name open-libndofdev description @@ -2126,47 +1997,47 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors platforms - linux64 + darwin64 archive hash - e0fbc4874acc4167a6e2b6489fbb8258d98fd665 + 9250e12d4d88f0a437e49be2b32d107f6b4270d0 hash_algorithm sha1 url - https://github.com/secondlife/3p-openal-soft/releases/download/v1.23.1-18e315c/openal-1.23.1-linux64-18e315c.tar.zst + https://github.com/secondlife/3p-openal-soft/releases/download/v1.24.0-r1/openal-1.24.0-r1-darwin64-11968917548.tar.zst name - linux64 + darwin64 - windows64 + linux64 archive hash - 6ae3b5310eb1988741bc55416681ca9d64f76f85 + 1e50db24586fba434a2be62f94fdc687569379ca hash_algorithm sha1 url - https://github.com/secondlife/3p-openal-soft/releases/download/v1.23.1-18e315c/openal-1.23.1-windows64-18e315c.tar.zst + https://github.com/secondlife/3p-openal-soft/releases/download/v1.24.0-r1/openal-1.24.0-r1-linux64-11968917548.tar.zst name - windows64 + linux64 - darwin64 + windows64 archive hash - 4edaef5f03a1122eae8467c4a04d9caccaaaf847 + 2ec7b2b1f4c37e5bd1b473e4a26935ec374ee208 hash_algorithm sha1 url - https://github.com/secondlife/3p-openal-soft/releases/download/v1.23.1-18e315c/openal-1.23.1-darwin64-18e315c.tar.zst + https://github.com/secondlife/3p-openal-soft/releases/download/v1.24.0-r1/openal-1.24.0-r1-windows64-11968917548.tar.zst name - darwin64 + windows64 license @@ -2176,7 +2047,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors copyright Copyright (C) 1999-2007 by authors. version - 1.23.1 + 1.24.0-r1 name openal description @@ -2191,11 +2062,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - c16deaf773cb2a5d001732122ee3ec74db1dceeb + 303b1be2f568e7b70b92fbadab2e41ec4e6e8c258468145f7f49b8116339db722a4b725e39bd48167f0ed568c49fa0b48e2e105fcb55d1951045505e02dfd1df hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-openjpeg/releases/download/v2.5.0.ea12248/openjpeg-2.5.0.ea12248-darwin64-ea12248.tar.zst + https://github.com/AlchemyViewer/3p-openjpeg2/releases/download/v2.4.0-2df27b6/openjpeg-2.4.0-darwin64-9458201901.tar.zst name darwin64 @@ -2205,11 +2076,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 8c277dde6076fb682cb07264dd70f6f2298b633f + 78559bf7495a58759798fb28b308ee53bec8000e72b1a6abba74b0a0f1fc6f4b8c7bcd9334989c1ad437e7eee5c5d80988cd2b018893ebf73d67aea6140df453 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-openjpeg/releases/download/v2.5.0.ea12248/openjpeg-2.5.0.ea12248-linux64-ea12248.tar.zst + https://github.com/AlchemyViewer/3p-openjpeg2/releases/download/v2.4.0-2df27b6/openjpeg-2.4.0-linux64-9458201901.tar.zst name linux64 @@ -2219,11 +2090,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 2abf9535adf21ebdf2295f8a680300432abe6280 + 0a357dd5a28d20f9215805f8f3df38f3c1868ddc84cc8f92964da598bf3c9af173007fa46469c9f1f1136cda01b5cb7d7e9ce792653e1d1f1ec5847c42558b88 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-openjpeg/releases/download/v2.5.0.ea12248/openjpeg-2.5.0.ea12248-windows64-ea12248.tar.zst + https://github.com/AlchemyViewer/3p-openjpeg2/releases/download/v2.4.0-2df27b6/openjpeg-2.4.0-windows64-9458201901.tar.zst name windows64 @@ -2234,9 +2105,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors license_file LICENSES/openjpeg.txt copyright - Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium; Copyright (c) 2002-2007, Professor Benoit Macq; Copyright (c) 2001-2003, David Janssens; Copyright (c) 2002-2003, Yannick Verschueren; Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe; Copyright (c) 2005, Herve Drolon, FreeImage Team; Copyright (c) 2006-2007, Parvatha Elangovan; Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>; Copyright (c) 2010-2011, Kaori Hagihara; Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France; Copyright (c) 2012, CS Systemes d'Information, France; + Copyright (c) 2002-2014, Universite catholique de Louvain, Belgium, Copyright (c) 2002-2012, Professor Benoit Macq, Copyright (c) 2003-2012, Antonin Descampe, Copyright (c) 2003-2009, Francois-Olivier Devaux, Copyright (c) 2005, Herve Drolon, FreeImage Team, Copyright (c) 2002-2003, Yannick Verschueren, Copyright (c) 2001-2003, David Janssens version - 2.5.0.ea12248 + 2.4.0 name openjpeg description @@ -2251,11 +2122,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - b286e4a10cf6b1b2710b85ff96ffc0e41fd5fde8 + e3e7e6b6dd3522f96d5b07c10e9f97f4dc4840450a037a06e2e6a939e62bb8b6be193f503086518565e65f1ac56cdfa3bc49a73f52d900946b3214a5bf2f40ab hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-openssl/releases/download/v1.1.1q.de53f55/openssl-1.1.1q.de53f55-darwin64-de53f55.tar.zst + https://github.com/AlchemyViewer/3p-openssl/releases/download/v1.1.1w-184037f/openssl-1.1.1w-darwin64-9629648957.tar.zst name darwin64 @@ -2265,11 +2136,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 5f6953db991ef6badb0525ecc98daf28d368e9e7 + f4d793fafe20a8acd57357823d1cf98ee6baab568c438ab4dcad6c5bd390b537b0c7e88bbcc1cbe3514b8a730102f1b241c7ca4165aa226648ec335845c1243b hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-openssl/releases/download/v1.1.1q.de53f55/openssl-1.1.1q.de53f55-linux64-de53f55.tar.zst + https://github.com/AlchemyViewer/3p-openssl/releases/download/v1.1.1w-184037f/openssl-1.1.1w-linux64-9629648957.tar.zst name linux64 @@ -2279,11 +2150,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 8bd3dea6d81de5e469b241a1b79e61efce6ecc05 + 84652cf2b245a6038743d5b46dcb5a1cc7a2625c616ff48a7035988291b1504b8684dba31f18ac46881b4f1eaa0272bc39ae69c8a2498eec00cdb58411d784f0 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-openssl/releases/download/v1.1.1q.de53f55/openssl-1.1.1q.de53f55-windows64-de53f55.tar.zst + https://github.com/AlchemyViewer/3p-openssl/releases/download/v1.1.1w-184037f/openssl-1.1.1w-windows64-9629648957.tar.zst name windows64 @@ -2294,15 +2165,49 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors license_file LICENSES/openssl.txt copyright - Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved; Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + Copyright (c) 1998-2023 The OpenSSL Project. All rights reserved; Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) version - 1.1.1q.de53f55 + 1.1.1w name openssl description Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) Library - pcre + sdbus-cpp + + platforms + + linux64 + + archive + + hash + b4d3445d6b6340e17cbcebc814a0e587a56e5709c19bf895123a0246e65fc8112b5e5ada1961fa4d846058ea7b6b5ed92655c884b0a9ab9aed5a73799e4f21cb + hash_algorithm + blake2b + url + https://github.com/AlchemyViewer/3p-sdbus-cpp/releases/download/v1.5.0-9352dbd/sdbus_cpp-1.5.0-linux64-9458301608.tar.zst + + name + linux64 + + + license + LGPL + license_file + LICENSES/sdbus-cpp.txt + copyright + Copyright (c) 22016 - 2021 KISTLER INSTRUMENTE AG, Winterthur, Switzerland, (C) 2016 - 2022 Stanislav Angelovic stanislav.angelovic@protonmail.com + version + 1.5.0 + name + sdbus-cpp + canonical_repo + https://www.github.com/AlchemyViewer/3p-sdbus-cpp + description + High-level C++ D-Bus library for Linux designed to provide easy-to-use yet powerful API in modern C++ + + sentry platforms @@ -2311,11 +2216,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - b372d37596474043a62568e569b0ce155192f484 + ecfcb4b85a1f28467892d43754dfeb7adde65be71623a7e016d5ea8ea0d7dfa3211ad4aa02d2fa64ab1aaf02d831df524a69412d2bb3651772201756af1b6472 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-pcre/releases/download/v8.35.979fd86/pcre-8.35.979fd86-darwin64-979fd86.tar.zst + https://github.com/AlchemyViewer/3p-sentry/releases/download/v8.42.1-0.7.17-r1/sentry-8.42.1-0.7.17-darwin64-12495374196.tar.zst name darwin64 @@ -2325,9 +2230,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 0f058ca2176e7d02d51e54c66a96f336 + ca3eb2d3da3d7b39ec699119724cebee0842af0c46085597bc243dcbb62a5ef063aecde82893c06812e5375dd3f53953382d1d3e52173d652214078d41bcb64f + hash_algorithm + blake2b url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/908/2010/pcre-8.35.500898-linux64-500898.tar.bz2 + https://github.com/AlchemyViewer/3p-sentry/releases/download/v8.42.1-0.7.17-r1/sentry-8.42.1-0.7.17-linux64-12495374196.tar.zst name linux64 @@ -2337,28 +2244,30 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 166564afb60a7536a038fae80e2fc9a41d6dbccb + 399edc177df918a350b1b3d058d33f6ef5344d600ed65db0b5b46683c46a363265b21499891804cafe0cd873cd7717e50ab324f5dfe381146abca1c2f85cacb1 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-pcre/releases/download/v8.35.979fd86/pcre-8.35.979fd86-windows64-979fd86.tar.zst + https://github.com/AlchemyViewer/3p-sentry/releases/download/v8.42.1-0.7.17-r1/sentry-8.42.1-0.7.17-windows64-12495374196.tar.zst name windows64 license - bsd + MIT license_file - LICENSES/pcre-license.txt + LICENSES/sentry.txt copyright - Copyright (c) 1997-2014 University of Cambridge; Copyright(c) 2009-2014 Zoltan Herczeg; Copyright (c) 2007-2012, Google Inc. + Copyright (c) Sentry version - 8.35.979fd86 + 8.42.1-0.7.17 name - pcre + sentry + canonical_repo + https://www.github.com/AlchemyViewer/3p-sentry description - PCRE Perl-compatible regular expression library + The official Sentry SDK for Apple and Native slvoice @@ -2369,11 +2278,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 1e70b06fe6eb9796097010871b32d8e95167e373 + 68652d259102c7d4303aff48a5c97cfd4a40b7793ba8638c3f78429a3f44e7afa75ce549c72267c7d6a466b246d10e749315d835d9e91b804d054f0d5843cf2a hash_algorithm - sha1 + blake2b url - https://automated-builds-secondlife-com.s3.amazonaws.com/gh/secondlife/3p-slvoice/slvoice-4.10.0000.32327.5fc3fe7c.5942f08-darwin64-5942f08.tar.zst + https://github.com/AlchemyViewer/slvoice/releases/download/v4.10.0000.32327.5fc3fe7c-53a31d8/slvoice-4.10.0000.32327.5fc3fe7c.558436-darwin64-9635499398.tar.zst name darwin64 @@ -2383,9 +2292,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 92b0ae08832bd0e99c34ef8f3e6346ad + 52b56b66f56d124de66331364ac72e153d2ae9b54a01f833edaed1f74f358fb5bd3aa25e2df7d171197ea1251f9bddbb854ee3dafc39621e6b6a417a0841173b + hash_algorithm + blake2b url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/613/1289/slvoice-3.2.0002.10426.500605-linux64-500605.tar.bz2 + https://github.com/AlchemyViewer/slvoice/releases/download/v4.10.0000.32327.5fc3fe7c-53a31d8/slvoice-4.10.0000.32327.5fc3fe7c.558436-linux64-9635499398.tar.zst name linux64 @@ -2395,11 +2306,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - ddfb7c30d9756915e8b26f44e2ee3a69ee87fb9a + 686a0beb084c6a48965fa62e09b77990c195257e5408491bd69d487323ee7b393dd66ef9d1bfc6a173391fcb08e72b76743c8573018e88e742499effe8d08385 hash_algorithm - sha1 + blake2b url - https://automated-builds-secondlife-com.s3.amazonaws.com/gh/secondlife/3p-slvoice/slvoice-4.10.0000.32327.5fc3fe7c.5942f08-windows64-5942f08.tar.zst + https://github.com/AlchemyViewer/slvoice/releases/download/v4.10.0000.32327.5fc3fe7c-53a31d8/slvoice-4.10.0000.32327.5fc3fe7c.558436-windows64-9635499398.tar.zst name windows64 @@ -2412,7 +2323,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors copyright 2010 Vivox, including audio coding using Polycom¨ Siren14TM (ITU-T Rec. G.722.1 Annex C) version - 4.10.0000.32327.5fc3fe7c.5942f08 + 4.10.0000.32327.5fc3fe7c.558436 name slvoice description @@ -2422,45 +2333,19 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors platforms - darwin64 - - archive - - hash - cfed00d8ea7265c035c2d86a234b28efb0b23756 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-darwin64-b8f6746.tar.zst - - name - darwin64 - - linux64 - - archive - - hash - 9de1295b157c9913c28be81ff933c73493ecc132 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-linux64-b8f6746.tar.zst - - - windows64 + common archive hash - 4141710fccbd1ea2b3b53d00e189bdfa2ee9d441 + e86d943ec57771b6f58ff6bb9afc8634221946ea881b874deed1533b2996db95042617f68ffc8a9a0331b76068e0a4acebf23a2e4f2844e53527625ccc8062d9 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-windows64-b8f6746.tar.zst + https://github.com/AlchemyViewer/3p-three_js/releases/download/v0.135.0-77c9281/threejs-0.135.0-common-9430571859.tar.zst name - windows64 + common license @@ -2468,11 +2353,19 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors license_file LICENSES/THREEJS_LICENSE.txt copyright - Copyright © 2010-2021 three.js authors + Copyright (c) 2010-2021 three.js authors version - 0.132.2 + 0.135.0 name threejs + vcs_branch + refs/tags/v0.135.0-77c9281 + vcs_revision + 77c92813a3c4c6f5e67f1dc7534eb004fe6fec6b + vcs_url + git://github.com/AlchemyViewer/3p-three_js.git + canonical_repo + https://github.com/AlchemyViewer/3p-three_js tinygltf @@ -2483,11 +2376,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 2c47ae2d0c38c86b8c2db8d9317f0ab15edfc74f + 005d23bb2606ae2cc9e844adc1a0edf112c69812 hash_algorithm sha1 url - https://github.com/secondlife/3p-tinygltf/releases/download/v2.5.0-1ae57fd/tinygltf-v2.5.0-common-1ae57fd.tar.zst + https://github.com/secondlife/3p-tinygltf/releases/download/v2.9.3-r1/tinygltf-2.9.3-r1-common-10341018043.tar.zst name common @@ -2500,7 +2393,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors copyright // Copyright (c) 2015 - Present Syoyo Fujita, Aurélien Chatelain and many contributors. version - v2.5.0 + 2.9.3-r1 name tinygltf canonical_repo @@ -2521,11 +2414,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 49650353442698c3e05102676fe427d0ebe02f0b + 226225ec049826c35adc5e897e0398ed64d4bedb hash_algorithm sha1 url - https://github.com/secondlife/3p-tracy/releases/download/v0.8.1-eecbf72/tracy-v0.8.1-eecbf72-darwin64-eecbf72.tar.zst + https://github.com/secondlife/3p-tracy/releases/download/v0.11.0%2Br1/tracy-v0.11.0.10376230034-darwin64-10376230034.tar.zst name darwin64 @@ -2535,24 +2428,38 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 2b80e7407e4f3e82eff3879add0e9ad63e7fcace + 8c5429d1a1486f40cf7e5e88a232222d1fa4f78e hash_algorithm sha1 url - https://github.com/secondlife/3p-tracy/releases/download/v0.8.1-eecbf72/tracy-v0.8.1-eecbf72-windows64-eecbf72.tar.zst + https://github.com/secondlife/3p-tracy/releases/download/v0.11.0%2Br1/tracy-v0.11.0.10376230034-windows64-10376230034.tar.zst name windows64 + linux64 + + archive + + hash + ed0664a009aba1dcf1246d845839f524e857162e + hash_algorithm + sha1 + url + https://github.com/secondlife/3p-tracy/releases/download/v0.11.0%2Br1/tracy-v0.11.0.10376230034-linux64-10376230034.tar.zst + + name + linux64 + license bsd license_file LICENSES/tracy_license.txt copyright - Copyright (c) 2017-2022, Bartosz Taudul (wolf@nereid.pl) + Copyright (c) 2017-2024, Bartosz Taudul (wolf@nereid.pl) version - v0.8.1-eecbf72 + v0.11.0.10376230034 name tracy canonical_repo @@ -2605,11 +2512,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 4b6ee5113b1368ec9ff5b59e195adde370b9f585 + a1a7d38837de70266e1ce598eedd7f562900b7e3533f526f862862d159bc3d92ff45cbe555854168fd97eb2d7b0d5e567a83ed06bac5839d5940c8c6e339d691 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-uriparser/releases/download/v0.9.4-8fff38a/uriparser-0.9.4-darwin64-8fff38a.tar.zst + https://github.com/AlchemyViewer/3p-uriparser/releases/download/v0.9.7-0c8b6cd/uriparser-0.9.7-darwin64-9458294214.tar.zst name darwin64 @@ -2619,11 +2526,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 44dc74ec73e37c56bef6317d12a29d0435cb4bbb + 09ace5c15428e8c0847b31a7a80ec01720459aa13951379041590fd9304244aa7f9cf68d519a3d1ca76ea3c99530ba5cdd7b10537a6df2f307eb913d429407af hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-uriparser/releases/download/v0.9.4-8fff38a/uriparser-0.9.4-linux64-8fff38a.tar.zst + https://github.com/AlchemyViewer/3p-uriparser/releases/download/v0.9.7-0c8b6cd/uriparser-0.9.7-linux64-9458294214.tar.zst name linux64 @@ -2633,11 +2540,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - e8b20edfc624f1d09bc83480932a9c844d47fc13 + c26b45fb83295d8bfa4a33a2f28a1d0ca9d94f7740468faa3ade4cc0708e41634f0460948b8d2b5e213fb06561b7c0a432e2fc46cd2289b1329be859168060cd hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-uriparser/releases/download/v0.9.4-8fff38a/uriparser-0.9.4-windows64-8fff38a.tar.zst + https://github.com/AlchemyViewer/3p-uriparser/releases/download/v0.9.7-0c8b6cd/uriparser-0.9.7-windows64-9458294214.tar.zst name windows64 @@ -2650,120 +2557,22 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors copyright Copyright (C) 2007, Weijia Song <songweijia@gmail.com>, Sebastian Pipping <webmaster@hartwork.org> version - 0.9.4 + 0.9.7 name uriparser description uriparser is a strictly RFC 3986 compliant URI parsing and handling library written in C. uriparser is cross-platform, fast, supports Unicode and is licensed under the New BSD license. - viewer-fonts + vlc-bin - platforms - - darwin64 - - archive - - hash - 6041bbd4001e3951f96ac3456c7906da - url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/113314/980656/viewer_fonts-1.579464-darwin64-579464.tar.bz2 - - name - darwin64 - - windows64 - - archive - - hash - 1745ba6eec0108250446fe01d4aa065c - url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/113307/980631/viewer_fonts-1.579464-windows64-579464.tar.bz2 - - name - windows64 - - - license - Various open source - license_file - LICENSES/fonts.txt copyright - Copyright 2016-2022 Brad Erickson CC-BY-4.0/MIT, Copyright 2016-2022 Twitter, Inc. CC-BY-4.0, Copyright 2013 Joe Loughry and Terence Eden MIT - version - 1.579464 - name - viewer-fonts - description - Viewer fonts - - viewer-manager - - platforms - - darwin64 - - archive - - hash - 8a04e6b3c6ff7f645219955a1389035565eb10d8 - hash_algorithm - sha1 - url - https://github.com/secondlife/viewer-manager/releases/download/v3.0-f14b5ec-D591/viewer_manager-3.0-f14b5ec-darwin64-f14b5ec.tar.zst - - name - darwin64 - - linux64 - - archive - - hash - a1e467c08ecbe6ab24fc8756a815a431a9b00f62 - hash_algorithm - sha1 - url - https://github.com/secondlife/viewer-manager/releases/download/v3.0-f14b5ec-D591/viewer_manager-3.0-f14b5ec-linux64-f14b5ec.tar.zst - - name - linux64 - - windows64 - - archive - - hash - 56b613decdd36b2a17646bf3e2cfc2fed8456b8c - hash_algorithm - sha1 - url - https://github.com/secondlife/viewer-manager/releases/download/v3.0-f14b5ec-D591/viewer_manager-3.0-f14b5ec-windows64-f14b5ec.tar.zst - - name - windows64 - - + Copyright (C) 1998-2016 VLC authors and VideoLAN license - viewerlgpl + GPL2 license_file - LICENSE - copyright - Copyright (c) 2000-2012, Linden Research, Inc. - version - 3.0-f14b5ec + LICENSES/vlc.txt name - viewer-manager - description - Linden Lab Viewer Management Process suite. - source - https://bitbucket.org/lindenlab/vmp-standalone - source_type - hg - - vlc-bin - + vlc-bin platforms darwin64 @@ -2771,11 +2580,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - a26b47ab01a7e2c0add4c236886162c1135b3b79 + f13c82042ef8311e57dd75a3b2bda02d70f711b5 hash_algorithm sha1 url - https://github.com/secondlife/3p-vlc-bin/releases/download/v3.0.16.c219a5d/vlc_bin-3.0.16.c219a5d-darwin64-c219a5d.tar.zst + https://github.com/secondlife/3p-vlc-bin/releases/download/v3.0.21.e60ee26/vlc_bin-3.0.21.10218721728-darwin64-10218721728.tar.zst name darwin64 @@ -2785,26 +2594,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - d56002da7435bab166c88d59eeaf69fd87cd897d + bd995441c1a229ed1432ddd837d7d1663b8c5548 hash_algorithm sha1 url - https://github.com/secondlife/3p-vlc-bin/releases/download/v3.0.16.c219a5d/vlc_bin-3.0.16.c219a5d-windows64-c219a5d.tar.zst + https://github.com/secondlife/3p-vlc-bin/releases/download/v3.0.21.e60ee26/vlc_bin-3.0.21.10218721728-windows64-10218721728.tar.zst name windows64 - license - GPL2 - license_file - LICENSES/vlc.txt - copyright - Copyright (C) 1998-2016 VLC authors and VideoLAN version - 3.0.16.c219a5d - name - vlc-bin + 3.0.21.10218721728 xmlrpc-epi @@ -2815,11 +2616,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - aa12611374876196b3ebb6bda8d419a697217b8b + ac9cfa03ad3a9d067f56e9d1f1135e798d9f28dab7b38e7e1ec8930db361857f699f08462ef0b9ad7f99e5c933e04f833e9e01486f6a77eef3a052f3e6ca3c77 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-xmlrpc-epi/releases/download/v0.54.1.8a05acf/xmlrpc_epi-0.54.1.8a05acf-darwin64-8a05acf.tar.zst + https://github.com/AlchemyViewer/3p-xmlrpc-epi/releases/download/v0.54.1-3c5f6d1/xmlrpc_epi-0.54.1-darwin64-9537341342.tar.zst name darwin64 @@ -2829,11 +2630,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - ad0c8b41ee4b4de216382bec46ee1c25962a3f12 + bd5f596a1ddb00648d35bcf66a44417cf6d4e6a61993b98a0e29a5d9be2825c945526458da93cce175f66fdecfaeb8a34645bca503c9b34b5e70f0f3bf678bef hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-xmlrpc-epi/releases/download/v0.54.1.8a05acf/xmlrpc_epi-0.54.1.8a05acf-linux64-8a05acf.tar.zst + https://github.com/AlchemyViewer/3p-xmlrpc-epi/releases/download/v0.54.1-3c5f6d1/xmlrpc_epi-0.54.1-linux64-9537341342.tar.zst name linux64 @@ -2843,11 +2644,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - e53fd38c14b8c47c7c84dead8a1b211bb8be170c + 00efc177ea3b694cff08013233acba24bb2e3c9b9c4339e688e3e0a49fb3876b545cb5ae5511795d352df16643da06d53c24d1d6b92aa5c88dec6f517ba21cc8 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-xmlrpc-epi/releases/download/v0.54.1.8a05acf/xmlrpc_epi-0.54.1.8a05acf-windows64-8a05acf.tar.zst + https://github.com/AlchemyViewer/3p-xmlrpc-epi/releases/download/v0.54.1-3c5f6d1/xmlrpc_epi-0.54.1-windows64-9537341342.tar.zst name windows64 @@ -2860,46 +2661,12 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors copyright Copyright: (C) 2000 Epinions, Inc. version - 0.54.1.8a05acf + 0.54.1 name xmlrpc-epi description XMLRPC Library - vulkan_gltf - - platforms - - common - - archive - - hash - 8e365eff8dcace48d91e2530f8b13e420849aefc - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-vulkan-gltf-pbr/releases/download/v1.0.0-d7c372f/vulkan_gltf-1.0.0-common-d7c372f.tar.zst - - name - common - - - license - Copyright (c) 2018 Sascha Willems - license_file - vulkan_gltf.txt - copyright - Copyright (c) 2018 Sascha Willems - version - 1.0.0 - name - vulkan_gltf - canonical_repo - https://bitbucket.org/lindenlab/3p-vulkan-gltf-pbr - description - Vulkan GLTF Sample Implementation - webrtc platforms @@ -2909,11 +2676,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 194b4f5957c9f003c46e61a434e23a7c3d1180d6 + 6314fdcee81a3538a7d960178ade66301c2fa002 hash_algorithm sha1 url - https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.70-debug/webrtc-m114.5735.08.70-debug.10377605436-darwin64-10377605436.tar.zst + https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.73-alpha/webrtc-m114.5735.08.73-alpha.11958809572-darwin64-11958809572.tar.zst name darwin64 @@ -2923,11 +2690,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 38e0c7d30b4c40eb04e60ab199440b847cc7c6cf + 95d7730a3d6955697e043f3fdf20ebdcc0c71fc0 hash_algorithm sha1 url - https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.70-debug/webrtc-m114.5735.08.70-debug.10377605436-linux64-10377605436.tar.zst + https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.73-alpha/webrtc-m114.5735.08.73-alpha.11958809572-linux64-11958809572.tar.zst name linux64 @@ -2937,11 +2704,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 053fb5c873df9192e34cddcf2db1c5fdcff76ba1 + c7b329d6409576af6eb5b80655b007f52639c43b hash_algorithm sha1 url - https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.70-debug/webrtc-m114.5735.08.70-debug.10377605436-windows64-10377605436.tar.zst + https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.73-alpha/webrtc-m114.5735.08.73-alpha.11958809572-windows64-11958809572.tar.zst name windows64 @@ -2954,7 +2721,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors copyright Copyright (c) 2011, The WebRTC project authors. All rights reserved. version - m114.5735.08.70-debug.10377605436 + m114.5735.08.73-alpha.11958809572 name webrtc vcs_branch @@ -2975,11 +2742,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 1a73c476b371b62066d1c3eced249660e9467e53 + fc9362865e33391d55c64d6101726da0a25d924e hash_algorithm sha1 url - https://github.com/secondlife/3p-xxhash/releases/download/v0.8.1-69ff69a/xxhash-0.8.1-69ff69a-common-69ff69a.tar.zst + https://github.com/secondlife/3p-xxhash/releases/download/v0.8.2-r1/xxhash-0.8.2-10285735820-common-10285735820.tar.zst name common @@ -2992,7 +2759,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors copyright Copyright (c) 2012-2021 Yann Collet version - 0.8.1-69ff69a + 0.8.2-10285735820 name xxhash description @@ -3007,11 +2774,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - dacc5f3fb307c4d1292ed1ffb1d595d83599062d + a0f1b3614561560dc005a1049a74995f8156de37b755d921287c0cb01bbcc986d8471f75667a94e687ea637fb51a8add7a822dff20597b774c7135b461e82eb3 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-zlib-ng/releases/download/v1.2.11.zlib-ng.32fd361/zlib_ng-1.2.11.zlib-ng.32fd361-darwin64-32fd361.tar.zst + https://github.com/AlchemyViewer/3p-zlib-ng/releases/download/v2.1.7-53d2079/zlib_ng-2.1.7.9590799858-darwin64-9590799858.tar.zst name darwin64 @@ -3021,11 +2788,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - fba88375e12454ae19f4528e11ffc7ddf7d879ec + dfc48136d0ea5ea2a23070d165118c183af312d98ae16d9fc7764a68803e6b74a301df172206a6045a6aefccae81e78ebee2e3c972ef0f3cefe55d1dd0c13d74 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-zlib-ng/releases/download/v1.2.11.zlib-ng.32fd361/zlib_ng-1.2.11.zlib-ng.32fd361-linux64-32fd361.tar.zst + https://github.com/AlchemyViewer/3p-zlib-ng/releases/download/v2.1.7-53d2079/zlib_ng-2.1.7.9590799858-linux64-9590799858.tar.zst name linux64 @@ -3035,70 +2802,138 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - ccfca9451063e2d0e95baa73b1ad2054d3e38907 + 685f21ced6e1b06341da5bc250d1f8deeabc8759f7cb643504be94953d3390799d3d23da99a0245953c555064431a41fc1c448348be2f2aa4f52b823b3d2f7e3 hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-zlib-ng/releases/download/v1.2.11.zlib-ng.32fd361/zlib_ng-1.2.11.zlib-ng.32fd361-windows64-32fd361.tar.zst + https://github.com/AlchemyViewer/3p-zlib-ng/releases/download/v2.1.7-53d2079/zlib_ng-2.1.7.9590799858-windows64-9590799858.tar.zst name windows64 license - zlib-ng + zlib license_file LICENSES/zlib-ng.txt copyright - Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler + Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler version - 1.2.11.zlib-ng.32fd361 + 2.1.7.9590799858 name zlib-ng canonical_repo - https://bitbucket.org/lindenlab/3p-zlib-ng + https://www.github.com/AlchemyViewer/3p-zlib-ng description - zlib data compression library for the next generation systems + zlib replacement with optimizations for next generation systems. - tinyexr + zstd platforms - common + windows64 archive hash - 8278a2368136cb12319ca00e7aceb2829bf3ebd8 + ce05e053a91588afcec06b2019f981c30bf4f01d8f9fdedf7ca55b98c02f6a2fd52389f5e8aca7141749edb1b251bc2adc96d2d27be1e1529ac1900466ac4ffa hash_algorithm - sha1 + blake2b url - https://github.com/secondlife/3p-tinyexr/releases/download/v1.0.8-ba4bc64/tinyexr-v1.0.8-common-9373975608.tar.zst + https://github.com/AlchemyViewer/3p-zstd/releases/download/v1.5.6-7f7a1b5/zstd-1.5.6-windows64-9556372916.tar.zst name - common + windows64 + + darwin64 + + archive + + hash + 49f99846168a81befd0a4a58f70e52c036b24f0556f443d1f67945aa7bc46c55f419504b5f3ec01c6e4d68d6379c59a85a1e50caae6c77d8b5de90fbe37b309e + hash_algorithm + blake2b + url + https://github.com/AlchemyViewer/3p-zstd/releases/download/v1.5.6-7f7a1b5/zstd-1.5.6-darwin64-9556372916.tar.zst + + name + darwin64 + + linux64 + + archive + + hash + 7292d63b869a268c7afb7fc226f8fe3f0bb204df7492727761e47707dc6a5cf33127909c2141bd7d185069aa8ffe7aaa32cca884b0c36a997b71b5bd5dd1c9a6 + hash_algorithm + blake2b + url + https://github.com/AlchemyViewer/3p-zstd/releases/download/v1.5.6-7f7a1b5/zstd-1.5.6-linux64-9556372916.tar.zst + + name + linux64 license - 3-clause BSD + BSD license_file - LICENSES/tinyexr_license.txt + LICENSES/zstd.txt copyright - Copyright (c) 2014 - 2021, Syoyo Fujita and many contributors. + Copyright (c) 2016-present, Facebook, Inc. All rights reserved. version - v1.0.8 + 1.5.6 name - tinyexr + zstd vcs_branch - dependabot/github_actions/secondlife/action-autobuild-4 + refs/tags/v1.5.6-7f7a1b5 vcs_revision - 4dc4d1d90d82a22843e2adf5130f9ecb5ee5769e + 7f7a1b5e6c720561e7de963635e37c9a0052caae vcs_url - https://github.com/secondlife/3p-tinyexr + git://github.com/AlchemyViewer/3p-zstd.git + canonical_repo + https://github.com/AlchemyViewer/3p-zstd + description + Zstandard - Fast real-time compression algorithm + + tinyexr + + copyright + Copyright (c) 2014 - 2021, Syoyo Fujita and many contributors. description tinyexr import library + license + 3-clause BSD + license_file + LICENSES/tinyexr_license.txt + name + tinyexr + platforms + + common + + archive + + hash + a9649f85e20c0b83acfd7b02ca19c1dcdd15f01e + hash_algorithm + sha1 + url + https://github.com/secondlife/3p-tinyexr/releases/download/v1.0.9-5e8947c/tinyexr-1.0.9-5e8947c-common-10475846787.tar.zst + + name + common + + source_type git + vcs_branch + dependabot/github_actions/secondlife/action-autobuild-4 + vcs_revision + 4dc4d1d90d82a22843e2adf5130f9ecb5ee5769e + vcs_url + https://github.com/secondlife/3p-tinyexr + version + 1.0.9-5e8947c package_description @@ -3109,6 +2944,27 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors configurations + Coverity + + configure + + command + cmake + options + + -DCMAKE_BUILD_TYPE:STRING=Release + -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE + -DROOT_PROJECT_NAME:STRING=Alchemy + -DINSTALL_PROPRIETARY=FALSE + + arguments + + ../indra + + + name + Coverity + RelWithDebInfo configure @@ -3119,9 +2975,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE - -DROOT_PROJECT_NAME:STRING=SecondLife + -DROOT_PROJECT_NAME:STRING=Alchemy -DINSTALL_PROPRIETARY=TRUE - + build @@ -3139,13 +2995,13 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE - -DROOT_PROJECT_NAME:STRING=SecondLife + -DROOT_PROJECT_NAME:STRING=Alchemy -DINSTALL_PROPRIETARY=FALSE - + arguments ../indra - + name RelWithDebInfoOS @@ -3160,9 +3016,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE - -DROOT_PROJECT_NAME:STRING=SecondLife + -DROOT_PROJECT_NAME:STRING=Alchemy -DINSTALL_PROPRIETARY=TRUE - + build @@ -3180,13 +3036,13 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DCMAKE_BUILD_TYPE:STRING=Release -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE - -DROOT_PROJECT_NAME:STRING=SecondLife + -DROOT_PROJECT_NAME:STRING=Alchemy -DINSTALL_PROPRIETARY=FALSE - + arguments ../indra - + name ReleaseOS @@ -3199,6 +3055,38 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors configurations + Coverity + + configure + + command + cmake + options + + -G + Unix Makefiles + + arguments + + ../indra + + + build + + command + cov-build + options + + --dir + cov-int + make + -j + $AUTOBUILD_CPU_COUNT + + + name + Coverity + RelWithDebInfo configure @@ -3207,11 +3095,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Xcode - + arguments ../indra - + build @@ -3222,9 +3110,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -configuration RelWithDebInfo -project - SecondLife.xcodeproj + Alchemy.xcodeproj -parallelizeTargets - + default True @@ -3250,7 +3138,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -configuration RelWithDebInfo -project - SecondLife.xcodeproj + Alchemy.xcodeproj -parallelizeTargets @@ -3280,7 +3168,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -configuration Release -project - SecondLife.xcodeproj + Alchemy.xcodeproj -parallelizeTargets @@ -3295,7 +3183,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Xcode - + build @@ -3306,24 +3194,50 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -configuration Release -project - SecondLife.xcodeproj + Alchemy.xcodeproj -parallelizeTargets - + name ReleaseOS build_directory - build-darwin-x86_64 + build-darwin-64 name darwin64 - linux64 + linux configurations - Release + Coverity + + configure + + options + + -G + Unix Makefiles + + + build + + command + cov-build + options + + --dir + cov-int + make + -j + $AUTOBUILD_CPU_COUNT + + + name + Coverity + + RelWithDebInfo configure @@ -3331,21 +3245,87 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Ninja - -DLL_TESTS=Off - + arguments ../indra - + build command - ninja + cmake + options + + --build + . + --config + Release + --parallel + $AUTOBUILD_CPU_COUNT + default True name + RelWithDebInfo + + RelWithDebInfoOS + + configure + + options + + -G + Ninja + + + build + + command + cmake + options + + --build + . + --config + Release + --parallel + $AUTOBUILD_CPU_COUNT + + + name + RelWithDebInfoOS + + Release + + configure + + options + + -G + Ninja + + arguments + + ../indra + + + build + + command + cmake + options + + --build + . + --config + Release + --parallel + $AUTOBUILD_CPU_COUNT + + + name Release ReleaseOS @@ -3356,13 +3336,21 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Ninja - -DLL_TESTS=Off - + build command - ninja + cmake + options + + --build + . + --config + Release + --parallel + $AUTOBUILD_CPU_COUNT + name ReleaseOS @@ -3377,9 +3365,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors build_directory - build-linux-x86_64 + build-linux-$AUTOBUILD_ADDRSIZE name - linux64 + linux windows @@ -3395,25 +3383,27 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} -A ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - + -T + host=x64 + arguments ..\indra - + build command - devenv + cmake options - /build - RelWithDebInfo|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - - arguments - - SecondLife.sln - + --build + . + --config + Release + -- + /m + default True @@ -3430,32 +3420,26 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} -A ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - -DINSTALL_PROPRIETARY=FALSE - -DUSE_KDU=FALSE - -DUSE_OPENAL:BOOL=ON - + -DUNATTENDED:BOOL=ON + arguments ..\indra - + build command - msbuild.exe + cmake options - /p:Configuration=RelWithDebInfo - /p:Platform=${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - /t:Build - /p:useenv=true - /verbosity:minimal - /p:VCBuildAdditionalOptions= /incremental - - arguments - - SecondLife.sln - + --build + . + --config + RelWithDebInfo + -- + /m + name RelWithDebInfoOS @@ -3470,25 +3454,27 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} -A ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - + -T + host=x64 + arguments ..\indra - + build command - devenv + cmake options - /build - Release|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - - arguments - - SecondLife.sln - + --build + . + --config + Release + -- + /m + name Release @@ -3503,40 +3489,34 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} -A ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - -DUNATTENDED:BOOL=ON - -DINSTALL_PROPRIETARY=FALSE - -DUSE_KDU=FALSE - -DUSE_OPENAL:BOOL=ON - + -T + host=x64 + arguments ..\indra - + build command - msbuild.exe + cmake options - /p:Configuration=Release - /p:Platform=${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - /t:Build - /p:useenv=true - /verbosity:minimal - /p:VCBuildAdditionalOptions= /incremental - - arguments - - SecondLife.sln - + --build + . + --config + Release + -- + /m + name ReleaseOS build_directory - build-vc${AUTOBUILD_VSVER|170}-$AUTOBUILD_ADDRSIZE + build-vc-$AUTOBUILD_ADDRSIZE name windows @@ -3546,15 +3526,15 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors license_file docs/LICENSE-source.txt copyright - Copyright (c) 2020, Linden Research, Inc. + Copyright (c) 2013-2023, Alchemy Development Group version_file newview/viewer_version.txt name - Second Life Viewer + Alchemy Viewer canonical_repo - https://github.com/secondlife/viewer + https://github.com/AlchemyViewer/Alchemy description - Second Life Viewer + Alchemy Viewer - + \ No newline at end of file diff --git a/doc/supporters.txt b/doc/supporters.txt new file mode 100644 index 00000000000..99e8695cbe9 --- /dev/null +++ b/doc/supporters.txt @@ -0,0 +1,45 @@ +These are the generous donors to the Alchemy project and other opensource developers that help develop this metaverse. +Sorry if I've missed anyone just ping me on discord! + +A Raven +Adrint +Amerille Starling +Anarcho Rodentia Autonomous Zone +Axirala +Bellimora Bunny +Farlado UwU +gwigz +Heather Laughton +Idoru Venus +Johnny Ming +JP Beach +Katie Suki +Lance McKenath +Lemon +Logue Takacs +Makay Scribe +Michelle Dakota +Moolly Parton +MutexCat +Nia +Nikolina Evergarden +PygBag +Rhea Mercury +Sandy Burgess +Sonador Blackwood +Sonny +Spiffy Voxel +Strobus Spore +Todd Lygon +Tyler C +WurdNerd +ZoZo Raven + +Kitty Barnett +Amethyst +Nicky Dasmijn +Ansariel Hiller +Beq Janus +Shyotl Kuhr +Zi Ree +Kadah diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt index 422927704a7..35b17a55be6 100644 --- a/indra/CMakeLists.txt +++ b/indra/CMakeLists.txt @@ -11,11 +11,41 @@ ## We're not there yet, but once done, there is a kludge in Linking.cmake # "if(${CMAKE_VERSION} VERSION_LESS "3.20.0")" that can also be removed cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR) +if(POLICY CMP0063) + cmake_policy(SET CMP0063 NEW) +endif() +if(POLICY CMP0083) + cmake_policy(SET CMP0083 NEW) +endif() +if(POLICY CMP0091) + cmake_policy(SET CMP0091 NEW) +endif() +if(POLICY CMP0119) + cmake_policy(SET CMP0119 NEW) +endif() -set(ROOT_PROJECT_NAME "SecondLife" CACHE STRING - "The root project/makefile/solution name. Defaults to SecondLife.") +set(ROOT_PROJECT_NAME "Alchemy" CACHE STRING + "The root project/makefile/solution name. Defaults to Alchemy.") project(${ROOT_PROJECT_NAME}) +# The viewer code base can now be successfully compiled with -std=c++14. But +# turning that on in the generic viewer-build-variables/variables file would +# potentially require tweaking each of our ~50 third-party library builds. +# Until we decide to set -std=c++14 in viewer-build-variables/variables, set +# it locally here: we want to at least prevent inadvertently reintroducing +# viewer code that would fail with C++14. +if(MSVC) + set(CMAKE_CXX_STANDARD 20) +else() + set(CMAKE_OBJCXX_STANDARD 17) + set(CMAKE_CXX_STANDARD 17) +endif() +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + enable_language(OBJCXX) +endif() + set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" "${CMAKE_CURRENT_BINARY_DIR}") include(conanbuildinfo OPTIONAL RESULT_VARIABLE USE_CONAN ) @@ -29,15 +59,20 @@ else() set( USE_AUTOBUILD_3P ON ) endif() -include(Variables) -include(BuildVersion) - +set_property(GLOBAL PROPERTY USE_FOLDERS ON) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Build type. One of: Debug Release RelWithDebInfo" FORCE) endif (NOT CMAKE_BUILD_TYPE) +set(Python3_FIND_VIRTUALENV FIRST) +find_package(Python3 COMPONENTS Interpreter) + +include(Variables) +include(BuildVersion) + add_subdirectory(cmake) +add_subdirectory(deps) add_subdirectory(${LIBS_OPEN_PREFIX}llaudio) add_subdirectory(${LIBS_OPEN_PREFIX}llappearance) @@ -64,10 +99,6 @@ endif (WINDOWS AND EXISTS ${LIBS_CLOSED_DIR}copy_win_scripts) add_custom_target(viewer) -if (NOT USE_BUGSPLAT) -add_subdirectory(${LIBS_OPEN_PREFIX}llcrashlogger) -endif (NOT USE_BUGSPLAT) - add_subdirectory(${LIBS_OPEN_PREFIX}llplugin) add_subdirectory(${LIBS_OPEN_PREFIX}llui) add_subdirectory(${LIBS_OPEN_PREFIX}viewer_components) @@ -82,37 +113,16 @@ if (ENABLE_MEDIA_PLUGINS) add_subdirectory(${LIBS_OPEN_PREFIX}media_plugins) endif (ENABLE_MEDIA_PLUGINS) -if (LINUX) - if (INSTALL_PROPRIETARY) - include(LLAppearanceUtility) - add_subdirectory(${LLAPPEARANCEUTILITY_SRC_DIR} ${LLAPPEARANCEUTILITY_BIN_DIR}) - endif (INSTALL_PROPRIETARY) -elseif (WINDOWS) - # cmake EXISTS requires an absolute path, see indra/cmake/Variables.cmake - if (EXISTS ${VIEWER_DIR}win_setup) - add_subdirectory(${VIEWER_DIR}win_setup) - endif (EXISTS ${VIEWER_DIR}win_setup) -endif (LINUX) - -if (WINDOWS) - # cmake EXISTS requires an absolute path, see indra/cmake/Variables.cmake - if (EXISTS ${VIEWER_DIR}win_setup) - add_subdirectory(${VIEWER_DIR}win_setup) - endif (EXISTS ${VIEWER_DIR}win_setup) -endif (WINDOWS) - if (USE_BUGSPLAT) if (BUGSPLAT_DB) message(STATUS "Building with BugSplat; database '${BUGSPLAT_DB}'") else (BUGSPLAT_DB) message(WARNING "Building with BugSplat, but no database name set (BUGSPLAT_DB)") endif (BUGSPLAT_DB) -else (USE_BUGSPLAT) - message(STATUS "Not building with BugSplat") endif (USE_BUGSPLAT) add_subdirectory(${VIEWER_PREFIX}newview) -add_dependencies(viewer secondlife-bin) +add_dependencies(viewer alchemy-bin) add_subdirectory(${VIEWER_PREFIX}doxygen EXCLUDE_FROM_ALL) diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index ceb04b014b6..a8b3f9ea2bd 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -14,24 +14,20 @@ #***************************************************************************** include_guard() +include(CheckCXXCompilerFlag) include(Variables) - -# We go to some trouble to set LL_BUILD to the set of relevant compiler flags. -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} $ENV{LL_BUILD}") -# Given that, all the flags you see added below are flags NOT present in -# https://bitbucket.org/lindenlab/viewer-build-variables/src/tip/variables. -# Before adding new ones here, it's important to ask: can this flag really be -# applied to the viewer only, or should/must it be applied to all 3p libraries -# as well? +include(SDL2) # Portable compilation flags. -add_compile_definitions( ADDRESS_SIZE=${ADDRESS_SIZE}) -# Because older versions of Boost.Bind dumped placeholders _1, _2 et al. into -# the global namespace, Boost now requires either BOOST_BIND_NO_PLACEHOLDERS -# to avoid that or BOOST_BIND_GLOBAL_PLACEHOLDERS to state that we require it -# -- which we do. Without one or the other, we get a ton of Boost warnings. -add_compile_definitions(BOOST_BIND_GLOBAL_PLACEHOLDERS) - +add_compile_definitions( + ADDRESS_SIZE=${ADDRESS_SIZE} + $<$:_DEBUG> + $<$:LL_DEBUG=1> + $<$,$>:LL_RELEASE=1> + $<$,$>:NDEBUG> + $<$:LL_RELEASE_WITH_DEBUG_INFO=1> + $<$:LL_RELEASE_FOR_DOWNLOAD=1> + ) # Configure crash reporting set(RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in release builds") set(NON_RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in developer builds") @@ -44,156 +40,240 @@ if(NON_RELEASE_CRASH_REPORTING) add_compile_definitions( LL_SEND_CRASH_REPORTS=1) endif() -# Don't bother with a MinSizeRel or Debug builds. -set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release" CACHE STRING "Supported build types." FORCE) +# Don't bother with a MinSizeRel build. +set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release;Debug" CACHE STRING + "Supported build types." FORCE) -# Platform-specific compilation flags. +# SIMD config +option(USE_AVX2 "Enable usage of the AVX2 instruction set" OFF) +option(USE_AVX "Enable usage of the AVX instruction set" OFF) +option(USE_SSE42 "Enable usage of the SSE4.2 instruction set" ON) +# Warnings +option(DISABLE_FATAL_WARNINGS "Disable warnings as errors" ON) + +if(USE_LTO) + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ${USE_LTO}) +endif() + +set(CMAKE_POSITION_INDEPENDENT_CODE ON) +set(CMAKE_C_VISIBILITY_PRESET "hidden") +set(CMAKE_CXX_VISIBILITY_PRESET "hidden") +set(CMAKE_VISIBILITY_INLINES_HIDDEN ON) + +# Platform-specific compilation flags. if (WINDOWS) # Don't build DLLs. set(BUILD_SHARED_LIBS OFF) + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>DLL") + + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + add_compile_options(/MP) + elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + add_compile_options(-m${ADDRESS_SIZE}) + endif () + + add_compile_definitions( + $<$:_SCL_SECURE_NO_WARNINGS=1> + $<$,$>:_ITERATOR_DEBUG_LEVEL=0> + LL_WINDOWS=1 + NOMINMAX + UNICODE + _UNICODE + _CRT_SECURE_NO_WARNINGS + _CRT_NONSTDC_NO_DEPRECATE + _WINSOCK_DEPRECATED_NO_WARNINGS + _SILENCE_CXX20_CISO646_REMOVED_WARNING + ) - # for "backwards compatibility", cmake sneaks in the Zm1000 option which royally - # screws incredibuild. this hack disables it. - # for details see: http://connect.microsoft.com/VisualStudio/feedback/details/368107/clxx-fatal-error-c1027-inconsistent-values-for-ym-between-creation-and-use-of-precompiled-headers - # http://www.ogre3d.org/forums/viewtopic.php?f=2&t=60015 - # http://www.cmake.org/pipermail/cmake/2009-September/032143.html - string(REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) - - # zlib has assembly-language object files incompatible with SAFESEH - add_link_options(/LARGEADDRESSAWARE - /SAFESEH:NO - /NODEFAULTLIB:LIBCMT - /IGNORE:4099) - - add_definitions( - -DNOMINMAX -# /DDOM_DYNAMIC # For shared library colladadom - ) add_compile_options( - /Zo - /GS - /TP - /W3 - /c - /Zc:forScope - /nologo - /Oy- - /fp:fast - /MP - ) + $<$:/Zc:inline> + $<$:/fp:fast> + /Zi + /EHsc + /permissive- + /W3 + /c + /Zc:__cplusplus + /Zc:preprocessor + /Zc:char8_t- + /nologo + ) + + add_link_options( + /DEBUG:FULL + /IGNORE:4099 + ) - # Nicky: x64 implies SSE2 - if( ADDRESS_SIZE EQUAL 32 ) - add_compile_options( /arch:SSE2 ) + if (ADDRESS_SIZE EQUAL 32) + add_compile_options(/arch:SSE2) + elseif (USE_AVX2) + add_compile_options(/arch:AVX2) + elseif (USE_AVX) + add_compile_options(/arch:AVX) + elseif (USE_SSE42) + add_compile_definitions(__SSE3__=1 __SSSE3__=1 __SSE4__=1 __SSE4_1__=1 __SSE4_2__=1) + else () + add_compile_definitions(__SSE3__=1) + endif () + + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + add_compile_options(/Zc:externConstexpr /ZH:SHA_256) + elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + add_compile_options(/Qvec /Zc:dllexportInlines- /clang:-mprefer-vector-width=128 -fno-strict-aliasing -Wno-ignored-pragma-intrinsic -Wno-unused-local-typedef) endif() - # Are we using the crummy Visual Studio KDU build workaround? - if (NOT VS_DISABLE_FATAL_WARNINGS) - add_compile_options(/WX) - endif (NOT VS_DISABLE_FATAL_WARNINGS) - - #ND: When using something like buildcache (https://github.com/mbitsnbites/buildcache) - # to make those wrappers work /Zi must be changed to /Z7, as /Zi due to it's nature is not compatible with caching - if( ${CMAKE_CXX_COMPILER_LAUNCHER} MATCHES ".*cache.*") - add_compile_options( /Z7 ) - string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") - string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") - string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") - string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") + if(FAVOR_AMD AND FAVOR_INTEL) + message(FATAL_ERROR "Cannot enable FAVOR_AMD and FAVOR_INTEL at the same time") + elseif(FAVOR_AMD) + add_compile_options(/favor:AMD64) + elseif(FAVOR_INTEL) + add_compile_options(/favor:INTEL64) endif() - # workaround for github runner image breakage: - # https://github.com/actions/runner-images/issues/10004#issuecomment-2153445161 - # can be removed after the above issue is resolved and deployed across GHA - add_compile_definitions(_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) -endif (WINDOWS) + if (USE_LTO) + add_link_options( + $<$:/OPT:REF> + $<$:/OPT:ICF> + ) + elseif (INCREMENTAL_LINK) + add_link_options($<$:/INCREMENTAL>) + else () + add_link_options( + $<$:/OPT:REF> + $<$:/OPT:ICF> + $<$:/INCREMENTAL:NO> + ) + endif () + + if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + # This is a massive hack and makes me sad. clang-cl fails to find its own builtins library :/ x64 only for now. + set(CLANG_RT_NAMES clang_rt.builtins-x86_64) + find_library(CLANG_RT NAMES ${CLANG_RT_NAMES} + PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\LLVM\\LLVM]/lib/clang/${CMAKE_CXX_COMPILER_VERSION}/lib/windows + [HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\LLVM\\LLVM]/lib/clang/${CMAKE_CXX_COMPILER_VERSION}/lib/windows) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /defaultlib:\"${CLANG_RT}\"") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /defaultlib:\"${CLANG_RT}\"") + endif() + if (NOT DISABLE_FATAL_WARNINGS) + add_compile_options(/WX) + endif (NOT DISABLE_FATAL_WARNINGS) -if (LINUX) - set(CMAKE_SKIP_RPATH TRUE) + string(REPLACE "/Ob2" "/Ob3" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}) + string(REPLACE "/Ob2" "/Ob3" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE}) - # EXTERNAL_TOS - # force this platform to accept TOS via external browser + # configure win32 API for 10 and above compatibility + set(WINVER "0x0A00" CACHE STRING "Win32 API Target version (see http://msdn.microsoft.com/en-us/library/aa383745%28v=VS.85%29.aspx)") + add_compile_definitions(WINVER=${WINVER} _WIN32_WINNT=${WINVER}) +endif (WINDOWS) - # LL_IGNORE_SIGCHLD - # don't catch SIGCHLD in our base application class for the viewer - some of - # our 3rd party libs may need their *own* SIGCHLD handler to work. Sigh! The - # viewer doesn't need to catch SIGCHLD anyway. +if (LINUX) + set(CMAKE_SKIP_BUILD_RPATH TRUE) add_compile_definitions( - _REENTRANT - _FORTIFY_SOURCE=2 - EXTERNAL_TOS - APPID=secondlife - LL_IGNORE_SIGCHLD - ) - add_compile_options( - -fexceptions - -fno-math-errno - -fno-strict-aliasing - -fsigned-char - -msse2 - -mfpmath=sse - -pthread - -Wno-parentheses - -Wno-deprecated - -fvisibility=hidden - ) - - if (ADDRESS_SIZE EQUAL 32) - add_compile_options(-march=pentium4) - endif (ADDRESS_SIZE EQUAL 32) - - # this stops us requiring a really recent glibc at runtime - add_compile_options(-fno-stack-protector) - # linking can be very memory-hungry, especially the final viewer link - set(CMAKE_CXX_LINK_FLAGS "-Wl,--no-keep-memory") - - set(CMAKE_CXX_FLAGS_DEBUG "-fno-inline ${CMAKE_CXX_FLAGS_DEBUG}") -endif (LINUX) + LL_LINUX=1 + APPID=secondlife + LL_IGNORE_SIGCHLD + _REENTRANT + $<$:_FORTIFY_SOURCE=2> + ) + add_compile_options( + $<$,$>:-fstack-protector> + -fexceptions + -fno-math-errno + -fno-strict-aliasing + -fno-omit-frame-pointer + -fsigned-char + -g + -gz + -pthread + ) + + if (USE_AVX2) + add_compile_options(-mavx2) + elseif (USE_AVX) + add_compile_options(-mavx) + elseif (USE_SSE42) + add_compile_options(-mfpmath=sse -msse -msse2 -msse3 -mssse3 -msse4 -msse4.1 -msse4.2) + else() + add_compile_options(-mfpmath=sse -msse -msse2 -msse3 -mssse3 -msse4 -msse4.1) + endif () + + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + if (USE_ASAN) + add_compile_options(-fsanitize=address -fsanitize-recover=address) + link_libraries(-lasan) + elseif (USE_LEAKSAN) + add_compile_options(-fsanitize=leak) + link_libraries(-llsan) + elseif (USE_UBSAN) + add_compile_options(-fsanitize=undefined -fno-sanitize=vptr) + link_libraries(-lubsan) + elseif (USE_THDSAN) + add_compile_options(-fsanitize=thread) + endif () + endif () + + if (USE_ASAN OR USE_LEAKSAN OR USE_UBSAN OR USE_THDSAN) + add_compile_options(-Og) + else () + add_compile_options(-O3) + endif () + + # Enable these flags so we have a read only GOT and some linking opts + add_link_options("LINKER:-z,relro" "LINKER:-z,now" "LINKER:--as-needed" "LINKER:--build-id=uuid") +endif () if (DARWIN) - # Warnings should be fatal -- thanks, Nicky Perian, for spotting reversed default - set(CLANG_DISABLE_FATAL_WARNINGS OFF) - set(CMAKE_CXX_LINK_FLAGS "-Wl,-headerpad_max_install_names,-search_paths_first") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}") - set(DARWIN_extra_cstar_flags "-Wno-unused-local-typedef -Wno-deprecated-declarations") - # Ensure that CMAKE_CXX_FLAGS has the correct -g debug information format -- - # see Variables.cmake. - string(REPLACE "-gdwarf-2" "-g${CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT}" - CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DARWIN_extra_cstar_flags}") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${DARWIN_extra_cstar_flags}") - # NOTE: it's critical that the optimization flag is put in front. - # NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered. -## Really?? On developer machines too? -##set(ENABLE_SIGNING TRUE) -##set(SIGNING_IDENTITY "Developer ID Application: Linden Research, Inc.") - - # required for clang-15/xcode-15 since our boost package still uses deprecated std::unary_function/binary_function - # see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#C++-Standard-Library - add_compile_definitions(_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION) -endif (DARWIN) + add_compile_definitions(LL_DARWIN=1 GL_SILENCE_DEPRECATION=1) + add_link_options("LINKER:-headerpad_max_install_names" "LINKER:-search_paths_first" "LINKER:-dead_strip") + add_compile_options( + -O3 + -gdwarf-2 + -fno-strict-aliasing + -msse4.2 + $<$:-fobjc-arc> + $<$:-fobjc-weak> + ) +endif () if (LINUX OR DARWIN) - set(GCC_WARNINGS -Wall -Wno-sign-compare -Wno-trigraphs) + add_compile_options(-Wall -Wno-sign-compare -Wno-reorder) + if (${CMAKE_CXX_COMPILER_ID} STREQUAL GNU) + add_compile_options(-Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-ignored-qualifiers -Wno-unused-function) + elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang) + add_compile_options(-Wno-trigraphs -Wno-unused-local-typedef -Wno-unknown-warning-option -Wno-shorten-64-to-32) + endif() - if (NOT GCC_DISABLE_FATAL_WARNINGS) - list(APPEND GCC_WARNINGS -Werror) - endif (NOT GCC_DISABLE_FATAL_WARNINGS) + CHECK_CXX_COMPILER_FLAG(-Wdeprecated-copy HAS_DEPRECATED_COPY) + if (HAS_DEPRECATED_COPY) + add_compile_options(-Wno-deprecated-copy) + endif() - list(APPEND GCC_WARNINGS -Wno-reorder -Wno-non-virtual-dtor ) + if (NOT DISABLE_FATAL_WARNINGS) + add_compile_options(-Werror) + endif (NOT DISABLE_FATAL_WARNINGS) if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13) - list(APPEND GCC_WARNINGS -Wno-unused-but-set-variable -Wno-unused-variable ) + add_compile_options(-Wno-unused-but-set-variable -Wno-unused-variable ) endif() - add_compile_options(${GCC_WARNINGS}) add_compile_options(-m${ADDRESS_SIZE}) -endif (LINUX OR DARWIN) +endif () +option(RELEASE_SHOW_ASSERTS "Enable asserts in release builds" OFF) +if(RELEASE_SHOW_ASSERTS) + add_compile_definitions(RELEASE_SHOW_ASSERT=1) +endif() + +option(ENABLE_TIMING "Enable all fast timers" ON) +if(ENABLE_TIMING) + add_compile_definitions(AL_ENABLE_ALL_TIMERS=1) +endif() +if(HAVOK OR HAVOK_TPV) + add_compile_definitions(LL_HAVOK=1) +endif() diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake index 21139319c33..015bc9d13c2 100644 --- a/indra/cmake/APR.cmake +++ b/indra/cmake/APR.cmake @@ -9,35 +9,32 @@ use_system_binary( apr apr-util ) use_prebuilt_binary(apr_suite) if (WINDOWS) - if (LLCOMMON_LINK_SHARED) - set(APR_selector "lib") - else (LLCOMMON_LINK_SHARED) set(APR_selector "") - endif (LLCOMMON_LINK_SHARED) - target_link_libraries( ll::apr INTERFACE - ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}apr-1.lib - ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}aprutil-1.lib + target_link_libraries( ll::apr INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/${APR_selector}apr-1.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}apr-1.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/${APR_selector}apriconv-1.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}apriconv-1.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/${APR_selector}aprutil-1.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}aprutil-1.lib ) + target_compile_definitions( ll::apr INTERFACE APR_DECLARE_STATIC=1 APU_DECLARE_STATIC=1 API_DECLARE_STATIC=1) elseif (DARWIN) - if (LLCOMMON_LINK_SHARED) - set(APR_selector "0.dylib") - set(APRUTIL_selector "0.dylib") - else (LLCOMMON_LINK_SHARED) - set(APR_selector "a") - set(APRUTIL_selector "a") - endif (LLCOMMON_LINK_SHARED) - target_link_libraries( ll::apr INTERFACE - libapr-1.${APR_selector} - libaprutil-1.${APRUTIL_selector} + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libapr-1.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libapr-1.a + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libaprutil-1.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.a iconv ) -else (WINDOWS) + +else() target_link_libraries( ll::apr INTERFACE - apr-1 - aprutil-1 - uuid + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libapr-1.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libapr-1.a + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libaprutil-1.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.a rt ) -endif (WINDOWS) +endif () target_include_directories( ll::apr SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/apr-1 ) diff --git a/indra/cmake/Audio.cmake b/indra/cmake/Audio.cmake index 38547bb0172..7f607724bf4 100644 --- a/indra/cmake/Audio.cmake +++ b/indra/cmake/Audio.cmake @@ -1,4 +1,5 @@ # -*- cmake -*- +include(Linking) include(Prebuilt) include_guard() @@ -9,8 +10,23 @@ use_prebuilt_binary(ogg_vorbis) target_include_directories( ll::vorbis SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include ) if (WINDOWS) - target_link_libraries(ll::vorbis INTERFACE ogg_static vorbis_static vorbisenc_static vorbisfile_static ) + target_link_libraries(ll::vorbis INTERFACE + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libogg.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libogg.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbis.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libvorbis.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbisfile.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libvorbisfile.lib + ) else (WINDOWS) - target_link_libraries(ll::vorbis INTERFACE ogg vorbis vorbisenc vorbisfile ) + target_link_libraries(ll::vorbis INTERFACE + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbisenc.a + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libvorbisenc.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbisfile.a + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libvorbisfile.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbis.a + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libvorbis.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libogg.a + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libogg.a + ) endif (WINDOWS) - diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index 601a23a86db..73345567d3d 100644 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -18,36 +18,56 @@ set(addrsfx "-x${ADDRESS_SIZE}") if (WINDOWS) target_link_libraries( ll::boost INTERFACE - libboost_context-mt${addrsfx} - libboost_fiber-mt${addrsfx} - libboost_filesystem-mt${addrsfx} - libboost_program_options-mt${addrsfx} - libboost_regex-mt${addrsfx} - libboost_system-mt${addrsfx} - libboost_thread-mt${addrsfx}) + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libboost_context-mt${addrsfx}.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libboost_context-mt-gd${addrsfx}.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libboost_fiber-mt${addrsfx}.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libboost_fiber-mt-gd${addrsfx}.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libboost_filesystem-mt${addrsfx}.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libboost_filesystem-mt-gd${addrsfx}.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libboost_program_options-mt${addrsfx}.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libboost_program_options-mt-gd${addrsfx}.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libboost_regex-mt${addrsfx}.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libboost_regex-mt-gd${addrsfx}.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libboost_stacktrace_windbg-mt${addrsfx}.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libboost_stacktrace_windbg-mt-gd${addrsfx}.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libboost_system-mt${addrsfx}.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libboost_system-mt-gd${addrsfx}.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libboost_thread-mt${addrsfx}.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libboost_thread-mt-gd${addrsfx}.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libboost_wave-mt${addrsfx}.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libboost_wave-mt-gd${addrsfx}.lib + ) elseif (LINUX) target_link_libraries( ll::boost INTERFACE - boost_context-mt${addrsfx} - boost_fiber-mt${addrsfx} - boost_filesystem-mt${addrsfx} - boost_program_options-mt${addrsfx} - boost_regex-mt${addrsfx} - boost_signals-mt${addrsfx} - boost_system-mt${addrsfx} - boost_thread-mt${addrsfx}) + ${ARCH_PREBUILT_DIRS}/libboost_fiber-mt${addrsfx}.a + ${ARCH_PREBUILT_DIRS}/libboost_context-mt${addrsfx}.a + ${ARCH_PREBUILT_DIRS}/libboost_filesystem-mt${addrsfx}.a + ${ARCH_PREBUILT_DIRS}/libboost_program_options-mt${addrsfx}.a + ${ARCH_PREBUILT_DIRS}/libboost_regex-mt${addrsfx}.a + ${ARCH_PREBUILT_DIRS}/libboost_thread-mt${addrsfx}.a + ${ARCH_PREBUILT_DIRS}/libboost_wave-mt${addrsfx}.a + ${ARCH_PREBUILT_DIRS}/libboost_system-mt${addrsfx}.a + rt + ) elseif (DARWIN) target_link_libraries( ll::boost INTERFACE - boost_context-mt${addrsfx} - boost_fiber-mt${addrsfx} - boost_filesystem-mt${addrsfx} - boost_program_options-mt${addrsfx} - boost_regex-mt${addrsfx} - boost_system-mt${addrsfx} - boost_thread-mt${addrsfx}) + optimized boost_context-mt + debug boost_context-mt-d + optimized boost_fiber-mt + debug boost_fiber-mt-d + optimized boost_filesystem-mt + debug boost_filesystem-mt-d + optimized boost_program_options-mt + debug boost_program_options-mt-d + optimized boost_regex-mt + debug boost_regex-mt-d + optimized boost_system-mt + debug boost_system-mt-d + optimized boost_thread-mt + debug boost_thread-mt-d + optimized boost_wave-mt + debug boost_wave-mt-d + ) endif (WINDOWS) -if (LINUX) - set(BOOST_SYSTEM_LIBRARY ${BOOST_SYSTEM_LIBRARY} rt) - set(BOOST_THREAD_LIBRARY ${BOOST_THREAD_LIBRARY} rt) -endif (LINUX) - +target_compile_definitions( ll::boost INTERFACE BOOST_ALLOW_DEPRECATED_HEADERS=1 BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE=1 BOOST_BIND_GLOBAL_PLACEHOLDERS=1) diff --git a/indra/cmake/BuildPackagesInfo.cmake b/indra/cmake/BuildPackagesInfo.cmake index 659ba9d5795..348432c55d9 100644 --- a/indra/cmake/BuildPackagesInfo.cmake +++ b/indra/cmake/BuildPackagesInfo.cmake @@ -1,8 +1,9 @@ # -*- cmake -*- # Construct the version and copyright information based on package data. -include(Python) include(FindAutobuild) +include_guard() + # packages-formatter.py runs autobuild install --versions, which needs to know # the build_directory, which (on Windows) depends on AUTOBUILD_ADDRSIZE. # Within an autobuild build, AUTOBUILD_ADDRSIZE is already set. But when @@ -13,8 +14,8 @@ add_custom_command(OUTPUT packages-info.txt MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/../autobuild.xml DEPENDS ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py ${CMAKE_SOURCE_DIR}/../autobuild.xml - COMMAND ${PYTHON_EXECUTABLE} + COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cmake/run_build_test.py -DAUTOBUILD_ADDRSIZE=${ADDRESS_SIZE} -DAUTOBUILD=${AUTOBUILD_EXECUTABLE} - ${PYTHON_EXECUTABLE} - ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py "${VIEWER_CHANNEL}" "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" "${AUTOBUILD_INSTALL_DIR}" > packages-info.txt + ${Python3_EXECUTABLE} + ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py "${VIEWER_CHANNEL}" "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" "${LIBS_PREBUILT_DIR}" > packages-info.txt ) diff --git a/indra/cmake/BuildVersion.cmake b/indra/cmake/BuildVersion.cmake index aa151bafc8a..bf80d6b436c 100644 --- a/indra/cmake/BuildVersion.cmake +++ b/indra/cmake/BuildVersion.cmake @@ -1,58 +1,158 @@ # -*- cmake -*- -# Construct the viewer version number based on the indra/VIEWER_VERSION file -if (NOT DEFINED VIEWER_SHORT_VERSION) # will be true in indra/, false in indra/newview/ - set(VIEWER_VERSION_BASE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/newview/VIEWER_VERSION.txt") +include_guard() + +option(REVISION_FROM_VCS "Get current revision from vcs" ON) +# Construct the viewer channel from environment variables or defaults +if(NOT DEFINED VIEWER_CHANNEL) + if(DEFINED ENV{VIEWER_CHANNEL_BASE}) + set(VIEWER_CHANNEL_BASE + $ENV{VIEWER_CHANNEL_BASE} + CACHE STRING "Viewer Channel Base Name" FORCE) + else() + set(VIEWER_CHANNEL_BASE + "Alchemy" + CACHE STRING "Viewer Channel Base Name") + endif() + + if(DEFINED ENV{VIEWER_CHANNEL_TYPE}) + set(VIEWER_CHANNEL_TYPE + $ENV{VIEWER_CHANNEL_TYPE} + CACHE STRING "Viewer Channel Type Name" FORCE) + else() + set(VIEWER_CHANNEL_TYPE + "Test" + CACHE STRING "Viewer Channel Type Name") + endif() + + if(DEFINED ENV{VIEWER_CHANNEL_CODENAME}) + set(VIEWER_CHANNEL_CODENAME_INTERNAL $ENV{VIEWER_CHANNEL_CODENAME}) + elseif(DEFINED VIEWER_CHANNEL_CODENAME) + set(VIEWER_CHANNEL_CODENAME_INTERNAL ${VIEWER_CHANNEL_CODENAME}) + else() + set(VIEWER_CHANNEL_CODENAME_FILE "${CMAKE_SOURCE_DIR}/newview/VIEWER_PROJECT_CODENAME.txt") + + if(EXISTS ${VIEWER_CHANNEL_CODENAME_FILE}) + file(STRINGS ${VIEWER_CHANNEL_CODENAME_FILE} VIEWER_CHANNEL_CODENAME_INTERNAL) + else() + set(VIEWER_CHANNEL_CODENAME_INTERNAL "Default") + endif() + endif() + if("${VIEWER_CHANNEL_TYPE}" STREQUAL "Project") + set(VIEWER_CHANNEL "${VIEWER_CHANNEL_BASE} ${VIEWER_CHANNEL_TYPE} ${VIEWER_CHANNEL_CODENAME_INTERNAL}") + else() + set(VIEWER_CHANNEL "${VIEWER_CHANNEL_BASE} ${VIEWER_CHANNEL_TYPE}") + endif() +endif() - if ( EXISTS ${VIEWER_VERSION_BASE_FILE} ) +if(DEFINED VIEWER_CHANNEL) + string(REPLACE " " "" VIEWER_CHANNEL_ONEWORD ${VIEWER_CHANNEL}) +endif() + +# Construct the viewer version number based on the indra/VIEWER_VERSION file +if(NOT DEFINED VIEWER_SHORT_VERSION) # will be true in indra/, false in indra/newview/ + set(VIEWER_VERSION_BASE_FILE "${CMAKE_SOURCE_DIR}/newview/VIEWER_VERSION.txt") + + if(EXISTS ${VIEWER_VERSION_BASE_FILE}) file(STRINGS ${VIEWER_VERSION_BASE_FILE} VIEWER_SHORT_VERSION REGEX "^[0-9]+\\.[0-9]+\\.[0-9]+") string(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" VIEWER_VERSION_MAJOR ${VIEWER_SHORT_VERSION}) string(REGEX REPLACE "^[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" VIEWER_VERSION_MINOR ${VIEWER_SHORT_VERSION}) string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" VIEWER_VERSION_PATCH ${VIEWER_SHORT_VERSION}) - if (DEFINED ENV{revision}) - set(VIEWER_VERSION_REVISION $ENV{revision}) - message(STATUS "Revision (from environment): ${VIEWER_VERSION_REVISION}") + if(REVISION_FROM_VCS) + find_package(Git) + endif() - elseif (DEFINED ENV{AUTOBUILD_BUILD_ID}) - set(VIEWER_VERSION_REVISION $ENV{AUTOBUILD_BUILD_ID}) - message(STATUS "Revision (from autobuild environment): ${VIEWER_VERSION_REVISION}") + if((NOT REVISION_FROM_VCS) AND DEFINED ENV{CI_PIPELINE_ID}) + set(VIEWER_VERSION_REVISION $ENV{CI_PIPELINE_ID}) + message(STATUS "Revision (from environment): ${VIEWER_VERSION_REVISION}") + elseif((NOT REVISION_FROM_VCS) AND DEFINED ENV{AUTOBUILD_BUILD_ID}) + set(VIEWER_VERSION_REVISION $ENV{AUTOBUILD_BUILD_ID}) + message(STATUS "Revision (from autobuild environment): ${VIEWER_VERSION_REVISION}") + elseif(Git_FOUND) + execute_process( + COMMAND ${GIT_EXECUTABLE} rev-list HEAD --count + OUTPUT_VARIABLE GIT_REV_LIST_COUNT + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_STRIP_TRAILING_WHITESPACE) - else (DEFINED ENV{revision}) - find_program(GIT git) - if (DEFINED GIT ) - execute_process( - COMMAND ${GIT} rev-list --count HEAD - OUTPUT_VARIABLE VIEWER_VERSION_REVISION - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - if ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$") - message(STATUS "Revision (from git) ${VIEWER_VERSION_REVISION}") - else ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$") - message(STATUS "Revision not set (repository not found?); using 0") - set(VIEWER_VERSION_REVISION 0 ) - endif ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$") - else (DEFINED GIT ) - message(STATUS "Revision not set: 'git' found; using 0") + if(GIT_REV_LIST_COUNT) + set(VIEWER_VERSION_REVISION ${GIT_REV_LIST_COUNT}) + else(GIT_REV_LIST_COUNT) set(VIEWER_VERSION_REVISION 0) - endif (DEFINED GIT) - endif (DEFINED ENV{revision}) + endif(GIT_REV_LIST_COUNT) + else() + set(VIEWER_VERSION_REVISION 0) + endif() message(STATUS "Building '${VIEWER_CHANNEL}' Version ${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}") - else ( EXISTS ${VIEWER_VERSION_BASE_FILE} ) + else(EXISTS ${VIEWER_VERSION_BASE_FILE}) message(SEND_ERROR "Cannot get viewer version from '${VIEWER_VERSION_BASE_FILE}'") - endif ( EXISTS ${VIEWER_VERSION_BASE_FILE} ) - - if ("${VIEWER_VERSION_REVISION}" STREQUAL "") - message(STATUS "Ultimate fallback, revision was blank or not set: will use 0") - set(VIEWER_VERSION_REVISION 0) - endif ("${VIEWER_VERSION_REVISION}" STREQUAL "") - - set(VIEWER_CHANNEL_VERSION_DEFINES - "LL_VIEWER_CHANNEL=${VIEWER_CHANNEL}" - "LL_VIEWER_VERSION_MAJOR=${VIEWER_VERSION_MAJOR}" - "LL_VIEWER_VERSION_MINOR=${VIEWER_VERSION_MINOR}" - "LL_VIEWER_VERSION_PATCH=${VIEWER_VERSION_PATCH}" - "LL_VIEWER_VERSION_BUILD=${VIEWER_VERSION_REVISION}" - "LLBUILD_CONFIG=\"${CMAKE_BUILD_TYPE}\"" - ) -endif (NOT DEFINED VIEWER_SHORT_VERSION) + endif(EXISTS ${VIEWER_VERSION_BASE_FILE}) + + if("${VIEWER_VERSION_REVISION}" STREQUAL "") + message(STATUS "Ultimate fallback, revision was blank or not set: will use 0") + set(VIEWER_VERSION_REVISION 0) + endif("${VIEWER_VERSION_REVISION}" STREQUAL "") + + set(VIEWER_VERSION_AND_CHANNEL "${VIEWER_CHANNEL} ${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}") +endif(NOT DEFINED VIEWER_SHORT_VERSION) + +if (NOT DEFINED VIEWER_COMMIT_LONG_SHA) + if((NOT REVISION_FROM_VCS) AND DEFINED ENV{CI_COMMIT_SHA}) + set(VIEWER_COMMIT_LONG_SHA $ENV{CI_COMMIT_SHA}) + message(STATUS "Long SHA (from environment): ${VIEWER_COMMIT_LONG_SHA}") + elseif(Git_FOUND) + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD + OUTPUT_VARIABLE GIT_COMMIT_SHA + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + if(GIT_COMMIT_SHA) + set(VIEWER_COMMIT_LONG_SHA ${GIT_COMMIT_SHA}) + else() + set(VIEWER_COMMIT_LONG_SHA 0) + endif() + message(STATUS "Long SHA: ${VIEWER_COMMIT_LONG_SHA}") + else() + set(VIEWER_COMMIT_LONG_SHA 0) + endif() +endif (NOT DEFINED VIEWER_COMMIT_LONG_SHA) + +if (NOT DEFINED VIEWER_COMMIT_SHORT_SHA) + if((NOT REVISION_FROM_VCS) AND DEFINED ENV{CI_COMMIT_SHORT_SHA}) + set(VIEWER_COMMIT_SHORT_SHA $ENV{CI_COMMIT_SHORT_SHA}) + message(STATUS "Short SHA (from environment): ${VIEWER_COMMIT_SHORT_SHA}") + elseif(Git_FOUND) + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD + OUTPUT_VARIABLE GIT_COMMIT_SHORT_SHA + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + if(GIT_COMMIT_SHORT_SHA) + set(VIEWER_COMMIT_SHORT_SHA ${GIT_COMMIT_SHORT_SHA}) + else() + set(VIEWER_COMMIT_SHORT_SHA 0) + endif() + message(STATUS "Short SHA: ${VIEWER_COMMIT_SHORT_SHA}") + else() + set(VIEWER_COMMIT_SHORT_SHA 0) + endif() +endif (NOT DEFINED VIEWER_COMMIT_SHORT_SHA) + +add_library( ll::versioninfo INTERFACE IMPORTED ) +target_compile_definitions( ll::versioninfo INTERFACE + $<$:LLBUILD_CONFIG="Debug"> + $<$:LLBUILD_CONFIG="RelWithDebInfo"> + $<$:LLBUILD_CONFIG="Release"> + LL_VIEWER_CHANNEL="${VIEWER_CHANNEL}" + LL_VIEWER_CHANNEL_CODENAME="${VIEWER_CHANNEL_CODENAME_INTERNAL}" + LL_VIEWER_CHANNEL_AND_VERSION="${VIEWER_VERSION_AND_CHANNEL}" + LL_VIEWER_VERSION_MAJOR=${VIEWER_VERSION_MAJOR} + LL_VIEWER_VERSION_MINOR=${VIEWER_VERSION_MINOR} + LL_VIEWER_VERSION_PATCH=${VIEWER_VERSION_PATCH} + LL_VIEWER_VERSION_BUILD=${VIEWER_VERSION_REVISION} + LL_VIEWER_COMMIT_SHA="${VIEWER_COMMIT_LONG_SHA}" + LL_VIEWER_COMMIT_SHORT_SHA="${VIEWER_COMMIT_SHORT_SHA}" + ) diff --git a/indra/cmake/CEFPlugin.cmake b/indra/cmake/CEFPlugin.cmake index 9b77becf29f..7b75db06064 100644 --- a/indra/cmake/CEFPlugin.cmake +++ b/indra/cmake/CEFPlugin.cmake @@ -10,9 +10,9 @@ target_include_directories( ll::cef SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/inclu if (WINDOWS) target_link_libraries( ll::cef INTERFACE - libcef.lib - libcef_dll_wrapper.lib - dullahan.lib + ${ARCH_PREBUILT_DIRS_RELEASE}/libcef.lib + ${ARCH_PREBUILT_DIRS_RELEASE}/libcef_dll_wrapper.lib + ${ARCH_PREBUILT_DIRS_RELEASE}/dullahan.lib ) elseif (DARWIN) FIND_LIBRARY(APPKIT_LIBRARY AppKit) @@ -20,17 +20,16 @@ elseif (DARWIN) message(FATAL_ERROR "AppKit not found") endif() - set(CEF_LIBRARY "'${ARCH_PREBUILT_DIRS_RELEASE}/Chromium\ Embedded\ Framework.framework'") - if (NOT CEF_LIBRARY) - message(FATAL_ERROR "CEF not found") - endif() - target_link_libraries( ll::cef INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libcef_dll_wrapper.a ${ARCH_PREBUILT_DIRS_RELEASE}/libdullahan.a ${APPKIT_LIBRARY} - "-F ${CEF_LIBRARY}" ) elseif (LINUX) + target_link_libraries( ll::cef INTERFACE + dullahan + cef + cef_dll_wrapper.a + ) endif (WINDOWS) diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt index 907f08833f7..44a4f6d1a91 100644 --- a/indra/cmake/CMakeLists.txt +++ b/indra/cmake/CMakeLists.txt @@ -10,16 +10,14 @@ set(cmake_SOURCE_FILES APR.cmake Audio.cmake Boost.cmake - bugsplat.cmake + BuildPackagesInfo.cmake BuildVersion.cmake CEFPlugin.cmake - CEFPlugin.cmake CMakeCopyIfDifferent.cmake - ConfigurePkgConfig.cmake CURL.cmake Copy3rdPartyLibs.cmake - DBusGlib.cmake DeploySharedLibs.cmake + DiscordSDK.cmake DragDrop.cmake EXPAT.cmake FindAutobuild.cmake @@ -27,10 +25,9 @@ set(cmake_SOURCE_FILES FreeType.cmake GLEXT.cmake GLH.cmake - GoogleMock.cmake - Havok.cmake + GLM.cmake Hunspell.cmake - JsonCpp.cmake + LibXML2.cmake LLAddBuildTest.cmake LLAppearance.cmake LLAudio.cmake @@ -43,8 +40,8 @@ set(cmake_SOURCE_FILES LLTestCommand.cmake LLWindow.cmake Linking.cmake - Meshoptimizer.cmake NDOF.cmake + NVAPI.cmake OPENAL.cmake OpenGL.cmake OpenJPEG.cmake @@ -53,21 +50,20 @@ set(cmake_SOURCE_FILES PluginAPI.cmake Prebuilt.cmake PulseAudio.cmake - Python.cmake + SDBusCPP.cmake + SDL2.cmake + Sentry.cmake TemplateCheck.cmake TinyEXR.cmake TinyGLTF.cmake + Tracy.cmake Tut.cmake UI.cmake UnixInstall.cmake URIPARSER.cmake - Variables.cmake - ViewerMiscLibs.cmake - VisualLeakDetector.cmake - LibVLCPlugin.cmake + WebP.cmake WebRTC.cmake - XmlRpcEpi.cmake - xxHash.cmake + XXHash.cmake ZLIBNG.cmake ) diff --git a/indra/cmake/CURL.cmake b/indra/cmake/CURL.cmake index b9f685f37bf..bd410204dff 100644 --- a/indra/cmake/CURL.cmake +++ b/indra/cmake/CURL.cmake @@ -1,5 +1,6 @@ # -*- cmake -*- include(Prebuilt) +include(Linking) include_guard() add_library( ll::libcurl INTERFACE IMPORTED ) @@ -7,8 +8,31 @@ add_library( ll::libcurl INTERFACE IMPORTED ) use_system_binary(libcurl) use_prebuilt_binary(curl) if (WINDOWS) - target_link_libraries(ll::libcurl INTERFACE libcurl.lib) -else (WINDOWS) - target_link_libraries(ll::libcurl INTERFACE libcurl.a) -endif (WINDOWS) + target_link_libraries(ll::libcurl INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libcurld.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libcurl.lib + ll::openssl + ll::nghttp2 + ll::zlib-ng + Normaliz.lib + Iphlpapi.lib + ) + target_compile_definitions( ll::libcurl INTERFACE CURL_STATICLIB=1) +elseif(DARWIN) + target_link_libraries(ll::libcurl INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libcurld.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libcurl.a + ll::openssl + ll::nghttp2 + ll::zlib-ng + resolv + ) +else () + target_link_libraries(ll::libcurl INTERFACE + ${ARCH_PREBUILT_DIRS}/libcurl.a + ll::openssl + ll::nghttp2 + ll::zlib-ng + ) +endif () target_include_directories( ll::libcurl SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/ConfigurePkgConfig.cmake b/indra/cmake/ConfigurePkgConfig.cmake deleted file mode 100644 index 9e798d663b5..00000000000 --- a/indra/cmake/ConfigurePkgConfig.cmake +++ /dev/null @@ -1,74 +0,0 @@ -# -*- cmake -*- - -SET(DEBUG_PKG_CONFIG "YES") - -# Don't change this if manually set by user. -IF("$ENV{PKG_CONFIG_LIBDIR}" STREQUAL "") - - # Guess at architecture-specific system library paths. - if (ADDRESS_SIZE EQUAL 32) - SET(PKG_CONFIG_NO_MULTI_GUESS /usr/lib32 /usr/lib) - SET(PKG_CONFIG_NO_MULTI_LOCAL_GUESS /usr/local/lib32 /usr/local/lib) - SET(PKG_CONFIG_MULTI_GUESS /usr/lib/i386-linux-gnu) - SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usr/local/lib/i386-linux-gnu) - else (ADDRESS_SIZE EQUAL 32) - SET(PKG_CONFIG_NO_MULTI_GUESS /usr/lib64 /usr/lib) - SET(PKG_CONFIG_NO_MULTI_LOCAL_GUESS /usr/local/lib64 /usr/local/lib) - SET(PKG_CONFIG_MULTI_GUESS /usr/local/lib/x86_64-linux-gnu) - SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usr/local/lib/x86_64-linux-gnu) - endif (ADDRESS_SIZE EQUAL 32) - - # Use DPKG architecture, if available. - IF (${DPKG_ARCH}) - SET(PKG_CONFIG_MULTI_GUESS /usr/lib/${DPKG_ARCH}) - SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usrlocal/lib/${DPKG_ARCH}) - ENDIF (${DPKG_ARCH}) - - # Explicitly include anything listed in PKG_CONFIG_PATH - string(REPLACE ":" ";" PKG_CONFIG_PATH_LIST "$ENV{PKG_CONFIG_PATH}") - FOREACH(PKG_CONFIG_DIR ${PKG_CONFIG_PATH_LIST}) - SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_DIR}/pkgconfig") - ENDFOREACH(PKG_CONFIG_DIR) - - # Look for valid pkgconfig directories. - FIND_PATH(PKG_CONFIG_ENV pkgconfig ENV LD_LIBRARY_PATH) - FIND_PATH(PKG_CONFIG_MULTI pkgconfig HINT ${PKG_CONFIG_MULTI_GUESS}) - FIND_PATH(PKG_CONFIG_MULTI_LOCAL pkgconfig HINT ${PKG_CONFIG_MULTI_LOCAL_GUESS}) - FIND_PATH(PKG_CONFIG_NO_MULTI pkgconfig HINT ${PKG_CONFIG_NO_MULTI_GUESS}) - FIND_PATH(PKG_CONFIG_NO_MULTI_LOCAL pkgconfig HINT ${PKG_CONFIG_NO_MULTI_LOCAL_GUESS}) - - # Add anything we found to our list. - IF(NOT PKG_CONFIG_ENV STREQUAL PKG_CONFIG_ENV-NOTFOUND) - SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_ENV}/pkgconfig") - ENDIF(NOT PKG_CONFIG_ENV STREQUAL PKG_CONFIG_ENV-NOTFOUND) - - IF(NOT PKG_CONFIG_MULTI STREQUAL PKG_CONFIG_MULTI-NOTFOUND) - SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_MULTI}/pkgconfig") - ENDIF(NOT PKG_CONFIG_MULTI STREQUAL PKG_CONFIG_MULTI-NOTFOUND) - - IF(NOT PKG_CONFIG_MULTI_LOCAL STREQUAL PKG_CONFIG_MULTI_LOCAL-NOTFOUND) - SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_MULTI_LOCAL}/pkgconfig") - ENDIF(NOT PKG_CONFIG_MULTI_LOCAL STREQUAL PKG_CONFIG_MULTI_LOCAL-NOTFOUND) - - IF(NOT PKG_CONFIG_NO_MULTI STREQUAL PKG_CONFIG_NO_MULTI-NOTFOUND) - SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_NO_MULTI}/pkgconfig") - ENDIF(NOT PKG_CONFIG_NO_MULTI STREQUAL PKG_CONFIG_NO_MULTI-NOTFOUND) - - IF(NOT PKG_CONFIG_NO_MULTI_LOCAL STREQUAL PKG_CONFIG_NO_MULTI_LOCAL-NOTFOUND) - SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_NO_MULTI_LOCAL}/pkgconfig") - ENDIF(NOT PKG_CONFIG_NO_MULTI_LOCAL STREQUAL PKG_CONFIG_NO_MULTI_LOCAL-NOTFOUND) - - # Also add some non-architecture specific package locations. - SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:/usr/share/pkgconfig:/usr/local/share/pkgconfig") - - # Remove first unwanted ':' - string(SUBSTRING ${VALID_PKG_LIBDIRS} 1 -1 VALID_PKG_LIBDIRS) - - # Set PKG_CONFIG_LIBDIR environment. - SET(ENV{PKG_CONFIG_LIBDIR} ${VALID_PKG_LIBDIRS}) -ENDIF("$ENV{PKG_CONFIG_LIBDIR}" STREQUAL "") - -IF(DEBUG_PKG_CONFIG) - MESSAGE(STATUS "Using PKG_CONFIG_LIBDIR=$ENV{PKG_CONFIG_LIBDIR}") -ENDIF(DEBUG_PKG_CONFIG) - diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index 27b20ee3b1c..1a35a2c07b1 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -5,9 +5,12 @@ # VisualStudio. include(CMakeCopyIfDifferent) -include(Linking) -include(OPENAL) +include(Prebuilt) include(FMODSTUDIO) +include(OPENAL) +include(DiscordSDK) +include(Sentry) +include(InstallRequiredSystemLibraries) # When we copy our dependent libraries, we almost always want to copy them to # both the Release and the RelWithDebInfo staging directories. This has @@ -33,8 +36,8 @@ if(WINDOWS) # ND, it seems there is no such thing defined. At least when building a viewer # Does this maybe matter on some LL buildserver? Otherwise this and the snippet using slvoice_src_dir # can all go - if( ARCH_PREBUILT_BIN_RELEASE ) - set(slvoice_src_dir "${ARCH_PREBUILT_BIN_RELEASE}") + if( ARCH_PREBUILT_BIN_DIRS_RELEASE ) + set(slvoice_src_dir "${ARCH_PREBUILT_BIN_DIRS_RELEASE}") endif() set(slvoice_files SLVoice.exe ) if (ADDRESS_SIZE EQUAL 64) @@ -52,49 +55,38 @@ if(WINDOWS) #******************************* # Misc shared libs + set(addrsfx "-x${ADDRESS_SIZE}") + + set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}") + set(debug_files + openjp2.dll + ) + set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") set(release_files openjp2.dll - libapr-1.dll - libaprutil-1.dll - nghttp2.dll - libhunspell.dll - uriparser.dll ) - # OpenSSL - if(ADDRESS_SIZE EQUAL 64) - set(release_files ${release_files} libcrypto-1_1-x64.dll) - set(release_files ${release_files} libssl-1_1-x64.dll) - else(ADDRESS_SIZE EQUAL 64) - set(release_files ${release_files} libcrypto-1_1.dll) - set(release_files ${release_files} libssl-1_1.dll) - endif(ADDRESS_SIZE EQUAL 64) - # Filenames are different for 32/64 bit BugSplat file and we don't # have any control over them so need to branch. - if (USE_BUGSPLAT) - if(ADDRESS_SIZE EQUAL 32) - set(release_files ${release_files} BugSplat.dll) - set(release_files ${release_files} BugSplatRc.dll) - set(release_files ${release_files} BsSndRpt.exe) - else(ADDRESS_SIZE EQUAL 32) - set(release_files ${release_files} BugSplat64.dll) - set(release_files ${release_files} BugSplatRc64.dll) - set(release_files ${release_files} BsSndRpt64.exe) - endif(ADDRESS_SIZE EQUAL 32) - endif (USE_BUGSPLAT) + if (TARGET al::sentry) + list(APPEND release_files sentry.dll) + endif () if (TARGET ll::fmodstudio) - # fmodL is included for logging, only one should be picked by manifest - set(release_files ${release_files} fmodL.dll) - set(release_files ${release_files} fmod.dll) + list(APPEND debug_files fmodL.dll) + list(APPEND release_files fmod.dll) endif () if (TARGET ll::openal) - list(APPEND release_files openal32.dll alut.dll) + list(APPEND debug_files OpenAL32.dll alut.dll) + list(APPEND release_files OpenAL32.dll alut.dll) endif () + if(TARGET al::discord-gamesdk) + list(APPEND release_files discord_game_sdk.dll) + endif() + #******************************* # Copy MS C runtime dlls, required for packaging. if (MSVC80) @@ -113,40 +105,33 @@ if(WINDOWS) MESSAGE(WARNING "New MSVC_VERSION ${MSVC_VERSION} of MSVC: adapt Copy3rdPartyLibs.cmake") endif (MSVC80) - if(ADDRESS_SIZE EQUAL 32) - # this folder contains the 32bit DLLs.. (yes really!) - set(registry_find_path "[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64") - else(ADDRESS_SIZE EQUAL 32) - # this folder contains the 64bit DLLs.. (yes really!) - set(registry_find_path "[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32") - endif(ADDRESS_SIZE EQUAL 32) - - # Having a string containing the system registry path is a start, but to - # get CMake to actually read the registry, we must engage some other - # operation. - get_filename_component(registry_path "${registry_find_path}" ABSOLUTE) - # These are candidate DLL names. Empirically, VS versions before 2015 have # msvcp*.dll and msvcr*.dll. VS 2017 has msvcp*.dll and vcruntime*.dll. # Check each of them. foreach(release_msvc_file + concrt${MSVC_VER}.dll msvcp${MSVC_VER}.dll - msvcr${MSVC_VER}.dll + msvcp${MSVC_VER}_1.dll + msvcp${MSVC_VER}_2.dll + msvcp${MSVC_VER}_atomic_wait.dll + msvcp${MSVC_VER}_codecvt_ids.dll + vccorlib${MSVC_VER}.dll vcruntime${MSVC_VER}.dll vcruntime${MSVC_VER}_1.dll + vcruntime${MSVC_VER}_threads.dll ) - if(EXISTS "${registry_path}/${release_msvc_file}") - to_staging_dirs( - ${registry_path} - third_party_targets - ${release_msvc_file}) - else() - # This isn't a WARNING because, as noted above, every VS version - # we've observed has only a subset of the specified DLL names. - MESSAGE(STATUS "Redist lib ${release_msvc_file} not found") - endif() + if(EXISTS "${MSVC_CRT_DIR}/${release_msvc_file}") # MSVC_CRT_DIR set in InstallRequiredSystemLibraries.cmake + to_staging_dirs( + ${MSVC_CRT_DIR} + third_party_targets + ${release_msvc_file}) + else() + # This isn't a WARNING because, as noted above, every VS version + # we've observed has only a subset of the specified DLL names. + MESSAGE(STATUS "Redist lib ${release_msvc_file} not found") + endif() endforeach() - MESSAGE(STATUS "Will copy redist files for MSVC ${MSVC_VER}:") + MESSAGE(STATUS "Will copy redist files for MSVC ${MSVC_VER} from ${MSVC_CRT_DIR}:") foreach(target ${third_party_targets}) MESSAGE(STATUS "${target}") endforeach() @@ -163,32 +148,19 @@ elseif(DARWIN) ) set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") set(release_files - libapr-1.0.dylib - libapr-1.dylib - libaprutil-1.0.dylib - libaprutil-1.dylib - ${EXPAT_COPY} - libhunspell-1.3.0.dylib libndofdev.dylib - libnghttp2.dylib - libnghttp2.14.dylib - liburiparser.dylib - liburiparser.1.dylib - liburiparser.1.0.27.dylib ) if (TARGET ll::fmodstudio) - set(debug_files ${debug_files} libfmodL.dylib) - set(release_files ${release_files} libfmod.dylib) + list(APPEND debug_files libfmodL.dylib) + list(APPEND release_files libfmod.dylib) endif () -elseif(LINUX) - # linux is weird, multiple side by side configurations aren't supported - # and we don't seem to have any debug shared libs built yet anyways... - set(SHARED_LIB_STAGING_DIR_DEBUG "${SHARED_LIB_STAGING_DIR}") - set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO "${SHARED_LIB_STAGING_DIR}") - set(SHARED_LIB_STAGING_DIR_RELEASE "${SHARED_LIB_STAGING_DIR}") + if(TARGET al::discord-gamesdk) + list(APPEND release_files discord_game_sdk.dylib) + endif() +elseif(LINUX) set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}") set(vivox_libs libsndfile.so.1 @@ -211,29 +183,15 @@ elseif(LINUX) ${EXPAT_COPY} ) - if( USE_AUTOBUILD_3P ) - list( APPEND release_files - libapr-1.so.0 - libaprutil-1.so.0 - libatk-1.0.so - libfreetype.so.6.6.2 - libfreetype.so.6 - libhunspell-1.3.so.0.0.0 - libopenjp2.so - libuuid.so.16 - libuuid.so.16.0.22 - libfontconfig.so.1.8.0 - libfontconfig.so.1 - libgmodule-2.0.so - libgobject-2.0.so - ) - endif() - if (TARGET ll::fmodstudio) - set(debug_files ${debug_files} "libfmodL.so") - set(release_files ${release_files} "libfmod.so") + list(APPEND debug_files libfmodL.so) + list(APPEND release_files libfmod.so) endif () + if(TARGET al::discord-gamesdk) + list(APPEND release_files libdiscord_game_sdk.so) + endif() + else(WINDOWS) message(STATUS "WARNING: unrecognized platform for staging 3rd party libs, skipping...") set(vivox_lib_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-linux") @@ -266,7 +224,7 @@ endif(WINDOWS) if( slvoice_src_dir ) copy_if_different( ${slvoice_src_dir} - "${SHARED_LIB_STAGING_DIR_RELEASE}" + "${SHARED_LIB_STAGING_DIR}" out_targets ${slvoice_files} ) @@ -289,12 +247,3 @@ add_custom_target( stage_third_party_libs ALL DEPENDS ${third_party_targets} ) - -if(DARWIN) - # Support our "@executable_path/../Resources" load path for executables - # that end up in any of the above SHARED_LIB_STAGING_DIR_MUMBLE - # directories. - add_custom_command( TARGET stage_third_party_libs POST_BUILD - COMMAND ${CMAKE_COMMAND} -E create_symlink ${SHARED_LIB_STAGING_DIR} ${CMAKE_BINARY_DIR}/sharedlibs/Resources - ) -endif() diff --git a/indra/cmake/CubemapToEquirectangularJS.cmake b/indra/cmake/CubemapToEquirectangularJS.cmake index bfe29260051..f8d8c7f87a8 100644 --- a/indra/cmake/CubemapToEquirectangularJS.cmake +++ b/indra/cmake/CubemapToEquirectangularJS.cmake @@ -2,4 +2,4 @@ use_prebuilt_binary(cubemaptoequirectangular) # Main JS file -configure_file("${AUTOBUILD_INSTALL_DIR}/js/CubemapToEquirectangular.js" "${CMAKE_SOURCE_DIR}/newview/skins/default/html/common/equirectangular/js/CubemapToEquirectangular.js" COPYONLY) +configure_file("${LIBS_PREBUILT_DIR}/js/CubemapToEquirectangular.js" "${CMAKE_SOURCE_DIR}/newview/skins/default/html/common/equirectangular/js/CubemapToEquirectangular.js" COPYONLY) diff --git a/indra/cmake/DBusGlib.cmake b/indra/cmake/DBusGlib.cmake deleted file mode 100644 index c9b727ca9df..00000000000 --- a/indra/cmake/DBusGlib.cmake +++ /dev/null @@ -1,14 +0,0 @@ -# -*- cmake -*- -include(Prebuilt) - -add_library( ll::dbus INTERFACE IMPORTED) - -if( LINUX ) - # Only define this when not using the prebuild 3ps, lls prebuild is broken - if( NOT USE_AUTOBUILD_3P ) - target_compile_definitions( ll::dbus INTERFACE LL_DBUS_ENABLED ) - endif() - use_system_binary(dbus) - - use_prebuilt_binary(dbus_glib) -endif() diff --git a/indra/cmake/DiscordSDK.cmake b/indra/cmake/DiscordSDK.cmake new file mode 100644 index 00000000000..d620582f350 --- /dev/null +++ b/indra/cmake/DiscordSDK.cmake @@ -0,0 +1,44 @@ +# -*- cmake -*- +include(Prebuilt) + +include_guard() + +#Discord Integration +if (DEFINED ENV{USE_DISCORD}) + set(USE_DISCORD $ENV{USE_DISCORD} CACHE BOOL "Enable Discord client integration" FORCE) +endif() + +if(DEFINED ENV{DISCORD_CLIENTID}) + set(DISCORD_CLIENTID $ENV{DISCORD_CLIENTID} CACHE STRING "Discord Client ID" FORCE) +else() + set(DISCORD_CLIENTID "564763931009220608" CACHE STRING "Discord Client ID") +endif() + +if (INSTALL_PROPRIETARY AND NOT DISCORD_CLIENTID STREQUAL "") + set(USE_DISCORD ON CACHE BOOL "Enable Discord client integration") +endif () + +if (USE_DISCORD) + add_library( al::discord-gamesdk INTERFACE IMPORTED ) + + use_prebuilt_binary(discord-gamesdk) + if (WINDOWS) + target_link_libraries( al::discord-gamesdk INTERFACE + ${ARCH_PREBUILT_DIRS_RELEASE}/discordgamesdk.lib + ${ARCH_PREBUILT_DIRS_RELEASE}/discord_game_sdk.dll.lib) + elseif (DARWIN) + target_link_libraries( al::discord-gamesdk INTERFACE + ${ARCH_PREBUILT_DIRS_RELEASE}/libdiscordgamesdk.a + ${ARCH_PREBUILT_DIRS_RELEASE}/discord_game_sdk.dylib) + elseif (LINUX) + target_link_libraries( al::discord-gamesdk INTERFACE + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libdiscordgamesdk.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libdiscord_game_sdk.so ) + endif (WINDOWS) + target_include_directories( al::discord-gamesdk SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/discord/) + + if(DISCORD_CLIENTID STREQUAL "") + message(FATAL_ERROR "You must set a ClientID with -DDISCORD_CLIENTID= to enable Discord integration") + endif() + target_compile_definitions( al::discord-gamesdk INTERFACE AL_DISCORD=1 DISCORD_CLIENTID=${DISCORD_CLIENTID}) +endif (USE_DISCORD) diff --git a/indra/cmake/EXPAT.cmake b/indra/cmake/EXPAT.cmake index 327fe8aa72b..1a0b8789dc4 100644 --- a/indra/cmake/EXPAT.cmake +++ b/indra/cmake/EXPAT.cmake @@ -7,14 +7,13 @@ add_library( ll::expat INTERFACE IMPORTED ) use_system_binary(expat) use_prebuilt_binary(expat) if (WINDOWS) - target_link_libraries( ll::expat INTERFACE libexpatMT ) - set(EXPAT_COPY libexpatMT.dll) -else (WINDOWS) - target_link_libraries( ll::expat INTERFACE expat ) - if (DARWIN) - set(EXPAT_COPY libexpat.1.dylib libexpat.dylib) - else () - set(EXPAT_COPY libexpat.so.1 libexpat.so) - endif () -endif (WINDOWS) + target_compile_definitions( ll::expat INTERFACE XML_STATIC=1) + target_link_libraries( ll::expat INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libexpatd.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libexpat.lib) +else () + target_link_libraries( ll::expat INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libexpat.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libexpat.a) +endif () target_include_directories( ll::expat SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include ) diff --git a/indra/cmake/FMODSTUDIO.cmake b/indra/cmake/FMODSTUDIO.cmake index 9a1cdff6cb4..c75c4310b29 100644 --- a/indra/cmake/FMODSTUDIO.cmake +++ b/indra/cmake/FMODSTUDIO.cmake @@ -32,7 +32,9 @@ if (USE_FMODSTUDIO) include(Prebuilt) use_prebuilt_binary(fmodstudio) if (WINDOWS) - target_link_libraries( ll::fmodstudio INTERFACE fmod_vc) + target_link_libraries( ll::fmodstudio INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/fmodL_vc.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/fmod_vc.lib) elseif (DARWIN) #despite files being called libfmod.dylib, we are searching for fmod target_link_libraries( ll::fmodstudio INTERFACE fmod) diff --git a/indra/cmake/FindSCP.cmake b/indra/cmake/FindSCP.cmake deleted file mode 100644 index ea02102908e..00000000000 --- a/indra/cmake/FindSCP.cmake +++ /dev/null @@ -1,40 +0,0 @@ -# -*- cmake -*- -# -# Find the OpenSSH scp ("secure copy") or Putty pscp command. -# -# Input variables: -# SCP_FIND_REQUIRED - set this if configuration should fail without scp -# -# Output variables: -# -# SCP_FOUND - set if scp was found -# SCP_EXECUTABLE - path to scp or pscp executable -# SCP_BATCH_FLAG - how to put scp/pscp into batch mode - -SET(SCP_EXECUTABLE) -IF (WINDOWS) - FIND_PROGRAM(SCP_EXECUTABLE NAMES pscp pscp.exe) -ELSE (WINDOWS) - FIND_PROGRAM(SCP_EXECUTABLE NAMES scp scp.exe) -ENDIF (WINDOWS) - -IF (SCP_EXECUTABLE) - SET(SCP_FOUND ON) -ELSE (SCP_EXECUTABLE) - SET(SCP_FOUND OFF) -ENDIF (SCP_EXECUTABLE) - -IF (SCP_FOUND) - GET_FILENAME_COMPONENT(_scp_name ${SCP_EXECUTABLE} NAME_WE) - IF (_scp_name STREQUAL scp) - SET(SCP_BATCH_FLAG -B) - ELSE (_scp_name STREQUAL scp) - SET(SCP_BATCH_FLAG -batch) - ENDIF (_scp_name STREQUAL scp) -ELSE (SCP_FOUND) - IF (SCP_FIND_REQUIRED) - MESSAGE(FATAL_ERROR "Could not find scp or pscp executable") - ENDIF (SCP_FIND_REQUIRED) -ENDIF (SCP_FOUND) - -MARK_AS_ADVANCED(SCP_EXECUTABLE SCP_FOUND SCP_BATCH_FLAG) diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake index 77140af6413..e6b9561cdf8 100644 --- a/indra/cmake/FreeType.cmake +++ b/indra/cmake/FreeType.cmake @@ -2,10 +2,42 @@ include(Prebuilt) include_guard() + +option(USE_SYSTEM_FREETYPE "Enable usage of the AVX2 instruction set" OFF) + add_library( ll::freetype INTERFACE IMPORTED ) -use_system_binary(freetype) -use_prebuilt_binary(freetype) -target_include_directories( ll::freetype SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/freetype2/) -target_link_libraries( ll::freetype INTERFACE freetype ) +if(NOT USE_SYSTEM_FREETYPE) + use_system_binary(freetype) + use_prebuilt_binary(freetype) + target_include_directories( ll::freetype SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/freetype2/) + if (WINDOWS) + target_link_libraries( ll::freetype INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/freetyped.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/freetype.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/harfbuzz.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/harfbuzz.lib) + elseif (LINUX) + target_link_libraries( ll::freetype INTERFACE + ${ARCH_PREBUILT_DIRS}/libfreetype.a + ${ARCH_PREBUILT_DIRS}/libharfbuzz.a) + else() + target_link_libraries( ll::freetype INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libfreetyped.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libfreetype.a + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libharfbuzz.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libharfbuzz.a) + endif() +endif() + +if(LINUX) + include(FindPkgConfig) + + if (USE_SYSTEM_FREETYPE) + pkg_check_modules(freetype2 REQUIRED IMPORTED_TARGET freetype2) + target_link_libraries( ll::freetype INTERFACE PkgConfig::freetype2) + endif() + pkg_check_modules(fontconfig REQUIRED IMPORTED_TARGET fontconfig) + target_link_libraries( ll::freetype INTERFACE PkgConfig::fontconfig) +endif() diff --git a/indra/cmake/GLEXT.cmake b/indra/cmake/GLEXT.cmake index a780966f0c2..14b0704f211 100644 --- a/indra/cmake/GLEXT.cmake +++ b/indra/cmake/GLEXT.cmake @@ -1,9 +1,12 @@ # -*- cmake -*- include(Prebuilt) include(GLH) +include(GLM) +include(SDL2) add_library( ll::glext INTERFACE IMPORTED ) -use_system_binary(glext) -use_prebuilt_binary(glext) - +if(NOT SDL_FOUND) + use_system_binary(glext) + use_prebuilt_binary(glext) +endif() diff --git a/indra/cmake/GLM.cmake b/indra/cmake/GLM.cmake new file mode 100644 index 00000000000..66ddea30b95 --- /dev/null +++ b/indra/cmake/GLM.cmake @@ -0,0 +1,7 @@ +# -*- cmake -*- +include(Prebuilt) + +add_library( ll::glm INTERFACE IMPORTED ) + +use_system_binary(glm) +use_prebuilt_binary(glm) diff --git a/indra/cmake/GoogleMock.cmake b/indra/cmake/GoogleMock.cmake deleted file mode 100644 index c3d195c37b4..00000000000 --- a/indra/cmake/GoogleMock.cmake +++ /dev/null @@ -1,32 +0,0 @@ -# -*- cmake -*- -include(Prebuilt) -include(Linking) - -include_guard() - -add_library( ll::googlemock INTERFACE IMPORTED ) -if(USE_CONAN) - target_link_libraries( ll::googlemock INTERFACE CONAN_PKG::gtest ) - - #Not very nice, but for the moment we need this for tut.hpp - target_include_directories( ll::googlemock SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include ) - return() -endif() - -use_prebuilt_binary(googlemock) - -target_include_directories( ll::googlemock SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include ) - -if (LINUX) - # VWR-24366: gmock is underlinked, it needs gtest. - target_link_libraries( ll::googlemock INTERFACE gmock gtest) -elseif(WINDOWS) - target_link_libraries( ll::googlemock INTERFACE gmock) - target_include_directories( ll::googlemock SYSTEM INTERFACE - ${LIBS_PREBUILT_DIR}/include - ${LIBS_PREBUILT_DIR}/include/gmock) -elseif(DARWIN) - target_link_libraries( ll::googlemock INTERFACE gmock gtest) -endif(LINUX) - - diff --git a/indra/cmake/Hunspell.cmake b/indra/cmake/Hunspell.cmake index bb037c0237b..6cca9c00e57 100644 --- a/indra/cmake/Hunspell.cmake +++ b/indra/cmake/Hunspell.cmake @@ -1,4 +1,5 @@ # -*- cmake -*- +include(Linking) include(Prebuilt) include_guard() @@ -8,10 +9,20 @@ add_library( ll::hunspell INTERFACE IMPORTED ) use_system_binary(hunspell) use_prebuilt_binary(libhunspell) if (WINDOWS) - target_link_libraries( ll::hunspell INTERFACE libhunspell) + target_compile_definitions( ll::hunspell INTERFACE HUNSPELL_STATIC=1) + target_link_libraries( ll::hunspell INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libhunspell.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libhunspell.lib + ) elseif(DARWIN) - target_link_libraries( ll::hunspell INTERFACE hunspell-1.3) + target_link_libraries( ll::hunspell INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libhunspell-1.7.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libhunspell-1.7.a + ) elseif(LINUX) - target_link_libraries( ll::hunspell INTERFACE hunspell-1.3) + target_link_libraries( ll::hunspell INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libhunspell-1.7.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libhunspell-1.7.a + ) endif() target_include_directories( ll::hunspell SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/hunspell) diff --git a/indra/cmake/JPEG.cmake b/indra/cmake/JPEG.cmake index 252d7852d4e..ade5a070ccf 100644 --- a/indra/cmake/JPEG.cmake +++ b/indra/cmake/JPEG.cmake @@ -7,12 +7,14 @@ include_guard() add_library( ll::libjpeg INTERFACE IMPORTED ) use_system_binary(libjpeg) -use_prebuilt_binary(jpeglib) +use_prebuilt_binary(libjpeg-turbo) if (LINUX) - target_link_libraries( ll::libjpeg INTERFACE jpeg) + target_link_libraries( ll::libjpeg INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libjpeg.a) elseif (DARWIN) - target_link_libraries( ll::libjpeg INTERFACE jpeg) + target_link_libraries( ll::libjpeg INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libjpeg.a) elseif (WINDOWS) - target_link_libraries( ll::libjpeg INTERFACE jpeglib) + target_link_libraries( ll::libjpeg INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/jpeg.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/jpeg.lib) endif (LINUX) target_include_directories( ll::libjpeg SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/JPEGEncoderBasic.cmake b/indra/cmake/JPEGEncoderBasic.cmake index 0d2a3231bbb..feea38959b7 100644 --- a/indra/cmake/JPEGEncoderBasic.cmake +++ b/indra/cmake/JPEGEncoderBasic.cmake @@ -2,4 +2,4 @@ use_prebuilt_binary(jpegencoderbasic) # Main JS file -configure_file("${AUTOBUILD_INSTALL_DIR}/js/jpeg_encoder_basic.js" "${CMAKE_SOURCE_DIR}/newview/skins/default/html/common/equirectangular/js/jpeg_encoder_basic.js" COPYONLY) +configure_file("${LIBS_PREBUILT_DIR}/js/jpeg_encoder_basic.js" "${CMAKE_SOURCE_DIR}/newview/skins/default/html/common/equirectangular/js/jpeg_encoder_basic.js" COPYONLY) diff --git a/indra/cmake/JsonCpp.cmake b/indra/cmake/JsonCpp.cmake deleted file mode 100644 index 17f8e47a978..00000000000 --- a/indra/cmake/JsonCpp.cmake +++ /dev/null @@ -1,17 +0,0 @@ -# -*- cmake -*- - -include(Prebuilt) -include_guard() -add_library( ll::jsoncpp INTERFACE IMPORTED ) - -use_system_binary(jsoncpp) - -use_prebuilt_binary(jsoncpp) -if (WINDOWS) - target_link_libraries( ll::jsoncpp INTERFACE json_libmd.lib ) -elseif (DARWIN) - target_link_libraries( ll::jsoncpp INTERFACE libjson_darwin_libmt.a ) -elseif (LINUX) - target_link_libraries( ll::jsoncpp INTERFACE libjson_linux-gcc-4.1.3_libmt.a ) -endif (WINDOWS) -target_include_directories( ll::jsoncpp SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake index 2172b56da2f..956a504606c 100644 --- a/indra/cmake/LLAddBuildTest.cmake +++ b/indra/cmake/LLAddBuildTest.cmake @@ -1,8 +1,7 @@ # -*- cmake -*- include(00-Common) include(LLTestCommand) -include(GoogleMock) -include(bugsplat) +include(Sentry) include(Tut) #***************************************************************************** @@ -21,7 +20,6 @@ MACRO(LL_ADD_PROJECT_UNIT_TESTS project sources) # This here looks weird, but is needed. It will inject GoogleMock into projects that forgot to include `this` (LLAddBuildTest.cmake) # But through some other means have access to this macro - include(GoogleMock) if(LL_TEST_VERBOSE) message("LL_ADD_PROJECT_UNIT_TESTS UNITTEST_PROJECT_${project} sources: ${sources}") @@ -41,7 +39,6 @@ MACRO(LL_ADD_PROJECT_UNIT_TESTS project sources) set(alltest_LIBRARIES llcommon - ll::googlemock ) if(NOT "${project}" STREQUAL "llmath") # add llmath as a dep unless the tested module *is* llmath! @@ -98,6 +95,13 @@ MACRO(LL_ADD_PROJECT_UNIT_TESTS project sources) target_include_directories (PROJECT_${project}_TEST_${name} PRIVATE ${LIBS_OPEN_DIR}/test ) set_target_properties(PROJECT_${project}_TEST_${name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${EXE_STAGING_DIR}") + if (DARWIN) + set_target_properties(PROJECT_${project}_TEST_${name} + PROPERTIES + BUILD_WITH_INSTALL_RPATH 1 + INSTALL_RPATH "@executable_path/Resources" + ) + endif(DARWIN) # # Per-codefile additional / external project dep and lib dep property extraction @@ -114,7 +118,7 @@ MACRO(LL_ADD_PROJECT_UNIT_TESTS project sources) endif() # Add to project - target_link_libraries(PROJECT_${project}_TEST_${name} ${alltest_LIBRARIES} ${${name}_test_additional_PROJECTS} ${${name}_test_additional_LIBRARIES} ) + target_link_libraries(PROJECT_${project}_TEST_${name} PUBLIC ${alltest_LIBRARIES} ${${name}_test_additional_PROJECTS} ${${name}_test_additional_LIBRARIES} ) add_dependencies( PROJECT_${project}_TEST_${name} ${alltest_DEP_TARGETS}) # Compile-time Definitions GET_OPT_SOURCE_FILE_PROPERTY(${name}_test_additional_CFLAGS ${source} LL_TEST_ADDITIONAL_CFLAGS) @@ -204,7 +208,6 @@ FUNCTION(LL_ADD_INTEGRATION_TEST set(libraries ${library_dependencies} - ll::googlemock ) # Add test executable build target @@ -229,18 +232,20 @@ FUNCTION(LL_ADD_INTEGRATION_TEST endif () if (DARWIN) - # test binaries always need to be signed for local development - set_target_properties(INTEGRATION_TEST_${testname} - PROPERTIES - XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "-") - endif () + SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} + PROPERTIES + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "-" + BUILD_WITH_INSTALL_RPATH 1 + INSTALL_RPATH "@executable_path/Resources" + ) + endif(DARWIN) # Add link deps to the executable if(TEST_DEBUG) message(STATUS "TARGET_LINK_LIBRARIES(INTEGRATION_TEST_${testname} ${libraries})") endif() - target_link_libraries(INTEGRATION_TEST_${testname} ${libraries}) + target_link_libraries(INTEGRATION_TEST_${testname} PUBLIC ${libraries}) target_include_directories (INTEGRATION_TEST_${testname} PRIVATE ${LIBS_OPEN_DIR}/test ) # Create the test running command diff --git a/indra/cmake/LLAppearanceUtility.cmake b/indra/cmake/LLAppearanceUtility.cmake deleted file mode 100644 index 0eb3c723d5d..00000000000 --- a/indra/cmake/LLAppearanceUtility.cmake +++ /dev/null @@ -1,12 +0,0 @@ -# -*- cmake -*- -include(Prebuilt) -include(Boost) - -# Linux proprietary build only -if (INSTALL_PROPRIETARY) - if(LINUX) - use_prebuilt_binary(llappearance_utility) - set(LLAPPEARANCEUTILITY_SRC_DIR ${LIBS_PREBUILT_DIR}/llappearanceutility/src) - set(LLAPPEARANCEUTILITY_BIN_DIR ${CMAKE_BINARY_DIR}/llappearanceutility) - endif (LINUX) -endif (INSTALL_PROPRIETARY) diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake index 869d5805f26..9a4c56d9932 100644 --- a/indra/cmake/LLCommon.cmake +++ b/indra/cmake/LLCommon.cmake @@ -4,8 +4,7 @@ include(APR) include(Boost) include(EXPAT) include(Tracy) -include(xxHash) +include(XXHash) include(ZLIBNG) -include(JsonCpp) include(XmlRpcEpi) diff --git a/indra/cmake/LLKDU.cmake b/indra/cmake/LLKDU.cmake index 668b07ffab4..206e453cc26 100644 --- a/indra/cmake/LLKDU.cmake +++ b/indra/cmake/LLKDU.cmake @@ -1,26 +1,33 @@ # -*- cmake -*- - +include(Prebuilt) # USE_KDU can be set when launching cmake as an option using the argument -DUSE_KDU:BOOL=ON # When building using proprietary binaries though (i.e. having access to LL private servers), # we always build with KDU -if (INSTALL_PROPRIETARY) - set(USE_KDU ON CACHE BOOL "Use Kakadu library.") -endif (INSTALL_PROPRIETARY) +#if (INSTALL_PROPRIETARY) +# option(USE_KDU "Use Kakadu library." ON) +#endif (INSTALL_PROPRIETARY) include_guard() add_library( ll::kdu INTERFACE IMPORTED ) if (USE_KDU) - include(Prebuilt) use_prebuilt_binary(kdu) + + # Our KDU package is built with KDU_X86_INTRINSICS in its .vcxproj file. + # Unless that macro is also set for every consumer build, KDU freaks out, + # spamming the viewer log with alignment FUD. + target_compile_definitions( ll::kdu INTERFACE KDU_X86_INTRINSICS=1 KDU_NO_THREADS KDU_NO_AVX KDU_NO_AVX2) + if (WINDOWS) - target_link_libraries( ll::kdu INTERFACE kdu.lib) + target_link_libraries( ll::kdu INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/kdud.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/kdu.lib + ) else (WINDOWS) target_link_libraries( ll::kdu INTERFACE libkdu.a) endif (WINDOWS) target_include_directories( ll::kdu SYSTEM INTERFACE - ${AUTOBUILD_INSTALL_DIR}/include/kdu - ${LIBS_OPEN_DIR}/llkdu + ${LIBS_PREBUILT_DIR}/include/kdu ) endif (USE_KDU) diff --git a/indra/cmake/LLPhysicsExtensions.cmake b/indra/cmake/LLPhysicsExtensions.cmake index 80d243d9f8b..2847c21afaf 100644 --- a/indra/cmake/LLPhysicsExtensions.cmake +++ b/indra/cmake/LLPhysicsExtensions.cmake @@ -1,4 +1,6 @@ # -*- cmake -*- +include(Variables) +include(Linking) include(Prebuilt) # There are three possible solutions to provide the llphysicsextensions: @@ -6,9 +8,9 @@ include(Prebuilt) # - The stub source package, selected by -DHAVOK:BOOL=OFF # - The prebuilt package available to those with sublicenses, selected by -DHAVOK_TPV:BOOL=ON -if (INSTALL_PROPRIETARY) - set(HAVOK ON CACHE BOOL "Use Havok physics library") -endif (INSTALL_PROPRIETARY) +# if (INSTALL_PROPRIETARY AND NOT LINUX) +# set(HAVOK_TPV ON CACHE BOOL "Use Havok physics library") +# endif () include_guard() add_library( llphysicsextensions_impl INTERFACE IMPORTED ) @@ -23,13 +25,34 @@ if (HAVOK) use_prebuilt_binary(llphysicsextensions_source) set(LLPHYSICSEXTENSIONS_SRC_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/src) target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensions) + target_include_directories( llphysicsextensions_impl INTERFACE ${LIBS_PREBUILT_DIR}/include/llphysicsextensions) elseif (HAVOK_TPV) use_prebuilt_binary(llphysicsextensions_tpv) - target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensions_tpv) + if(WINDOWS) + target_link_libraries( llphysicsextensions_impl INTERFACE ${ARCH_PREBUILT_DIRS}/llphysicsextensions_tpv.lib) + else() + target_link_libraries( llphysicsextensions_impl INTERFACE ${ARCH_PREBUILT_DIRS}/libllphysicsextensions_tpv.a) + endif() + target_include_directories( llphysicsextensions_impl INTERFACE ${LIBS_PREBUILT_DIR}/include/llphysicsextensions) else (HAVOK) - use_prebuilt_binary(llphysicsextensions_stub) - set(LLPHYSICSEXTENSIONS_SRC_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/stub) - target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensionsstub) -endif (HAVOK) - -target_include_directories( llphysicsextensions_impl INTERFACE ${LIBS_PREBUILT_DIR}/include/llphysicsextensions) + if (NOT USE_LL_STUBS) + use_prebuilt_binary( ndPhysicsStub ) + if (WINDOWS) + target_link_libraries( llphysicsextensions_impl INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/nd_hacdConvexDecomposition.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/nd_hacdConvexDecomposition.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/hacd.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/hacd.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/nd_Pathing.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/nd_Pathing.lib) + else () + target_link_libraries( llphysicsextensions_impl INTERFACE nd_hacdConvexDecomposition hacd nd_Pathing ) + endif () + target_include_directories( llphysicsextensions_impl INTERFACE ${LIBS_PREBUILT_DIR}/include/) + else() + use_prebuilt_binary(llphysicsextensions_stub) + set(LLPHYSICSEXTENSIONS_SRC_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/stub) + target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensionsstub) + target_include_directories( llphysicsextensions_impl INTERFACE ${LIBS_PREBUILT_DIR}/include/llphysicsextensions) + endif() +endif () diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake index 735f5e80528..4245b3c83c8 100644 --- a/indra/cmake/LLPrimitive.cmake +++ b/indra/cmake/LLPrimitive.cmake @@ -3,12 +3,11 @@ # these should be moved to their own cmake file include(Prebuilt) include(Boost) +include(LibXML2) +include(ZLIBNG) include_guard() -add_library( ll::pcre INTERFACE IMPORTED ) -add_library( ll::minizip-ng INTERFACE IMPORTED ) -add_library( ll::libxml INTERFACE IMPORTED ) add_library( ll::colladadom INTERFACE IMPORTED ) # ND, needs fixup in collada conan pkg @@ -19,34 +18,19 @@ if( USE_CONAN ) endif() use_system_binary( colladadom ) - use_prebuilt_binary(colladadom) -use_prebuilt_binary(minizip-ng) # needed for colladadom -use_prebuilt_binary(pcre) -use_prebuilt_binary(libxml2) - -target_link_libraries( ll::pcre INTERFACE pcrecpp pcre ) - -if (WINDOWS) - target_link_libraries( ll::minizip-ng INTERFACE libminizip ) -else() - target_link_libraries( ll::minizip-ng INTERFACE minizip ) -endif() - -if (WINDOWS) - target_link_libraries( ll::libxml INTERFACE libxml2_a) -else() - target_link_libraries( ll::libxml INTERFACE xml2) -endif() target_include_directories( ll::colladadom SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/collada ${LIBS_PREBUILT_DIR}/include/collada/1.4 ) if (WINDOWS) - target_link_libraries(ll::colladadom INTERFACE libcollada14dom23-s ll::libxml ll::minizip-ng ) + target_link_libraries(ll::colladadom INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libcollada14dom23-sd.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom23-s.lib + ll::boost ll::libxml2 ll::minizip-ng ) elseif (DARWIN) - target_link_libraries(ll::colladadom INTERFACE collada14dom ll::libxml ll::minizip-ng) + target_link_libraries(ll::colladadom INTERFACE collada14dom ll::boost ll::libxml2 ll::minizip-ng) elseif (LINUX) - target_link_libraries(ll::colladadom INTERFACE collada14dom ll::libxml ll::minizip-ng) + target_link_libraries(ll::colladadom INTERFACE ${ARCH_PREBUILT_DIRS}/libcollada14dom.a ll::boost ll::libxml2 ll::minizip-ng) endif() diff --git a/indra/cmake/LLSharedLibs.cmake b/indra/cmake/LLSharedLibs.cmake index 48149129d62..cb1176841d4 100644 --- a/indra/cmake/LLSharedLibs.cmake +++ b/indra/cmake/LLSharedLibs.cmake @@ -18,6 +18,13 @@ macro(ll_deploy_sharedlibs_command target_exe) if(NOT DARWIN) if(WINDOWS) SET_TEST_PATH(SEARCH_DIRS) + if(ASAN) + if(ADDRESS_SIZE EQUAL 32) + LIST(APPEND SEARCH_DIRS "$ENV{VCToolsInstallDir}bin\\Hostx64\\x86") + else(ADDRESS_SIZE EQUAL 32) + LIST(APPEND SEARCH_DIRS "$ENV{VCToolsInstallDir}bin\\Hostx64\\x64") + endif(ADDRESS_SIZE EQUAL 32) + endif(ASAN) LIST(APPEND SEARCH_DIRS "$ENV{SystemRoot}/system32") elseif(LINUX) SET_TEST_PATH(SEARCH_DIRS) diff --git a/indra/cmake/LLTestCommand.cmake b/indra/cmake/LLTestCommand.cmake index f75c23a5de2..9186aed3f01 100644 --- a/indra/cmake/LLTestCommand.cmake +++ b/indra/cmake/LLTestCommand.cmake @@ -1,17 +1,17 @@ -include(Python) + MACRO(LL_TEST_COMMAND OUTVAR LD_LIBRARY_PATH) # nat wonders how Kitware can use the term 'function' for a construct that # cannot return a value. And yet, variables you set inside a FUNCTION are # local. Try a MACRO instead. SET(value - ${PYTHON_EXECUTABLE} + ${Python3_EXECUTABLE} "${CMAKE_SOURCE_DIR}/cmake/run_build_test.py") FOREACH(dir ${LD_LIBRARY_PATH}) LIST(APPEND value "-l${dir}") ENDFOREACH(dir) - # Enough different tests want to be able to find CMake's PYTHON_EXECUTABLE + # Enough different tests want to be able to find CMake's Python3_EXECUTABLE # that we should just pop it into the environment for everybody. - LIST(APPEND value "-DPYTHON=${PYTHON_EXECUTABLE}") + LIST(APPEND value "-DPYTHON=${Python3_EXECUTABLE}") LIST(APPEND value ${ARGN}) SET(${OUTVAR} ${value}) ##IF(LL_TEST_VERBOSE) diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake index 2e1b601b797..b2c1792df1c 100644 --- a/indra/cmake/LLWindow.cmake +++ b/indra/cmake/LLWindow.cmake @@ -3,20 +3,6 @@ include(Variables) include(GLEXT) include(Prebuilt) +include(SDL2) include_guard() -add_library( ll::SDL INTERFACE IMPORTED ) - - -if (LINUX) - #Must come first as use_system_binary can exit this file early - target_compile_definitions( ll::SDL INTERFACE LL_SDL=1) - - use_system_binary(SDL) - use_prebuilt_binary(SDL) - - target_include_directories( ll::SDL SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) - target_link_libraries( ll::SDL INTERFACE SDL directfb fusion direct X11) -endif (LINUX) - - diff --git a/indra/cmake/LibVLCPlugin.cmake b/indra/cmake/LibVLCPlugin.cmake index 599ce028445..cbc04d6fc5e 100644 --- a/indra/cmake/LibVLCPlugin.cmake +++ b/indra/cmake/LibVLCPlugin.cmake @@ -5,14 +5,21 @@ include(Prebuilt) include_guard() add_library( ll::libvlc INTERFACE IMPORTED ) +if(LINUX) + include(FindPkgConfig) + + pkg_check_modules(libvlc REQUIRED IMPORTED_TARGET libvlc) + target_link_libraries( ll::libvlc INTERFACE PkgConfig::libvlc) + return() +endif() + use_prebuilt_binary(vlc-bin) -set(LIBVLCPLUGIN ON CACHE BOOL - "LIBVLCPLUGIN support for the llplugin/llmedia test apps.") +target_include_directories( ll::libvlc INTERFACE ${LIBS_PREBUILT_DIR}/include/vlc) if (WINDOWS) target_link_libraries( ll::libvlc INTERFACE - libvlc.lib - libvlccore.lib + ${ARCH_PREBUILT_DIRS_RELEASE}/libvlc.lib + ${ARCH_PREBUILT_DIRS_RELEASE}/libvlccore.lib ) elseif (DARWIN) target_link_libraries( ll::libvlc INTERFACE @@ -20,9 +27,9 @@ elseif (DARWIN) libvlccore.dylib ) elseif (LINUX) - # Specify a full path to make sure we get a static link +# Specify a full path to make sure we get a static link target_link_libraries( ll::libvlc INTERFACE - ${LIBS_PREBUILT_DIR}/lib/libvlc.a - ${LIBS_PREBUILT_DIR}/lib/libvlccore.a + ${LIBS_PREBUILT_DIR}/lib/libvlc.a + ${LIBS_PREBUILT_DIR}/lib/libvlccore.a ) -endif (WINDOWS) +endif () diff --git a/indra/cmake/LibXML2.cmake b/indra/cmake/LibXML2.cmake new file mode 100644 index 00000000000..55e0663947b --- /dev/null +++ b/indra/cmake/LibXML2.cmake @@ -0,0 +1,27 @@ +# -*- cmake -*- + +include(Prebuilt) + +include_guard() +add_library( ll::libxml2 INTERFACE IMPORTED ) + +if(USE_CONAN ) + target_link_libraries( ll::libxml2 INTERFACE CONAN_PKG::libxml2 ) + return() +endif() + +use_prebuilt_binary(libxml2) +if (WINDOWS) + target_compile_definitions( ll::libxml2 INTERFACE LIBXML_STATIC=1) + target_link_libraries( ll::libxml2 INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libxml2.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libxml2.lib) +elseif(DARWIN) + target_link_libraries( ll::libxml2 INTERFACE xml2 iconv) +else() + target_link_libraries( ll::libxml2 INTERFACE + ${ARCH_PREBUILT_DIRS}/libxml2.a + ) +endif() + +target_include_directories( ll::libxml2 SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/libxml2) diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake index 1d757abeffb..c8823596564 100644 --- a/indra/cmake/Linking.cmake +++ b/indra/cmake/Linking.cmake @@ -3,10 +3,6 @@ include_guard() include(Variables) -set(ARCH_PREBUILT_DIRS ${AUTOBUILD_INSTALL_DIR}/lib) -set(ARCH_PREBUILT_DIRS_PLUGINS ${AUTOBUILD_INSTALL_DIR}/plugins) -set(ARCH_PREBUILT_DIRS_RELEASE ${AUTOBUILD_INSTALL_DIR}/lib/release) -set(ARCH_PREBUILT_DIRS_DEBUG ${AUTOBUILD_INSTALL_DIR}/lib/debug) if (WINDOWS OR DARWIN ) # Kludge for older cmake versions, 3.20+ is needed to use a genex in add_custom_command( OUTPUT ... ) # Using this will work okay-ish, as Debug is not supported anyway. But for property multi config and also @@ -39,8 +35,10 @@ endif () # that CMAKE_BUILD_TYPE is essentially meaningless at configuration time for IDE generators and # CMAKE_CFG_INTDIR is meaningless at build time for Makefile generators -link_directories(${AUTOBUILD_INSTALL_DIR}/lib/$>) -link_directories(${AUTOBUILD_INSTALL_DIR}/lib/release) +link_directories( + ${LIBS_PREBUILT_DIR}/lib/$>,$>,> + $<$>:${LIBS_PREBUILT_DIR}/lib/release> +) add_library( ll::oslibraries INTERFACE IMPORTED ) @@ -63,11 +61,23 @@ elseif (WINDOWS) user32 ole32 dbghelp - rpcrt4.lib - legacy_stdio_definitions + Shlwapi ) + + if(ASAN) + if(ADDRESS_SIZE EQUAL 32) + target_link_libraries( ll::oslibraries INTERFACE + clang_rt.asan_dynamic_runtime_thunk-i386 + clang_rt.asan_dynamic-i386 + ) + else(ADDRESS_SIZE EQUAL 32) + target_link_libraries( ll::oslibraries INTERFACE + clang_rt.asan_dynamic_runtime_thunk-x86_64 + clang_rt.asan_dynamic-x86_64 + ) + endif(ADDRESS_SIZE EQUAL 32) + endif(ASAN) else() - include(CMakeFindFrameworks) find_library(COREFOUNDATION_LIBRARY CoreFoundation) find_library(CARBON_LIBRARY Carbon) find_library(COCOA_LIBRARY Cocoa) diff --git a/indra/cmake/Meshoptimizer.cmake b/indra/cmake/Meshoptimizer.cmake deleted file mode 100644 index fd144d2b97c..00000000000 --- a/indra/cmake/Meshoptimizer.cmake +++ /dev/null @@ -1,20 +0,0 @@ -# -*- cmake -*- - -include(Linking) -include(Prebuilt) - -include_guard() -add_library( ll::meshoptimizer INTERFACE IMPORTED ) - -use_system_binary(meshoptimizer) -use_prebuilt_binary(meshoptimizer) - -if (WINDOWS) - target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer.lib) -elseif (LINUX) - target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer.o) -elseif (DARWIN) - target_link_libraries( ll::meshoptimizer INTERFACE libmeshoptimizer.a) -endif (WINDOWS) - -target_include_directories( ll::meshoptimizer SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/meshoptimizer) diff --git a/indra/cmake/NDOF.cmake b/indra/cmake/NDOF.cmake index b88fbccf2a1..e68aae2d7d6 100644 --- a/indra/cmake/NDOF.cmake +++ b/indra/cmake/NDOF.cmake @@ -14,7 +14,9 @@ if (NDOF) endif (WINDOWS OR DARWIN) if (WINDOWS) - target_link_libraries( ll::ndof INTERFACE libndofdev) + target_link_libraries( ll::ndof INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libndofdev.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libndofdev.lib) elseif (DARWIN OR LINUX) target_link_libraries( ll::ndof INTERFACE ndofdev) endif (WINDOWS) diff --git a/indra/cmake/NGHTTP2.cmake b/indra/cmake/NGHTTP2.cmake index 6396a5bd016..39aedae63b4 100644 --- a/indra/cmake/NGHTTP2.cmake +++ b/indra/cmake/NGHTTP2.cmake @@ -7,10 +7,18 @@ add_library( ll::nghttp2 INTERFACE IMPORTED ) use_system_binary(nghttp2) use_prebuilt_binary(nghttp2) if (WINDOWS) - target_link_libraries( ll::nghttp2 INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/nghttp2.lib) -elseif (DARWIN) - target_link_libraries( ll::nghttp2 INTERFACE libnghttp2.dylib) -else (WINDOWS) - target_link_libraries( ll::nghttp2 INTERFACE libnghttp2.a ) -endif (WINDOWS) + target_link_libraries( ll::nghttp2 INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/nghttp2.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/nghttp2.lib + ) +elseif (LINUX) + target_link_libraries( ll::nghttp2 INTERFACE + ${ARCH_PREBUILT_DIRS}/libnghttp2.a + ) +else () + target_link_libraries( ll::nghttp2 INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libnghttp2.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libnghttp2.a + ) +endif () target_include_directories( ll::nghttp2 SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/nghttp2) diff --git a/indra/cmake/NVAPI.cmake b/indra/cmake/NVAPI.cmake index ff5a5428e09..fc0c6aa92fe 100644 --- a/indra/cmake/NVAPI.cmake +++ b/indra/cmake/NVAPI.cmake @@ -1,13 +1,14 @@ # -*- cmake -*- include(Prebuilt) -set(NVAPI ON CACHE BOOL "Use NVAPI.") +set(USE_NVAPI ON CACHE BOOL "Use NVAPI library.") -if (NVAPI) +if (USE_NVAPI) if (WINDOWS) add_library( ll::nvapi INTERFACE IMPORTED ) target_link_libraries( ll::nvapi INTERFACE nvapi) use_prebuilt_binary(nvapi) + target_compile_definitions( ll::nvapi INTERFACE LL_NVAPI=1) endif (WINDOWS) -endif (NVAPI) +endif (USE_NVAPI) diff --git a/indra/cmake/OPENAL.cmake b/indra/cmake/OPENAL.cmake index 0b6a7c2853b..6711ebe4f59 100644 --- a/indra/cmake/OPENAL.cmake +++ b/indra/cmake/OPENAL.cmake @@ -8,7 +8,7 @@ include_guard() # to have memory leaks, has no option to play music streams # It probably makes sense to to completely remove it -set(USE_OPENAL OFF CACHE BOOL "Enable OpenAL") +set(USE_OPENAL ON CACHE BOOL "Enable OpenAL") # ND: To streamline arguments passed, switch from OPENAL to USE_OPENAL # To not break all old build scripts convert old arguments but warn about it if(OPENAL) @@ -18,19 +18,30 @@ endif() if (USE_OPENAL) add_library( ll::openal INTERFACE IMPORTED ) - target_include_directories( ll::openal SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/AL") + target_include_directories( ll::openal SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/") target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1) use_prebuilt_binary(openal) if(WINDOWS) target_link_libraries( ll::openal INTERFACE - OpenAL32 - alut - ) - elseif(LINUX) + debug ${ARCH_PREBUILT_DIRS_DEBUG}/OpenAL32.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/OpenAL32.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/alut.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/alut.lib + ) + elseif (DARWIN) + target_link_libraries( ll::openal INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libopenal.dylib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libopenal.dylib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libalut.dylib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libalut.dylib + ) + elseif (LINUX) target_link_libraries( ll::openal INTERFACE - openal - alut + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libopenal.so + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libopenal.so + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libalut.so + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libalut.so ) else() message(FATAL_ERROR "OpenAL is not available for this platform") diff --git a/indra/cmake/OpenGL.cmake b/indra/cmake/OpenGL.cmake index bf7cd8366a9..309f52659ab 100644 --- a/indra/cmake/OpenGL.cmake +++ b/indra/cmake/OpenGL.cmake @@ -4,3 +4,10 @@ include(Variables) include(Prebuilt) include(FindOpenGL) +add_library( ll::opengl INTERFACE IMPORTED ) + +if(TARGET OpenGL::OpenGL) + target_link_libraries( ll::opengl INTERFACE OpenGL::OpenGL) +elseif(TARGET OpenGL::GL) + target_link_libraries( ll::opengl INTERFACE OpenGL::GL) +endif() diff --git a/indra/cmake/OpenJPEG.cmake b/indra/cmake/OpenJPEG.cmake index c4aab2e9e53..32739d5786d 100644 --- a/indra/cmake/OpenJPEG.cmake +++ b/indra/cmake/OpenJPEG.cmake @@ -7,5 +7,11 @@ add_library( ll::openjpeg INTERFACE IMPORTED ) use_system_binary(openjpeg) use_prebuilt_binary(openjpeg) -target_link_libraries(ll::openjpeg INTERFACE openjp2 ) +if(WINDOWS) + target_link_libraries(ll::openjpeg INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/openjp2.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/openjp2.lib) +else () + target_link_libraries(ll::openjpeg INTERFACE openjp2 ) +endif () target_include_directories( ll::openjpeg SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/openjpeg) diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake index 3387c74f453..71820dc623d 100644 --- a/indra/cmake/OpenSSL.cmake +++ b/indra/cmake/OpenSSL.cmake @@ -7,11 +7,22 @@ add_library( ll::openssl INTERFACE IMPORTED ) use_system_binary(openssl) use_prebuilt_binary(openssl) if (WINDOWS) - target_link_libraries(ll::openssl INTERFACE libssl libcrypto) + target_link_libraries(ll::openssl INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libssl.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libssl.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libcrypto.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libcrypto.lib + Crypt32.lib + ) elseif (LINUX) - target_link_libraries(ll::openssl INTERFACE ssl crypto dl) + target_link_libraries(ll::openssl INTERFACE + ${ARCH_PREBUILT_DIRS}/libssl.a + ${ARCH_PREBUILT_DIRS}/libcrypto.a + dl + ) else() target_link_libraries(ll::openssl INTERFACE ssl crypto) endif (WINDOWS) target_include_directories( ll::openssl SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) +target_compile_definitions( ll::openssl INTERFACE OPENSSL_API_COMPAT=0x30100000L) diff --git a/indra/cmake/PNG.cmake b/indra/cmake/PNG.cmake index 044262bc8d8..330374674e0 100644 --- a/indra/cmake/PNG.cmake +++ b/indra/cmake/PNG.cmake @@ -1,4 +1,5 @@ # -*- cmake -*- +include(Linking) include(Prebuilt) include_guard() @@ -7,7 +8,14 @@ add_library( ll::libpng INTERFACE IMPORTED ) use_system_binary(libpng) use_prebuilt_binary(libpng) if (WINDOWS) - target_link_libraries(ll::libpng INTERFACE libpng16) + target_link_libraries(ll::libpng INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libpng16d.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libpng16.lib + ) +elseif(LINUX) + target_link_libraries(ll::libpng INTERFACE + ${ARCH_PREBUILT_DIRS}/libpng16.a + ) else() target_link_libraries(ll::libpng INTERFACE png16 ) endif() diff --git a/indra/cmake/PluginAPI.cmake b/indra/cmake/PluginAPI.cmake index 114415e514b..1ea8a17e487 100644 --- a/indra/cmake/PluginAPI.cmake +++ b/indra/cmake/PluginAPI.cmake @@ -1,5 +1,7 @@ # -*- cmake -*- +include_guard() + add_library( ll::pluginlibraries INTERFACE IMPORTED ) if (WINDOWS) @@ -7,10 +9,15 @@ if (WINDOWS) wsock32 ws2_32 psapi - netapi32 advapi32 user32 + wer ) +elseif (DARWIN) + find_library(COCOA_LIBRARY Cocoa) + target_link_libraries( ll::pluginlibraries INTERFACE + ${COCOA_LIBRARY} + ) endif (WINDOWS) diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake index 634cc15c21c..81a7e9775ce 100644 --- a/indra/cmake/Prebuilt.cmake +++ b/indra/cmake/Prebuilt.cmake @@ -1,12 +1,19 @@ # -*- cmake -*- include_guard() +include(Variables) + +set(ARCH_PREBUILT_DIRS ${LIBS_PREBUILT_DIR}/lib) +set(ARCH_PREBUILT_DIRS_PLUGINS ${LIBS_PREBUILT_DIR}/plugins) +set(ARCH_PREBUILT_DIRS_RELEASE ${LIBS_PREBUILT_DIR}/lib/release) +set(ARCH_PREBUILT_DIRS_DEBUG ${LIBS_PREBUILT_DIR}/lib/debug) +set(ARCH_PREBUILT_BIN_DIRS ${LIBS_PREBUILT_DIR}/bin) +set(ARCH_PREBUILT_BIN_DIRS_RELEASE ${LIBS_PREBUILT_DIR}/bin/release) +set(ARCH_PREBUILT_BIN_DIRS_DEBUG ${LIBS_PREBUILT_DIR}/bin/debug) + include(FindAutobuild) -if(INSTALL_PROPRIETARY) - include(FindSCP) -endif(INSTALL_PROPRIETARY) -set(PREBUILD_TRACKING_DIR ${AUTOBUILD_INSTALL_DIR}/cmake_tracking) +set(PREBUILD_TRACKING_DIR ${LIBS_PREBUILT_DIR}/cmake_tracking) # For the library installation process; # see cmake/Prebuild.cmake for the counterpart code. if ("${CMAKE_SOURCE_DIR}/../autobuild.xml" IS_NEWER_THAN "${PREBUILD_TRACKING_DIR}/sentinel_installed") @@ -37,12 +44,14 @@ macro (use_prebuilt_binary _binary) if(${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/${_binary}_installed OR NOT ${${_binary}_installed} EQUAL 0) if(DEBUG_PREBUILT) message(STATUS "cd ${CMAKE_SOURCE_DIR} && ${AUTOBUILD_EXECUTABLE} install - --install-dir=${AUTOBUILD_INSTALL_DIR} + --install-dir=${LIBS_PREBUILT_DIR} ${_binary} ") endif(DEBUG_PREBUILT) execute_process(COMMAND "${AUTOBUILD_EXECUTABLE}" install - --install-dir=${AUTOBUILD_INSTALL_DIR} + -A${ADDRESS_SIZE} + --skip-source-environment + --install-dir=${LIBS_PREBUILT_DIR} ${_binary} WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" RESULT_VARIABLE ${_binary}_installed diff --git a/indra/cmake/Python.cmake b/indra/cmake/Python.cmake deleted file mode 100644 index da5d2ef22c2..00000000000 --- a/indra/cmake/Python.cmake +++ /dev/null @@ -1,57 +0,0 @@ -# -*- cmake -*- - -set(PYTHONINTERP_FOUND) - -if (DEFINED ENV{PYTHON}) - # Allow python executable to be explicitly set - set(python "$ENV{PYTHON}") - set(PYTHONINTERP_FOUND ON) -elseif (WINDOWS) - # On Windows, explicitly avoid Cygwin Python. - - # if the user has their own version of Python installed, prefer that - foreach(hive HKEY_CURRENT_USER HKEY_LOCAL_MACHINE) - # prefer more recent Python versions to older ones, if multiple versions - # are installed - foreach(pyver 3.12 3.11 3.10 3.9 3.8 3.7) - list(APPEND regpaths "[${hive}\\SOFTWARE\\Python\\PythonCore\\${pyver}\\InstallPath]") - endforeach() - endforeach() - - # TODO: This logic has the disadvantage that if you have multiple versions - # of Python installed, the selected path won't necessarily be the newest - - # e.g. this GLOB will prefer Python310 to Python311. But since pymaybe is - # checked AFTER the registry entries, this will only surface as a problem if - # no installed Python appears in the registry. - file(GLOB pymaybe - "$ENV{PROGRAMFILES}/Python*" -## "$ENV{PROGRAMFILES(X86)}/Python*" - # The Windows environment variable is in fact as shown above, but CMake - # disallows querying an environment variable containing parentheses - - # thanks, Windows. Fudge by just appending " (x86)" to $PROGRAMFILES and - # hoping for the best. - "$ENV{PROGRAMFILES} (x86)/Python*" - "c:/Python*") - - find_program(python - NAMES python3.exe python.exe - NO_DEFAULT_PATH # added so that cmake does not find cygwin python - PATHS - ${regpaths} - ${pymaybe} - ) - find_package(Python3 COMPONENTS Interpreter) -else() - find_program(python python3) - - if (python) - set(PYTHONINTERP_FOUND ON) - endif (python) -endif (DEFINED ENV{PYTHON}) - -if (NOT python) - message(FATAL_ERROR "No Python interpreter found") -endif (NOT python) - -set(PYTHON_EXECUTABLE "${python}" CACHE FILEPATH "Python interpreter for builds") -mark_as_advanced(PYTHON_EXECUTABLE) diff --git a/indra/cmake/SDBusCPP.cmake b/indra/cmake/SDBusCPP.cmake new file mode 100644 index 00000000000..31dcd40a12e --- /dev/null +++ b/indra/cmake/SDBusCPP.cmake @@ -0,0 +1,16 @@ +# -*- cmake -*- +include(Prebuilt) + +include_guard() +add_library( ll::sdbus-cpp INTERFACE IMPORTED ) + +if(LINUX) + use_system_binary(sdbus-cpp) + use_prebuilt_binary(sdbus-cpp) + + target_compile_definitions( ll::sdbus-cpp INTERFACE LL_DBUS_ENABLED=1 ) + + target_link_libraries(ll::sdbus-cpp INTERFACE sdbus-c++) + + target_include_directories( ll::sdbus-cpp SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/) +endif() diff --git a/indra/cmake/SDL2.cmake b/indra/cmake/SDL2.cmake new file mode 100644 index 00000000000..a4d1cdc50f2 --- /dev/null +++ b/indra/cmake/SDL2.cmake @@ -0,0 +1,33 @@ +# -*- cmake -*- +include(Prebuilt) + +include_guard() + +if(LINUX) +set(USE_SDL ON) +endif() + +if(USE_SDL) + +add_library( ll::SDL2 INTERFACE IMPORTED ) + +use_system_binary( SDL2 ) + +use_prebuilt_binary(SDL2) +if(WINDOWS) + target_link_libraries( ll::SDL2 INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/SDL2d.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/SDL2.lib) +elseif(LINUX) + target_link_libraries( ll::SDL2 INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libSDL2d.so + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libSDL2.so) +else() + target_link_libraries( ll::SDL2 INTERFACE SDL2) +endif() + +target_include_directories( ll::SDL2 SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/SDL2) + +target_compile_definitions( ll::SDL2 INTERFACE LL_SDL=1) + +endif() diff --git a/indra/cmake/Sentry.cmake b/indra/cmake/Sentry.cmake new file mode 100644 index 00000000000..33d11f13b89 --- /dev/null +++ b/indra/cmake/Sentry.cmake @@ -0,0 +1,54 @@ +# -*- cmake -*- +include(Linking) +include(Prebuilt) +include(CURL) +include(NGHTTP2) +include(OpenSSL) +include(ZLIBNG) + +include_guard() +if (DEFINED ENV{USE_SENTRY}) + set(USE_SENTRY $ENV{USE_SENTRY} CACHE BOOL "" FORCE) +endif() + +if(DEFINED ENV{SENTRY_DSN}) + set(SENTRY_DSN $ENV{SENTRY_DSN} CACHE STRING "Sentry DSN" FORCE) +else() + set(SENTRY_DSN "" CACHE STRING "Sentry DSN") +endif() + +if (INSTALL_PROPRIETARY AND NOT SENTRY_DSN STREQUAL "") + set(USE_SENTRY ON CACHE BOOL "Use the Sentry crash reporting system") +endif () + +if (USE_SENTRY) + add_library( al::sentry INTERFACE IMPORTED ) + use_prebuilt_binary(sentry) + if (WINDOWS) + target_link_libraries( al::sentry INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/sentry.lib) + elseif (DARWIN) + find_library(SENTRY_LIBRARIES Sentry REQUIRED + NO_DEFAULT_PATH PATHS "${ARCH_PREBUILT_DIRS_RELEASE}") + target_link_libraries( al::sentry INTERFACE ${SENTRY_LIBRARIES}) + else () + target_link_libraries( al::sentry INTERFACE + ${ARCH_PREBUILT_DIRS}/libsentry.a + ${ARCH_PREBUILT_DIRS}/libbreakpad_client.a + ll::libcurl + ll::openssl + ll::nghttp2 + ll::zlib-ng + ) + endif () + if (LINUX) + target_include_directories( al::sentry SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) + else () + target_include_directories( al::sentry SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/sentry) + endif() + + if(SENTRY_DSN STREQUAL "") + message(FATAL_ERROR "You must set a DSN url with -DSENTRY_DSN= to enable sentry") + endif() + + target_compile_definitions( al::sentry INTERFACE AL_SENTRY=1 SENTRY_DSN="${SENTRY_DSN}") +endif () diff --git a/indra/cmake/TemplateCheck.cmake b/indra/cmake/TemplateCheck.cmake index 2fada2eda97..97728353c37 100644 --- a/indra/cmake/TemplateCheck.cmake +++ b/indra/cmake/TemplateCheck.cmake @@ -1,12 +1,10 @@ # -*- cmake -*- -include(Python) - macro (check_message_template _target) add_custom_command( TARGET ${_target} PRE_LINK - COMMAND ${PYTHON_EXECUTABLE} + COMMAND ${Python3_EXECUTABLE} ARGS ${SCRIPTS_DIR}/template_verifier.py --mode=development --cache_master --master_url=${TEMPLATE_VERIFIER_MASTER_URL} ${TEMPLATE_VERIFIER_OPTIONS} COMMENT "Verifying message template - See http://wiki.secondlife.com/wiki/Template_verifier.py" diff --git a/indra/cmake/ThreeJS.cmake b/indra/cmake/ThreeJS.cmake index 528adcbb25b..089cea38646 100644 --- a/indra/cmake/ThreeJS.cmake +++ b/indra/cmake/ThreeJS.cmake @@ -2,7 +2,7 @@ use_prebuilt_binary(threejs) # Main three.js file -configure_file("${AUTOBUILD_INSTALL_DIR}/js/three.min.js" "${CMAKE_SOURCE_DIR}/newview/skins/default/html/common/equirectangular/js/three.min.js" COPYONLY) +configure_file("${LIBS_PREBUILT_DIR}/js/three.min.js" "${CMAKE_SOURCE_DIR}/newview/skins/default/html/common/equirectangular/js/three.min.js" COPYONLY) # Controls to move around the scene using mouse or keyboard -configure_file("${AUTOBUILD_INSTALL_DIR}/js/OrbitControls.js" "${CMAKE_SOURCE_DIR}/newview/skins/default/html/common/equirectangular/js/OrbitControls.js" COPYONLY) +configure_file("${LIBS_PREBUILT_DIR}/js/OrbitControls.js" "${CMAKE_SOURCE_DIR}/newview/skins/default/html/common/equirectangular/js/OrbitControls.js" COPYONLY) diff --git a/indra/cmake/Tracy.cmake b/indra/cmake/Tracy.cmake index 32c02edb933..d54a32fdc2e 100644 --- a/indra/cmake/Tracy.cmake +++ b/indra/cmake/Tracy.cmake @@ -4,14 +4,32 @@ include(Prebuilt) include_guard() add_library( ll::tracy INTERFACE IMPORTED ) -set(USE_TRACY OFF CACHE BOOL "Use Tracy profiler.") +# default Tracy profiling on for test builds, but off for all others +string(TOLOWER ${VIEWER_CHANNEL} channel_lower) +if(WINDOWS AND channel_lower MATCHES "^second life test") + option(USE_TRACY "Use Tracy profiler." ON) +else() + option(USE_TRACY "Use Tracy profiler." OFF) +endif() if (USE_TRACY) + option(USE_TRACY_ON_DEMAND "Use on-demand Tracy profiling." ON) + option(USE_TRACY_LOCAL_ONLY "Disallow remote Tracy profiling." OFF) + use_system_binary(tracy) use_prebuilt_binary(tracy) target_include_directories( ll::tracy SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/tracy) - target_link_libraries( ll::tracy INTERFACE TracyClient ) + + target_compile_definitions(ll::tracy INTERFACE -DTRACY_ENABLE=1 -DTRACY_ONLY_IPV4=1) + + if (USE_TRACY_ON_DEMAND) + target_compile_definitions(ll::tracy INTERFACE -DTRACY_ON_DEMAND=1) + endif () + + if (USE_TRACY_LOCAL_ONLY) + target_compile_definitions(ll::tracy INTERFACE -DTRACY_NO_BROADCAST=1 -DTRACY_ONLY_LOCALHOST=1) + endif () # See: indra/llcommon/llprofiler.h add_compile_definitions(LL_PROFILER_CONFIGURATION=3) diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake index 8f135676d6a..a79acb52c5f 100644 --- a/indra/cmake/UI.cmake +++ b/indra/cmake/UI.cmake @@ -5,31 +5,25 @@ include(FreeType) add_library( ll::uilibraries INTERFACE IMPORTED ) if (LINUX) - target_compile_definitions(ll::uilibraries INTERFACE LL_GTK=1 LL_X11=1 ) + option(USE_NFD "Enable NFD universal filepicker library" ON) + option(USE_X11 "Enable undefined behavior sanitizer" OFF) - if( USE_CONAN ) - target_link_libraries( ll::uilibraries INTERFACE CONAN_PKG::gtk ) - return() + if(USE_X11) + target_compile_definitions(ll::uilibraries INTERFACE LL_X11=1 ) endif() - use_prebuilt_binary(gtk-atk-pango-glib) - target_link_libraries( ll::uilibraries INTERFACE - atk-1.0 - gdk-x11-2.0 - gdk_pixbuf-2.0 - Xinerama - glib-2.0 - gmodule-2.0 - gobject-2.0 - gthread-2.0 - gtk-x11-2.0 - pango-1.0 - pangoft2-1.0 - pangox-1.0 - pangoxft-1.0 - Xinerama - ll::freetype + include(FindPkgConfig) + + if(USE_X11) + set(PKGCONFIG_PACKAGES + x11 ) + endif() + + foreach(pkg ${PKGCONFIG_PACKAGES}) + pkg_check_modules(${pkg} REQUIRED IMPORTED_TARGET ${pkg}) + target_link_libraries( ll::uilibraries INTERFACE PkgConfig::${pkg}) + endforeach(pkg) endif (LINUX) if( WINDOWS ) target_link_libraries( ll::uilibraries INTERFACE @@ -48,6 +42,10 @@ if( WINDOWS ) ) endif() +if(USE_NFD) + target_compile_definitions(ll::uilibraries INTERFACE LL_NFD=1 ) +endif() + target_include_directories( ll::uilibraries SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include ) diff --git a/indra/cmake/URIPARSER.cmake b/indra/cmake/URIPARSER.cmake index 6c33ff70e10..cb22c8eb95f 100644 --- a/indra/cmake/URIPARSER.cmake +++ b/indra/cmake/URIPARSER.cmake @@ -10,10 +10,15 @@ use_system_binary( uriparser ) use_prebuilt_binary(uriparser) if (WINDOWS) - target_link_libraries( ll::uriparser INTERFACE uriparser) + target_compile_definitions( ll::uriparser INTERFACE URI_STATIC_BUILD=1) + target_link_libraries( ll::uriparser INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/uriparser.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/uriparser.lib) elseif (LINUX) - target_link_libraries( ll::uriparser INTERFACE uriparser) + target_link_libraries( ll::uriparser INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/liburiparser.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/liburiparser.a) elseif (DARWIN) - target_link_libraries( ll::uriparser INTERFACE liburiparser.dylib) + target_link_libraries( ll::uriparser INTERFACE liburiparser.dylib) endif (WINDOWS) target_include_directories( ll::uriparser SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/uriparser) diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake index 59725ecc650..7d39bc66dec 100644 --- a/indra/cmake/Variables.cmake +++ b/indra/cmake/Variables.cmake @@ -9,19 +9,7 @@ # LINUX - Linux # WINDOWS - Windows -# Switches set here and in 00-Common.cmake must agree with -# https://bitbucket.org/lindenlab/viewer-build-variables/src/tip/variables -# Reading $LL_BUILD is an attempt to directly use those switches. -if ("$ENV{LL_BUILD}" STREQUAL "" AND "${LL_BUILD_ENV}" STREQUAL "" ) - message(FATAL_ERROR "Environment variable LL_BUILD must be set") -elseif("$ENV{LL_BUILD}" STREQUAL "") - set( ENV{LL_BUILD} "${LL_BUILD_ENV}" ) - message( "Setting ENV{LL_BUILD} to cached variable ${LL_BUILD_ENV}" ) -else() - set( LL_BUILD_ENV "$ENV{LL_BUILD}" CACHE STRING "Save environment" FORCE ) -endif () include_guard() - # Relative and absolute paths to subtrees. if(NOT DEFINED COMMON_CMAKE_DIR) @@ -33,11 +21,35 @@ set(LIBS_OPEN_PREFIX) set(SCRIPTS_PREFIX ../scripts) set(VIEWER_PREFIX) set(INTEGRATION_TESTS_PREFIX) -set(LL_TESTS OFF CACHE BOOL "Build and run unit and integration tests (disable for build timing runs to reduce variation") -set(INCREMENTAL_LINK OFF CACHE BOOL "Use incremental linking on win32 builds (enable for faster links on some machines)") -set(ENABLE_MEDIA_PLUGINS ON CACHE BOOL "Turn off building media plugins if they are imported by third-party library mechanism") + +option(LL_TESTS "Build and run unit and integration tests (disable for build timing runs to reduce variation" OFF) +if(DEFINED ENV{LL_TESTS}) + set(LL_TESTS $ENV{LL_TESTS} CACHE STRING "Build and run unit and integration tests (disable for build timing runs to reduce variation" FORCE) +else() + set(LL_TESTS "" CACHE STRING "Build and run unit and integration tests (disable for build timing runs to reduce variation") +endif() + +option(ENABLE_MEDIA_PLUGINS "Turn off building media plugins if they are imported by third-party library mechanism" ON) + +# Compiler and toolchain options +option(INCREMENTAL_LINK "Use incremental linking on win32 builds (enable for faster links on some machines)" OFF) +option(USE_LTO "Enable global and interprocedural optimizations" OFF) +option(USE_ASAN "Enable address sanitizer for detection of memory issues" OFF) +option(USE_LEAKSAN "Enable address sanitizer for detection of memory leaks" OFF) +option(USE_UBSAN "Enable undefined behavior sanitizer" OFF) +option(USE_THDSAN "Enable thread sanitizer for detection of thread data races and mutexing issues" OFF) +if(USE_ASAN AND USE_LEAKSAN) + message(FATAL_ERROR "You may only enable either USE_ASAN or USE_LEAKSAN not both") +elseif((USE_ASAN OR USE_LEAKSAN) AND USE_THDSAN) + message(FATAL_ERROR "Address and Leak sanitizers are incompatible with thread sanitizer") +endif(USE_ASAN AND USE_LEAKSAN) set(VIEWER_SYMBOL_FILE "" CACHE STRING "Name of tarball into which to place symbol files") +option(USE_CEF "Enable CEF media plugin" ON) +option(USE_VLC "Enable VLC media plugin" ON) + +option(BUILD_EXPIREY "Use build expirey system" OFF) + if(LIBS_CLOSED_DIR) file(TO_CMAKE_PATH "${LIBS_CLOSED_DIR}" LIBS_CLOSED_DIR) else(LIBS_CLOSED_DIR) @@ -63,12 +75,7 @@ if (EXISTS ${CMAKE_SOURCE_DIR}/Server.cmake) set(INSTALL_PROPRIETARY ON CACHE BOOL "Install proprietary binaries") endif (EXISTS ${CMAKE_SOURCE_DIR}/Server.cmake) set(TEMPLATE_VERIFIER_OPTIONS "" CACHE STRING "Options for scripts/template_verifier.py") -set(TEMPLATE_VERIFIER_MASTER_URL "https://github.com/secondlife/master-message-template/raw/master/message_template.msg" CACHE STRING "Location of the master message template") - -if (NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING - "Build type. One of: Debug Release RelWithDebInfo" FORCE) -endif (NOT CMAKE_BUILD_TYPE) +set(TEMPLATE_VERIFIER_MASTER_URL "https://github.com/AlchemyViewer/master-message-template/raw/master/message_template.msg" CACHE STRING "Location of the master message template") # If someone has specified an address size, use that to determine the # architecture. Otherwise, let the architecture specify the address size. @@ -77,33 +84,23 @@ if (ADDRESS_SIZE EQUAL 32) elseif (ADDRESS_SIZE EQUAL 64) set(ARCH x86_64) else (ADDRESS_SIZE EQUAL 32) - # Note we cannot use if(DARWIN) here, this variable is set way lower - if( ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" ) - set(ADDRESS_SIZE 64) - set(ARCH x86_64) - else() - # Use Python's platform.machine() since uname -m isn't available everywhere. - # Even if you can assume cygwin uname -m, the answer depends on whether - # you're running 32-bit cygwin or 64-bit cygwin! But even 32-bit Python will - # report a 64-bit processor. - execute_process(COMMAND - "${PYTHON_EXECUTABLE}" "-c" - "import platform; print( platform.machine() )" - OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) - string( REGEX MATCH ".*(64)$" RE_MATCH "${ARCH}" ) - if( RE_MATCH AND ${CMAKE_MATCH_1} STREQUAL "64" ) - set(ADDRESS_SIZE 64) + #message(STATUS "ADDRESS_SIZE is UNDEFINED") + if (CMAKE_SIZEOF_VOID_P EQUAL 8) + message(STATUS "Size of void pointer is detected as 8; ARCH is 64-bit") set(ARCH x86_64) - else() + set(ADDRESS_SIZE 64) + elseif (CMAKE_SIZEOF_VOID_P EQUAL 4) + message(STATUS "Size of void pointer is detected as 4; ARCH is 32-bit") set(ADDRESS_SIZE 32) set(ARCH i686) + else() + message(FATAL_ERROR "Unkown Architecture!") endif() - endif() endif (ADDRESS_SIZE EQUAL 32) -if (${CMAKE_SYSTEM_NAME} MATCHES "Windows") +if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") set(WINDOWS ON BOOL FORCE) -endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows") +endif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(LINUX ON BOOl FORCE) @@ -127,100 +124,78 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib/${DPKG_ARCH} /usr/local/lib/${DPKG_ARCH} ${CMAKE_SYSTEM_LIBRARY_PATH}) endif (DPKG_RESULT EQUAL 0) - include(ConfigurePkgConfig) - if (INSTALL_PROPRIETARY) + #if (INSTALL_PROPRIETARY) # Only turn on headless if we can find osmesa libraries. - include(FindPkgConfig) + # include(FindPkgConfig) #pkg_check_modules(OSMESA osmesa) #if (OSMESA_FOUND) # set(BUILD_HEADLESS ON CACHE BOOL "Build headless libraries.") #endif (OSMESA_FOUND) - endif (INSTALL_PROPRIETARY) + #endif (INSTALL_PROPRIETARY) endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(DARWIN 1) + set(CMAKE_MACOSX_RPATH TRUE) - string(REGEX MATCH "-mmacosx-version-min=([^ ]+)" scratch "$ENV{LL_BUILD}") - set(CMAKE_OSX_DEPLOYMENT_TARGET "${CMAKE_MATCH_1}") - message(STATUS "CMAKE_OSX_DEPLOYMENT_TARGET = '${CMAKE_OSX_DEPLOYMENT_TARGET}'") - - string(REGEX MATCH "-stdlib=([^ ]+)" scratch "$ENV{LL_BUILD}") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "${CMAKE_MATCH_1}") - message(STATUS "CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY = '${CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY}'") - - string(REGEX MATCH " -g([^ ]*)" scratch "$ENV{LL_BUILD}") - set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "${CMAKE_MATCH_1}") - # -gdwarf-2 is passed in LL_BUILD according to 00-COMPILE-LINK-RUN.txt. - # However, when CMake 3.9.2 sees -gdwarf-2, it silently deletes the whole -g - # switch, producing no symbols at all! The same thing happens if we specify - # plain -g ourselves, i.e. CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT is - # the empty string. Specifying -gdwarf-with-dsym or just -gdwarf drives a - # different CMake behavior: it substitutes plain -g. As of 2017-09-19, - # viewer-build-variables/variables still passes -gdwarf-2, which is the - # no-symbols case. Set -gdwarf, triggering CMake to substitute plain -g -- - # at least that way we should get symbols, albeit mangled ones. It Would Be - # Nice if CMake's behavior could be predicted from a consistent mental - # model, instead of only observed experimentally. - string(REPLACE "dwarf-2" "dwarf" - CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT - "${CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT}") - message(STATUS "CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT = '${CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT}'") - - string(REGEX MATCH "-O([^ ]*)" scratch "$ENV{LL_BUILD}") - set(CMAKE_XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL "${CMAKE_MATCH_1}") - message(STATUS "CMAKE_XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL = '${CMAKE_XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL}'") - - # allow disabling this check by setting LL_SKIP_REQUIRE_SYSROOT either ON as cmake cache var or non-empty as environment var - set(LL_SKIP_REQUIRE_SYSROOT OFF CACHE BOOL "Skip requirement to set toolchain sysroot ahead of time. Not skipped by default for consistency, but skipping can be useful for selecting alternative xcode versions side by side") - if("$ENV{LL_SKIP_REQUIRE_SYSROOT}" STREQUAL "" AND NOT ${LL_SKIP_REQUIRE_SYSROOT}) - string(REGEX MATCHALL "[^ ]+" LL_BUILD_LIST "$ENV{LL_BUILD}") - list(FIND LL_BUILD_LIST "-iwithsysroot" sysroot_idx) - if ("${sysroot_idx}" LESS 0) - message(FATAL_ERROR "Environment variable LL_BUILD must contain '-iwithsysroot'") - endif () - math(EXPR sysroot_idx "${sysroot_idx} + 1") - list(GET LL_BUILD_LIST "${sysroot_idx}" CMAKE_OSX_SYSROOT) - endif() - message(STATUS "CMAKE_OSX_SYSROOT = '${CMAKE_OSX_SYSROOT}'") - - set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0") - set(CMAKE_XCODE_ATTRIBUTE_GCC_STRICT_ALIASING NO) - set(CMAKE_XCODE_ATTRIBUTE_GCC_FAST_MATH NO) - set(CMAKE_XCODE_ATTRIBUTE_CLANG_X86_VECTOR_INSTRUCTIONS ssse3) - # we must hard code this to off for now. xcode's built in signing does not - # handle embedded app bundles such as CEF and others. Any signing for local - # development must be done after the build as we do in viewer_manifest.py for - # released builds - # https://stackoverflow.com/a/54296008 - # With Xcode 14.1, apparently you must take drastic steps to prevent - # implicit signing. + # Xcode setup + if (XCODE_VERSION LESS 12.0.0) + message( FATAL_ERROR "Xcode 12.0.0 or greater is required." ) + endif () + message( STATUS "Building with " ${CMAKE_OSX_SYSROOT} ) + set(CMAKE_OSX_DEPLOYMENT_TARGET 11.0) + + set(CMAKE_XCODE_ATTRIBUTE_GCC_GENERATE_DEBUGGING_SYMBOLS YES) + set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT dwarf-with-dsym) + + # Obj-C + set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES) + set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_WEAK YES) + + # Disable codesigning, for now it's handled with snake set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED NO) set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED NO) - # "-" represents "Sign to Run Locally" and empty string represents "Do Not Sign" set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "") set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "") + set(CMAKE_XCODE_ATTRIBUTE_DISABLE_MANUAL_TARGET_ORDER_BUILD_WARNING YES) set(CMAKE_XCODE_ATTRIBUTE_GCC_WARN_64_TO_32_BIT_CONVERSION NO) - set(CMAKE_OSX_ARCHITECTURES "${ARCH}") - string(REPLACE "i686" "i386" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") - string(REPLACE "AMD64" "x86_64" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") + + set(ADDRESS_SIZE 64) + if(BUILD_ARM64) + set(ARCH arm64) + set(CMAKE_OSX_ARCHITECTURES arm64) + elseif(BUILD_UNIVERSAL) + set(ARCH universal) + set(CMAKE_OSX_ARCHITECTURES arm64 x86_64) + else() + set(ARCH x86_64) + set(CMAKE_OSX_ARCHITECTURES x86_64) + endif() endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") # Default deploy grid set(GRID agni CACHE STRING "Target Grid") -set(VIEWER_CHANNEL "Second Life Test" CACHE STRING "Viewer Channel Name") - set(ENABLE_SIGNING OFF CACHE BOOL "Enable signing the viewer") set(SIGNING_IDENTITY "" CACHE STRING "Specifies the signing identity to use, if necessary.") +if (DEFINED ENV{VIEWER_ENABLE_SIGNING}) + set(ENABLE_SIGNING $ENV{VIEWER_ENABLE_SIGNING} CACHE BOOL "" FORCE) +endif() + +if(DEFINED ENV{VIEWER_SIGNING_IDENTITY}) + set(SIGNING_IDENTITY $ENV{VIEWER_SIGNING_IDENTITY} CACHE STRING "Specifies the signing identity to use, if necessary." FORCE) +endif() + set(VERSION_BUILD "0" CACHE STRING "Revision number passed in from the outside") set(USE_PRECOMPILED_HEADERS ON CACHE BOOL "Enable use of precompiled header directives where supported.") +set(VIEWER_UPDATE_SERVICE "" CACHE STRING "Update service URL") + source_group("CMake Rules" FILES CMakeLists.txt) get_property(LL_GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) diff --git a/indra/cmake/ViewerManager.cmake b/indra/cmake/ViewerManager.cmake index 7150ffc4d17..93cd6eb1255 100644 --- a/indra/cmake/ViewerManager.cmake +++ b/indra/cmake/ViewerManager.cmake @@ -1,3 +1,4 @@ include (Prebuilt) -use_prebuilt_binary(viewer-manager) - +# if(NOT LINUX) +# use_prebuilt_binary(viewer-manager) +# endif() diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake index cae68fbc119..e38e1369e09 100644 --- a/indra/cmake/ViewerMiscLibs.cmake +++ b/indra/cmake/ViewerMiscLibs.cmake @@ -1,23 +1,9 @@ # -*- cmake -*- include(Prebuilt) - -if (LINUX) - #use_prebuilt_binary(libuuid) - add_library( ll::fontconfig INTERFACE IMPORTED ) - - if( NOT USE_CONAN ) - use_prebuilt_binary(fontconfig) - else() - target_link_libraries( ll::fontconfig INTERFACE CONAN_PKG::fontconfig ) - endif() -endif (LINUX) - -if( NOT USE_CONAN ) - use_prebuilt_binary(libhunspell) -endif() +include_guard() use_prebuilt_binary(slvoice) use_prebuilt_binary(nanosvg) -use_prebuilt_binary(viewer-fonts) +use_prebuilt_binary(fonts) use_prebuilt_binary(emoji_shortcodes) diff --git a/indra/cmake/VulkanGltf.cmake b/indra/cmake/VulkanGltf.cmake deleted file mode 100644 index 94541d53073..00000000000 --- a/indra/cmake/VulkanGltf.cmake +++ /dev/null @@ -1,5 +0,0 @@ -# -*- cmake -*- -include(Prebuilt) - -use_prebuilt_binary(vulkan_gltf) - diff --git a/indra/cmake/WebP.cmake b/indra/cmake/WebP.cmake new file mode 100644 index 00000000000..2be8679e365 --- /dev/null +++ b/indra/cmake/WebP.cmake @@ -0,0 +1,26 @@ +# -*- cmake -*- + +include_guard() + +include(Prebuilt) + +add_library( ll::libwebp INTERFACE IMPORTED ) + +use_system_binary( libwebp ) + +use_prebuilt_binary(libwebp) +if(WINDOWS) + target_link_libraries( ll::libwebp INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libwebp_debug.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libwebp.lib + ) +else() + target_link_libraries( ll::libwebp INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libwebp.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libwebp.a + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libsharpyuv.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libsharpyuv.a + ) +endif() + +target_include_directories( ll::libwebp SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/webp) diff --git a/indra/cmake/WebRTC.cmake b/indra/cmake/WebRTC.cmake index 0127a0cb03f..d6411e8da91 100644 --- a/indra/cmake/WebRTC.cmake +++ b/indra/cmake/WebRTC.cmake @@ -26,7 +26,7 @@ elseif (DARWIN) ${COCOA_LIBRARY} ) elseif (LINUX) - target_link_libraries( ll::webrtc INTERFACE libwebrtc.a X11 ) + target_link_libraries( ll::webrtc INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libwebrtc.a X11 ) endif (WINDOWS) diff --git a/indra/cmake/XXHash.cmake b/indra/cmake/XXHash.cmake new file mode 100644 index 00000000000..3f986fe39f0 --- /dev/null +++ b/indra/cmake/XXHash.cmake @@ -0,0 +1,20 @@ +# -*- cmake -*- + +include_guard() + +include(Prebuilt) + +add_library( ll::xxhash INTERFACE IMPORTED ) + +use_system_binary( xxhash ) + +use_prebuilt_binary(xxhash) +# if(WINDOWS) +# target_link_libraries( ll::xxhash INTERFACE +# debug ${ARCH_PREBUILT_DIRS_DEBUG}/xxhash.lib +# optimized ${ARCH_PREBUILT_DIRS_RELEASE}/xxhash.lib) +# else() +# target_link_libraries( ll::xxhash INTERFACE xxhash) +# endif() + + target_include_directories( ll::xxhash SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/xxhash) diff --git a/indra/cmake/XmlRpcEpi.cmake b/indra/cmake/XmlRpcEpi.cmake index 6409f9d6e26..db6d77b71cd 100644 --- a/indra/cmake/XmlRpcEpi.cmake +++ b/indra/cmake/XmlRpcEpi.cmake @@ -7,5 +7,14 @@ add_library( ll::xmlrpc-epi INTERFACE IMPORTED ) use_system_binary( xmlrpc-epi ) use_prebuilt_binary(xmlrpc-epi) -target_link_libraries(ll::xmlrpc-epi INTERFACE xmlrpc-epi ) +if (WINDOWS) + target_compile_definitions( ll::xmlrpc-epi INTERFACE XMLRPCEPI_STATIC=1) + target_link_libraries(ll::xmlrpc-epi INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/xmlrpc-epid.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/xmlrpc-epi.lib) +else() + target_link_libraries(ll::xmlrpc-epi INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libxmlrpc-epi.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libxmlrpc-epi.a) +endif (WINDOWS) target_include_directories( ll::xmlrpc-epi SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/ZLIBNG.cmake b/indra/cmake/ZLIBNG.cmake index 5d99cd97099..0ea1ed065b4 100644 --- a/indra/cmake/ZLIBNG.cmake +++ b/indra/cmake/ZLIBNG.cmake @@ -1,6 +1,7 @@ # -*- cmake -*- include(Prebuilt) +include(ZSTD) include_guard() add_library( ll::zlib-ng INTERFACE IMPORTED ) @@ -12,11 +13,50 @@ endif() use_prebuilt_binary(zlib-ng) if (WINDOWS) - target_link_libraries( ll::zlib-ng INTERFACE zlib ) + target_link_libraries( ll::zlib-ng INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/zlibd.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/zlib.lib) +elseif (LINUX) + target_link_libraries( ll::zlib-ng INTERFACE + ${ARCH_PREBUILT_DIRS}/libz.a) else() - target_link_libraries( ll::zlib-ng INTERFACE z ) + target_link_libraries( ll::zlib-ng INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libz.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libz.a) endif (WINDOWS) -if( NOT LINUX ) - target_include_directories( ll::zlib-ng SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/zlib-ng) +if(LINUX) + target_include_directories( ll::zlib-ng SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) +else() + target_include_directories( ll::zlib-ng SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/zlib) +endif() + +add_library( ll::minizip-ng INTERFACE IMPORTED ) + +if(USE_CONAN ) + target_link_libraries( ll::minizip-ng INTERFACE CONAN_PKG::minizip-ng ) + return() endif() + +use_prebuilt_binary(minizip-ng) +if (WINDOWS) + target_link_libraries( ll::minizip-ng INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/minizip.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/minizip.lib + ll::zstd + ll::zlib-ng) +elseif (LINUX) + target_link_libraries( ll::minizip-ng INTERFACE + ${ARCH_PREBUILT_DIRS}/libminizip.a + ll::zstd + ll::zlib-ng) +else() + target_link_libraries( ll::minizip-ng INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libminizip.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libminizip.a + ll::zstd + ll::zlib-ng) +endif (WINDOWS) + +target_include_directories( ll::minizip-ng SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/minizip) + diff --git a/indra/cmake/ZSTD.cmake b/indra/cmake/ZSTD.cmake new file mode 100644 index 00000000000..f10d8d76cea --- /dev/null +++ b/indra/cmake/ZSTD.cmake @@ -0,0 +1,27 @@ +# -*- cmake -*- + +include(Prebuilt) + +include_guard() +add_library( ll::zstd INTERFACE IMPORTED ) + +if(USE_CONAN ) + target_link_libraries( ll::zstd INTERFACE CONAN_PKG::zlib ) + return() +endif() + +use_prebuilt_binary(zstd) +if (WINDOWS) + target_link_libraries( ll::zstd INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/zstd_static.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/zstd_static.lib) +elseif (LINUX) + target_link_libraries( ll::zstd INTERFACE + ${ARCH_PREBUILT_DIRS}/libzstd.a) +else() + target_link_libraries( ll::zstd INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libzstd.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libzstd.a) +endif (WINDOWS) + +target_include_directories( ll::zstd SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/bugsplat.cmake b/indra/cmake/bugsplat.cmake deleted file mode 100644 index 509981d72cd..00000000000 --- a/indra/cmake/bugsplat.cmake +++ /dev/null @@ -1,41 +0,0 @@ -if (INSTALL_PROPRIETARY) - # Note that viewer_manifest.py makes decision based on BUGSPLAT_DB and not USE_BUGSPLAT - if (BUGSPLAT_DB) - set(USE_BUGSPLAT ON CACHE BOOL "Use the BugSplat crash reporting system") - else (BUGSPLAT_DB) - set(USE_BUGSPLAT OFF CACHE BOOL "Use the BugSplat crash reporting system") - endif (BUGSPLAT_DB) -else (INSTALL_PROPRIETARY) - set(USE_BUGSPLAT OFF CACHE BOOL "Use the BugSplat crash reporting system") -endif (INSTALL_PROPRIETARY) - -include_guard() -add_library( ll::bugsplat INTERFACE IMPORTED ) - -if (USE_BUGSPLAT) - include(Prebuilt) - use_prebuilt_binary(bugsplat) - if (WINDOWS) - target_link_libraries( ll::bugsplat INTERFACE - ${ARCH_PREBUILT_DIRS_RELEASE}/bugsplat.lib - ) - target_include_directories( ll::bugsplat SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/bugsplat) - elseif (DARWIN) - find_library(BUGSPLAT_LIBRARIES BugsplatMac REQUIRED - NO_DEFAULT_PATH PATHS "${ARCH_PREBUILT_DIRS_RELEASE}") - target_link_libraries( ll::bugsplat INTERFACE - ${BUGSPLAT_LIBRARIES} - ) - else (WINDOWS) - message(FATAL_ERROR "BugSplat is not supported; add -DUSE_BUGSPLAT=OFF") - endif (WINDOWS) - - if( NOT BUGSPLAT_DB ) - message( FATAL_ERROR "You need to set BUGSPLAT_DB when setting USE_BUGSPLAT" ) - endif() - - set_property( TARGET ll::bugsplat APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS LL_BUGSPLAT) -else() - set(BUGSPLAT_DB "" CACHE STRING "BugSplat crash database name") -endif (USE_BUGSPLAT) - diff --git a/indra/cmake/xxHash.cmake b/indra/cmake/xxHash.cmake deleted file mode 100644 index a7c1cba62c9..00000000000 --- a/indra/cmake/xxHash.cmake +++ /dev/null @@ -1,8 +0,0 @@ -# -*- cmake -*- -if (XXHASH_CMAKE_INCLUDED) - return() -endif (XXHASH_CMAKE_INCLUDED) -set (XXHASH_CMAKE_INCLUDED TRUE) - -include(Prebuilt) -use_prebuilt_binary(xxhash) diff --git a/indra/copy_win_scripts/start-client.py b/indra/copy_win_scripts/start-client.py index c6f045349b9..f3579a1e71c 100755 --- a/indra/copy_win_scripts/start-client.py +++ b/indra/copy_win_scripts/start-client.py @@ -29,7 +29,7 @@ def usage(): print("""start-client.py - + --grid --farm --region @@ -52,20 +52,20 @@ def start_client(grid, slurl, build_config, my_args): # Figure out path stuff. # The client should run from indra/newview # but the exe is at indra/build-/newview/ - build_path = os.path.dirname(os.getcwd()); + build_path = os.path.dirname(os.getcwd()); f = open("start-client.log", "w") print("Viewer startup arguments:", file=f) - llstart.start("viewer", "../../newview", - "%s/newview/%s/secondlife-bin.exe" % (build_path, build_config), + llstart.start("viewer", "../../newview", + "%s/newview/%s/alchemy-bin.exe" % (build_path, build_config), viewer_args, f) f.close() if __name__ == "__main__": grid = llstart.get_config("grid") - - if grid == None: + + if grid is None: grid = "aditi" - + build_config = llstart.get_config("build_config") my_args = llstart.get_config("viewer_args", force_dict = True) opts, args = getopt.getopt(sys.argv[1:], "u:r:f:g:i:h", @@ -79,14 +79,14 @@ def start_client(grid, slurl, build_config, my_args): if o in ("-h", "--help"): usage() sys.exit(0) - - slurl = llstart.get_config("slurl") - if slurl == None: + + slurl = llstart.get_config("slurl") + if slurl is None: if region is None: region = llstart.get_user_name() slurl = "//%s/128/128/" % (region) # Ensure the slurl has quotes around it. if slurl is not None: slurl = '"%s"' % (slurl.strip('"\'')) - + start_client(grid, slurl, build_config, my_args) diff --git a/indra/deps/CMakeLists.txt b/indra/deps/CMakeLists.txt new file mode 100644 index 00000000000..cd074bc23a2 --- /dev/null +++ b/indra/deps/CMakeLists.txt @@ -0,0 +1,73 @@ + +project(deps) + +include(00-Common) +include(FetchContent) +include(UI) + +set(CMAKE_FOLDER "Third Party") +set(CMAKE_POLICY_DEFAULT_CMP0063 NEW) +set(CMAKE_POLICY_DEFAULT_CMP0069 NEW) +set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) + +set(deps_SOURCE_FILES + CMakeLists.txt + ) + +set_source_files_properties(${deps_SOURCE_FILES} + PROPERTIES HEADER_FILE_ONLY TRUE) + +add_library(deps + ../cmake/cmake_dummy.cpp + ${deps_SOURCE_FILES} + ) + +FetchContent_Declare( + meshoptimizer + GIT_REPOSITORY https://github.com/zeux/meshoptimizer.git + GIT_TAG v0.22 + GIT_SHALLOW TRUE + GIT_PROGRESS TRUE + ) +FetchContent_Declare( + fmt + GIT_REPOSITORY https://github.com/fmtlib/fmt.git + GIT_TAG 11.1.0 + GIT_SHALLOW TRUE + GIT_PROGRESS TRUE + ) + +# #Download the rest of the libraries +FetchContent_MakeAvailable(fmt) + +set(MESHOPT_BUILD_SHARED_LIBS OFF) +FetchContent_MakeAvailable(meshoptimizer) + +if(USE_TRACY) + FetchContent_Declare ( + tracy + GIT_REPOSITORY https://github.com/wolfpld/tracy.git + GIT_TAG v0.10 + GIT_SHALLOW TRUE + GIT_PROGRESS TRUE + ) + set(TRACY_ON_DEMAND ON) + set(TRACY_ONLY_LOCALHOST ON) + set(TRACY_FIBERS ON) + FetchContent_MakeAvailable(tracy) +endif() + +if(USE_NFD) + FetchContent_Declare( + nfd + GIT_REPOSITORY https://github.com/btzy/nativefiledialog-extended.git + GIT_TAG v1.1.1 + GIT_SHALLOW TRUE + GIT_PROGRESS TRUE + ) + + set(NFD_PORTAL ON) + FetchContent_MakeAvailable(nfd) +endif() + +unset(CMAKE_FOLDER) diff --git a/indra/doxygen/CMakeLists.txt b/indra/doxygen/CMakeLists.txt index 616b5cd09c9..6c403327664 100644 --- a/indra/doxygen/CMakeLists.txt +++ b/indra/doxygen/CMakeLists.txt @@ -1,16 +1,8 @@ # -*- cmake -*- -# cmake_minimum_required should appear before any -# other commands to guarantee full compatibility -# with the version specified -## prior to 2.8, the add_custom_target commands used in setting the version did not work correctly cmake_minimum_required(VERSION 3.8.0 FATAL_ERROR) -set(ROOT_PROJECT_NAME "SecondLife" CACHE STRING - "The root project/makefile/solution name. Defaults to SecondLife.") -project(${ROOT_PROJECT_NAME}) - -set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") +project(doxygen) include(Variables) diff --git a/indra/doxygen/Doxyfile.in b/indra/doxygen/Doxyfile.in index 6881595c2ee..cb7f8670d73 100644 --- a/indra/doxygen/Doxyfile.in +++ b/indra/doxygen/Doxyfile.in @@ -1,96 +1,137 @@ -# Doxyfile 1.6.3 +# Doxyfile 1.9.1 # This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project +# doxygen (www.doxygen.org) for a project. # -# All text after a hash (#) is considered a comment and will be ignored +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. # The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See -# http://www.gnu.org/software/libiconv for the list of possible encodings. +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. PROJECT_NAME = "@VIEWER_CHANNEL@" -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. PROJECT_NUMBER = @VIEWER_SHORT_VERSION@.@VIEWER_VERSION_REVISION@ -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@ -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = YES -CREATE_SUBDIRS = NO +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. OUTPUT_LANGUAGE = English -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. +# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all generated output in the proper direction. +# Possible values are: None, LTR, RTL and Context. +# The default value is: None. + +OUTPUT_TEXT_DIRECTION = None + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. BRIEF_MEMBER_DESC = YES -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. +# The default value is: YES. REPEAT_BRIEF = YES -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief +# doxygen will generate a detailed section even if there is only a brief # description. +# The default value is: NO. ALWAYS_DETAILED_SEC = NO @@ -98,481 +139,720 @@ ALWAYS_DETAILED_SEC = NO # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. +# The default value is: NO. INLINE_INHERITED_MEMB = NO -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. FULL_PATH_NAMES = YES -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = @DOXYGEN_TOP_SRC_DIR@ -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. STRIP_FROM_INC_PATH = -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. SHORT_NAMES = NO -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. JAVADOC_AUTOBRIEF = NO -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. QT_AUTOBRIEF = NO -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. MULTILINE_CPP_IS_BRIEF = NO -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. +# By default Python docstrings are displayed as preformatted text and doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. INHERIT_DOCS = YES -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. SEPARATE_MEMBER_PAGES = NO -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 4 -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines (in the resulting output). You can put ^^ in the value part of an +# alias to insert a newline as if a physical newline was in the original file. +# When you need a literal { or } or , in the value part of an alias you have to +# escape them by means of a backslash (\), this can lead to conflicts with the +# commands \{ and \} for these it is advised to use the version @{ and @} or use +# a double escape (\\{ and \\}) ALIASES = -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. OPTIMIZE_OUTPUT_FOR_C = NO -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for -# Java. For instance, namespaces will be presented as packages, qualified -# scopes will look different, etc. +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources only. Doxygen will then generate output that is more tailored for -# Fortran. +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for -# VHDL. +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. OPTIMIZE_OUTPUT_VHDL = NO -# Doxygen selects the parser to use depending on the extension of the files it parses. -# With this tag you can assign which parser to use for a given extension. -# Doxygen has a built-in mapping, but you can override or extend it using this tag. -# The format is ext=language, where ext is a file extension, and language is one of -# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, -# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat -# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), -# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL, +# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. EXTENSION_MAPPING = +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. +# The default value is: NO. BUILTIN_STL_SUPPORT = YES # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. +# The default value is: NO. CPP_CLI_SUPPORT = NO -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. -# Doxygen will parse them like normal C++ but will assume all classes use public -# instead of private inheritance when no explicit protection keyword is present. +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. SIP_SUPPORT = NO -# For Microsoft's IDL there are propget and propput attributes to indicate getter -# and setter methods for a property. Setting this option to YES (the default) -# will make doxygen to replace the get and set methods by a property in the -# documentation. This will only work if the methods are indeed getting or -# setting a simple type. If this is not the case, or you want to show the -# methods anyway, you should set this option to NO. +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first +# tag is set to YES then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. +# The default value is: NO. DISTRIBUTE_GROUP_DOC = NO -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. SUBGROUPING = YES -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum -# is documented as struct, union, or enum with the name of the typedef. So +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically -# be useful for C code in case the coding convention dictates that all compound +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. TYPEDEF_HIDES_STRUCT = YES -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penality. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will rougly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols - -SYMBOL_CACHE_SIZE = 2 +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use +# during processing. When set to 0 doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which efficively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. EXTRACT_ALL = NO -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. EXTRACT_PRIVATE = NO -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. EXTRACT_STATIC = YES -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. EXTRACT_LOCAL_CLASSES = YES -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base -# name of the file that contains the anonymous namespace. By default -# anonymous namespace are hidden. +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. EXTRACT_ANON_NSPACES = NO -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. HIDE_UNDOC_MEMBERS = NO -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. HIDE_UNDOC_CLASSES = NO -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the # documentation. +# The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. HIDE_IN_BODY_DOCS = NO -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. INTERNAL_DOCS = NO -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. +# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and MacOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# The default value is: system dependent. CASE_SENSE_NAMES = NO -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. HIDE_SCOPE_NAMES = NO -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. SHOW_INCLUDE_FILES = YES -# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen -# will list include files with double quotes in the documentation -# rather than with sharp brackets. +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. FORCE_LOCAL_INCLUDES = NO -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. INLINE_INFO = YES -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. SORT_MEMBER_DOCS = NO -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. SORT_BRIEF_DOCS = NO -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. SORT_MEMBERS_CTORS_1ST = NO -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the -# hierarchy of group names into alphabetical order. If set to NO (the default) -# the group names will appear in their defined order. +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. SORT_GROUP_NAMES = NO -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. SORT_BY_SCOPE_NAME = NO -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. GENERATE_TODOLIST = YES -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. GENERATE_TESTLIST = NO -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. GENERATE_BUGLIST = NO -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. GENERATE_DEPRECATEDLIST= YES -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. -ENABLED_SECTIONS = +ENABLED_SECTIONS = -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. MAX_INITIALIZER_LINES = 30 -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the # list will mention the files that were used to generate the documentation. +# The default value is: YES. SHOW_USED_FILES = NO -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. -# This will remove the Files entry from the Quick Index and from the -# Folder Tree View (if specified). The default is YES. +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. SHOW_FILES = YES -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the -# Namespaces page. -# This will remove the Namespaces entry from the Quick Index -# and from the Folder Tree View (if specified). The default is YES. +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. FILE_VERSION_FILTER = -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by -# doxygen. The layout file controls the global structure of the generated output files -# in an output format independent way. The create the layout file that represents -# doxygen's defaults, run doxygen with the -l option. You can optionally specify a -# file name after the option, if omitted DoxygenLayout.xml will be used as the name -# of the layout file. +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. LAYOUT_FILE = +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + #--------------------------------------------------------------------------- -# configuration options related to warning and progress messages +# Configuration options related to warning and progress messages #--------------------------------------------------------------------------- -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. QUIET = YES # The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. WARNINGS = YES -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. WARN_IF_UNDOCUMENTED = YES -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. WARN_IF_DOC_ERROR = YES -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. If +# EXTRACT_ALL is set to YES then this flag will automatically be disabled. +# The default value is: NO. WARN_NO_PARAMDOC = NO -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the doxygen process doxygen will return with a non-zero status. +# Possible values are: NO, YES and FAIL_ON_WARNINGS. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). WARN_LOGFILE = @CMAKE_CURRENT_BINARY_DIR@/doxygen_warnings.log #--------------------------------------------------------------------------- -# configuration options related to the input files +# Configuration options related to the input files #--------------------------------------------------------------------------- -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. INPUT = @CMAKE_CURRENT_SOURCE_DIR@/../../indra ## TODO We would like to also have the includes from @CMAKE_CURRENT_BINARY_DIR@/packages/include @@ -580,672 +860,1254 @@ INPUT = @CMAKE_CURRENT_SOURCE_DIR@/../../indra ## generation of doxygen docs, and install them in a modular way that we can connect. See TAGS # This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is -# also the default input encoding. Doxygen uses libiconv (or the iconv built -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for -# the list of possible encodings. +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# The default value is: UTF-8. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), +# *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, *.vhdl, +# *.ucf, *.qsf and *.ice. FILE_PATTERNS = -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. RECURSIVE = YES -# The EXCLUDE tag can be used to specify files and/or directories that should +# The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. EXCLUDE = -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded # from the input. +# The default value is: NO. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* -EXCLUDE_PATTERNS = */test/* */tests/* +EXCLUDE_PATTERNS = */test/* \ + */tests/* # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). EXAMPLE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/../../doc # If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. EXAMPLE_RECURSIVE = NO -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. -# If FILTER_PATTERNS is specified, this tag will be -# ignored. +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. -# Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. -# The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. FILTER_SOURCE_FILES = NO +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + #--------------------------------------------------------------------------- -# configuration options related to source browsing +# Configuration options related to source browsing #--------------------------------------------------------------------------- -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. SOURCE_BROWSER = YES -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. INLINE_SOURCES = NO -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. STRIP_CODE_COMMENTS = YES -# If the REFERENCED_BY_RELATION tag is set to YES -# then for each documented function all documented -# functions referencing it will be listed. +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. REFERENCED_BY_RELATION = YES -# If the REFERENCES_RELATION tag is set to YES -# then for each documented function all documented entities -# called/used by that function will be listed. +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. REFERENCES_RELATION = NO -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. -# Otherwise they will link to the documentation. +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. REFERENCES_LINK_SOURCE = YES -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index +# Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. ALPHABETICAL_INDEX = YES -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = LL +IGNORE_PREFIX = LL AL #--------------------------------------------------------------------------- -# configuration options related to the HTML output +# Configuration options related to the HTML output #--------------------------------------------------------------------------- -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. GENERATE_HTML = YES -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = html -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a # standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_STYLESHEET = +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting -# this to NO can help when comparing the output of multiple runs. +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = NO -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. -HTML_ALIGN_MEMBERS = YES +HTML_DYNAMIC_MENUS = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = NO - -# If the GENERATE_DOCSET tag is set to YES, additional index files -# will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 (Leopard). -# To create a documentation set, doxygen will generate a Makefile in the -# HTML output directory. Running make will produce the docset in that -# directory and running "make install" will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find -# it at startup. -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = YES + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. ## TODO? + GENERATE_DOCSET = NO -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the -# feed. A documentation feed provides an umbrella under which multiple -# documentation sets from a single provider (such as a company or product suite) -# can be grouped. +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDNAME = "Doxygen generated docs" -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that -# should uniquely identify the documentation set bundle. This should be a -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen -# will append .docset to the name. +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. -DOCSET_BUNDLE_ID = com.lindenlab.SecondLifeViewer +DOCSET_BUNDLE_ID = org.alchemyviewer.viewer -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.alchemyviewer.docs + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = "Alchemy Development Group" + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: +# https://www.microsoft.com/en-us/download/details.aspx?id=21138) on Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = NO -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be # written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_FILE = -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING -# is used to encode HtmlHelp index (hhk), content (hhc) and project file -# content. +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = NO -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER -# are set, an additional index file will be generated that can be used as input for -# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated -# HTML documentation. +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_QHP = NO -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can -# be used to specify the file name of the resulting .qch file. -# The path specified is relative to the HTML output folder. +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. QCH_FILE = -# The QHP_NAMESPACE tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#namespace +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. -QHP_NAMESPACE = com.lindenlab.SecondLifeViewer +QHP_NAMESPACE = org.alchemyviewer.viewer -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#virtual-folders +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. QHP_VIRTUAL_FOLDER = doc -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. -# For more information please see -# http://doc.trolltech.com/qthelpproject.html#custom-filters +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see -# Qt Help Project / Custom Filters. +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's -# filter section matches. -# Qt Help Project / Filter Attributes. +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can -# be used to specify the location of Qt's qhelpgenerator. -# If non-empty doxygen will try to run qhelpgenerator on the generated -# .qhp file. +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files -# will be generated, which together with the HTML files, form an Eclipse help -# plugin. To install this plugin and make it available under the help contents -# menu in Eclipse, the contents of the directory containing the HTML and XML -# files needs to be copied into the plugins directory of eclipse. The name of -# the directory within the plugins directory should be the same as -# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before the help appears. +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_ECLIPSEHELP = NO -# A unique identifier for the eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have -# this name. +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. -ECLIPSE_DOC_ID = com.lindenlab.SecondLifeViewer +ECLIPSE_DOC_ID = org.alchemyviewer.viewer -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. -DISABLE_INDEX = NO +DISABLE_INDEX = YES -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. ENUM_VALUES_PER_LINE = 4 -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. -# If the tag value is set to YES, a side panel will be generated -# containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). -# Windows users are probably better off using the HTML help feature. +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. -GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. -USE_INLINE_TREES = NO +EXT_LINKS_IN_WINDOW = NO -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. -TREEVIEW_WIDTH = 250 +HTML_FORMULA_FORMAT = png -# Use this tag to change the font size of Latex formulas included -# as images in the HTML documentation. The default is 10. Note that -# when you change the font size after a successful doxygen run you need -# to manually remove any form_*.png images from the HTML output directory -# to force them to be regenerated. +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) there is already a search function so this one should -# typically be disabled. For large projects the javascript based search engine -# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. +# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2 + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /