pax_global_header00006660000000000000000000000064141742441700014516gustar00rootroot0000000000000052 comment=bf10e49b29ac51a6c6f0caa1cdac7c6d1154d670 TileDB-2.6.2/000077500000000000000000000000001417424417000126305ustar00rootroot00000000000000TileDB-2.6.2/.appveyor.yml000066400000000000000000000053361417424417000153050ustar00rootroot00000000000000version: '{build}' image: - Visual Studio 2017 environment: TILEDB_S3: false build_script: - ps: >- mkdir build cd build $env:Path += ";C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin" if ($env:TILEDB_S3 -eq "true") { ..\bootstrap.ps1 -EnableS3 -EnableVerbose -EnableStaticTileDB ..\scripts\install-minio.ps1 } else { ..\bootstrap.ps1 -EnableVerbose -EnableStaticTileDB } if ($LastExitCode -ne 0) { Write-Host "Bootstrap failed." $host.SetShouldExit($LastExitCode) } cmake --build . --config Release -- /verbosity:minimal if ($LastExitCode -ne 0) { Write-Host "Build failed." $host.SetShouldExit($LastExitCode) } test_script: - ps: >- cd $env:APPVEYOR_BUILD_FOLDER\build\tiledb cmake --build . --target check --config Release -- /verbosity:minimal if ($LastExitCode -ne 0) { Write-Host "Tests failed." $host.SetShouldExit($LastExitCode) } cmake --build . --target examples --config Release -- /verbosity:minimal if ($LastExitCode -ne 0) { Write-Host "Examples failed to build." $host.SetShouldExit($LastExitCode) } cmake --build . --target install --config Release if ($LastExitCode -ne 0) { Write-Host "Installation failed." $host.SetShouldExit($LastExitCode) } $env:Path += ";$env:APPVEYOR_BUILD_FOLDER\dist\bin;..\externals\install\bin" try { .\examples\c_api\Release\quickstart_dense_c.exe } catch { Write-Host "C API example failed." $host.SetShouldExit(1) } if ($LastExitCode -ne 0) { Write-Host "C API example failed." $host.SetShouldExit($LastExitCode) } else { # Remove the output directory created by the example rm -Recurse -Force quickstart_dense } try { .\examples\cpp_api\Release\quickstart_dense_cpp.exe } catch { Write-Host "C++ API example failed." $host.SetShouldExit(1) } if ($LastExitCode -ne 0) { Write-Host "C++ API example failed." $host.SetShouldExit($LastExitCode) } cd $env:APPVEYOR_BUILD_FOLDER\examples\cmake_project mkdir build cd build cmake -A X64 -DCMAKE_PREFIX_PATH=$env:APPVEYOR_BUILD_FOLDER\dist .. cmake --build . --config Release -- /verbosity:minimal .\Release\ExampleExe.exe .\Release\ExampleExe_static.exe cd $env:APPVEYOR_BUILD_FOLDER\build mkdir dist mv ..\dist dist\tiledb-windows-x64 cd dist 7z a tiledb-windows-x64.zip tiledb-windows-x64 for: - branches: only: - master - dev artifacts: - path: build\dist\tiledb-windows-x64.zip name: tiledb-windows-x64.zip TileDB-2.6.2/.clang-format000066400000000000000000000053261417424417000152110ustar00rootroot00000000000000--- Language: Cpp # BasedOnStyle: Google AccessModifierOffset: -1 AlignAfterOpenBracket: AlwaysBreak AlignConsecutiveAssignments: false AlignConsecutiveDeclarations: false AlignEscapedNewlinesLeft: true AlignOperands: true AlignTrailingComments: true AllowAllParametersOfDeclarationOnNextLine: true AllowShortBlocksOnASingleLine: false AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: None AllowShortIfStatementsOnASingleLine: false AllowShortLoopsOnASingleLine: false AlwaysBreakAfterDefinitionReturnType: None AlwaysBreakAfterReturnType: None AlwaysBreakBeforeMultilineStrings: true AlwaysBreakTemplateDeclarations: true BinPackArguments: false BinPackParameters: false BraceWrapping: AfterClass: false AfterControlStatement: false AfterEnum: false AfterFunction: false AfterNamespace: false AfterObjCDeclaration: false AfterStruct: false AfterUnion: false BeforeCatch: false BeforeElse: false IndentBraces: false BreakBeforeBinaryOperators: None BreakBeforeBraces: Attach BreakBeforeTernaryOperators: false BreakConstructorInitializersBeforeComma: true BreakAfterJavaFieldAnnotations: false BreakStringLiterals: true ColumnLimit: 80 CommentPragmas: '^ IWYU pragma:' BreakBeforeInheritanceComma: false ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerIndentWidth: 4 ContinuationIndentWidth: 4 Cpp11BracedListStyle: true DerivePointerAlignment: false DisableFormat: false ExperimentalAutoDetectBinPacking: false FixNamespaceComments: true ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] IncludeCategories: - Regex: '^<.*\.h>' Priority: 1 - Regex: '^<.*' Priority: 2 - Regex: '.*' Priority: 3 IncludeIsMainRegex: '([-_](test|unittest))?$' IndentCaseLabels: true IndentWidth: 2 IndentWrappedFunctionNames: false JavaScriptQuotes: Leave JavaScriptWrapImports: true KeepEmptyLinesAtTheStartOfBlocks: false MacroBlockBegin: '' MacroBlockEnd: '' MaxEmptyLinesToKeep: 1 NamespaceIndentation: None PenaltyBreakBeforeFirstCallParameter: 1 PenaltyBreakComment: 300 PenaltyBreakFirstLessLess: 120 PenaltyBreakString: 1000 PenaltyExcessCharacter: 1000000 PenaltyReturnTypeOnItsOwnLine: 200 PointerAlignment: Left ReflowComments: true SortIncludes: true SpaceAfterCStyleCast: false SpaceAfterTemplateKeyword: true SpaceBeforeAssignmentOperators: true SpaceBeforeParens: ControlStatements SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 2 SpacesInAngles: false SpacesInContainerLiterals: true SpacesInCStyleCastParentheses: false SpacesInParentheses: false SpacesInSquareBrackets: false Standard: Cpp11 TabWidth: 8 UseTab: Never ... TileDB-2.6.2/.dockerignore000066400000000000000000000000621417424417000153020ustar00rootroot00000000000000build builds scripts !scripts/capnpupdate.sh .git TileDB-2.6.2/.github/000077500000000000000000000000001417424417000141705ustar00rootroot00000000000000TileDB-2.6.2/.github/pull_request_template.md000066400000000000000000000002551417424417000211330ustar00rootroot00000000000000 --- TYPE: NO_HISTORY | FEATURE | BUG | IMPROVEMENT | DEPRECATION | C_API | CPP_API | BREAKING_BEHAVIOR | BREAKING_API | FORMAT DESC: TileDB-2.6.2/.github/workflows/000077500000000000000000000000001417424417000162255ustar00rootroot00000000000000TileDB-2.6.2/.github/workflows/backport.yml000066400000000000000000000004221417424417000205530ustar00rootroot00000000000000name: Backport on: pull_request: types: - closed - labeled jobs: backport: runs-on: ubuntu-18.04 name: Backport steps: - name: Backport uses: tibdex/backport@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} TileDB-2.6.2/.github/workflows/build-dockerfile.yml000066400000000000000000000004431417424417000221550ustar00rootroot00000000000000name: Build-Dockerfile on: pull_request jobs: build-dockerfile: runs-on: ubuntu-20.04 steps: - name: Check out the repository uses: actions/checkout@v2 - name: Build the Dockerfile run: docker build -f examples/Dockerfile/Dockerfile -t tiledb:dev . TileDB-2.6.2/.github/workflows/build-docs.yml000066400000000000000000000017611417424417000210020ustar00rootroot00000000000000name: build-docs on: push: pull_request: jobs: build: runs-on: ubuntu-20.04 if: ${{ startsWith(github.ref , 'refs/tags') != true && startsWith(github.ref , 'build-') != true }} timeout-minutes: 90 name: Build Docs steps: - uses: actions/checkout@v2 - name: 'Print env' run: | echo "'uname -s' is:" echo "uname: " $(uname) echo "uname -m: " $(uname -m) echo "uname -r:" $(uname -r) echo "uname -s: " $(uname -s) echo "uname -v: " $(uname -v) printenv shell: bash - name: Install Doxygen (linux only) run: | set -e pipefail # Install doxygen *before* running cmake sudo apt-get install -y doxygen shell: bash if: ${{ runner.os == 'Linux' }} - name: Build Doxygen Docs (linux only)' run: | source $GITHUB_WORKSPACE/scripts/ci/build_docs.sh shell: bash if: ${{ runner.os == 'Linux' }} TileDB-2.6.2/.github/workflows/build-macOS11-GCS.yml000066400000000000000000000045721417424417000216330ustar00rootroot00000000000000name: build-macos-11-GCS on: push: branches: - dev - release-* - refs/tags/* pull_request: branches: - '*' # must quote since "*" is a YAML reserved character; we want a string env: BACKWARDS_COMPATIBILITY_ARRAYS: OFF TILEDB_GCS: ON TILEDB_STATIC: OFF CXX: g++ jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: - macos-11 if: ${{ startsWith(github.ref , 'refs/tags') != true && startsWith(github.ref , 'build-') != true }} timeout-minutes: 90 name: Build - macos-10.14 - GCS steps: - uses: actions/checkout@v2 - name: 'Print env' run: | echo "'uname -s' is:" echo "uname: " $(uname) echo "uname -m: " $(uname -m) echo "uname -r:" $(uname -r) echo "uname -s: " $(uname -s) echo "uname -v: " $(uname -v) printenv shell: bash # Need this for virtualenv and arrow tests if enabled - uses: actions/setup-python@v2 with: python-version: '3.8' - run: | set -e pipefail python -m pip install --upgrade pip virtualenv pip install pyarrow pybind11 numpy shell: bash - name: 'Build and test libtiledb' id: test run: | # Start GCS Emulator if GCS is enabled source scripts/install-gcs-emu.sh; source scripts/run-gcs-emu.sh; bootstrap_args="${bootstrap_args} --enable-gcs"; source $GITHUB_WORKSPACE/scripts/ci/build_libtiledb.sh # GCS unit tests are temporarily unsupported on CI for MacOS. Fake success with # this echo. echo ::set-output name=TILEDB_CI_SUCCESS::1 source $GITHUB_WORKSPACE/scripts/ci/build_benchmarks.sh - name: 'Test status check' run: | # tiledb_unit is configured to set a job-level variable TILEDB_CI_SUCCESS=1 # following the test run. If this variable is not set, the build should fail. # see https://github.com/TileDB-Inc/TileDB/pull/1400 (5f0623f4d3) if [[ "${{ steps.test.outputs.TILEDB_CI_SUCCESS }}" -ne 1 ]]; then exit 1; fi # - name: "Print log files (failed build only)" run: | source $GITHUB_WORKSPACE/scripts/ci/print_logs.sh if: ${{ failure() }} # only run this job if the build step failed TileDB-2.6.2/.github/workflows/build-macOS11-S3.yml000066400000000000000000000061221417424417000214750ustar00rootroot00000000000000name: build-macos-11-S3 on: push: branches: - dev - release-* - refs/tags/* pull_request: branches: - '*' # must quote since "*" is a YAML reserved character; we want a string env: BACKWARDS_COMPATIBILITY_ARRAYS: OFF TILEDB_S3: ON TILEDB_STATIC: OFF TILEDB_TOOLS: ON CXX: g++ jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: - macos-11 if: ${{ startsWith(github.ref , 'refs/tags') != true && startsWith(github.ref , 'build-') != true }} timeout-minutes: 90 name: Build - macos-10.14 - S3 steps: - uses: actions/checkout@v2 - name: 'Print env' run: | echo "'uname -s' is:" echo "uname: " $(uname) echo "uname -m: " $(uname -m) echo "uname -r:" $(uname -r) echo "uname -s: " $(uname -s) echo "uname -v: " $(uname -v) printenv shell: bash # Need this for virtualenv and arrow tests if enabled - uses: actions/setup-python@v2 with: python-version: '3.8' - run: | set -e pipefail python -m pip install --upgrade pip virtualenv shell: bash - name: 'Install system headers (OSX 10.14 only)' run: | set -e pipefail open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -allowUntrusted -target / shell: bash if: ${{ runner.os == 'macOS' && env.imageName == 'macOS-10.14' }} - name: 'Build and test libtiledb' id: test run: | # Start minio server if S3 is enabled source scripts/install-minio.sh; source scripts/run-minio.sh; bootstrap_args="${bootstrap_args} --enable-s3"; bootstrap_args="${bootstrap_args} --enable-tools"; source $GITHUB_WORKSPACE/scripts/ci/build_libtiledb.sh ./tiledb/test/tiledb_unit -d yes | awk '/1: ::set-output/{sub(/.*1: /, ""); print; next} 1' # Kill the running Minio server, OSX only because Linux runs it within # docker. kill -n 9 $MINIO_PID pushd $GITHUB_WORKSPACE/examples/cmake_project mkdir build && cd build cmake -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/dist .. && make ./ExampleExe popd source $GITHUB_WORKSPACE/scripts/ci/build_benchmarks.sh - name: 'Test status check' run: | # tiledb_unit is configured to set a job-level variable TILEDB_CI_SUCCESS=1 # following the test run. If this variable is not set, the build should fail. # see https://github.com/TileDB-Inc/TileDB/pull/1400 (5f0623f4d3) if [[ "${{ steps.test.outputs.TILEDB_CI_SUCCESS }}" -ne 1 ]]; then exit 1; fi - name: "Print log files (failed build only)" run: | source $GITHUB_WORKSPACE/scripts/ci/print_logs.sh if: ${{ failure() }} # only run this job if the build step failed TileDB-2.6.2/.github/workflows/build-ubuntu16.04-HDFS.yml000066400000000000000000000064111417424417000225040ustar00rootroot00000000000000name: build-ubuntu-20.04-HDFS on: push: branches: - dev - release-* - refs/tags/* pull_request: branches: - '*' # must quote since "*" is a YAML reserved character; we want a string env: BACKWARDS_COMPATIBILITY_ARRAYS: OFF TILEDB_HDFS: ON CXX: g++-9 CC: gcc-9 jobs: build: runs-on: ubuntu-20.04 if: ${{ startsWith(github.ref , 'refs/tags') != true && startsWith(github.ref , 'build-') != true }} timeout-minutes: 90 name: Build - ubuntu-20.04 - HDFS steps: - uses: actions/checkout@v2 - name: 'Print env' run: | echo "'uname -s' is:" echo "uname: " $(uname) echo "uname -m: " $(uname -m) echo "uname -r:" $(uname -r) echo "uname -s: " $(uname -s) echo "uname -v: " $(uname -v) printenv shell: bash # Need this for virtualenv and arrow tests if enabled - uses: actions/setup-python@v2 with: python-version: '3.8' - run: | set -e pipefail python -m pip install --upgrade pip virtualenv shell: bash - name: 'Build and test libtiledb' id: test run: | set -exo pipefail # - run: | # Start HDFS server if enabled # - ssh to localhost is required for HDFS launch... # - /home/vsts has permissions g+w and is owned by user 'docker' # for VSTS purposes, so disable ssh strictness sudo sed -i.bak 's/StrictModes\ yes/StrictModes\ no/g' /etc/ssh/sshd_config source scripts/install-hadoop.sh source scripts/run-hadoop.sh bootstrap_args=" --enable-hdfs"; source $GITHUB_WORKSPACE/scripts/ci/build_libtiledb.sh # Bypass Catch2 Framework stdout interception with awk on test output # make check | awk '/1: ::set-output/{sub(/.*1: /, ""); print; next} 1' ./tiledb/test/tiledb_unit -d yes | awk '/1: ::set-output/{sub(/.*1: /, ""); print; next} 1' pushd $GITHUB_WORKSPACE/examples/cmake_project mkdir build && cd build cmake -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/dist .. && make ./ExampleExe popd # Build and run the PNG ingestion example. # libpng (example dependency) sudo apt-get install libpng-dev pushd $GITHUB_WORKSPACE/examples/png_ingestion; mkdir build && cd build; cmake -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/dist .. && make; ./tiledb_png $GITHUB_WORKSPACE/doc/source/figures/Scarlet-Macaw-small.png /tmp/pngarray output.png; popd; source $GITHUB_WORKSPACE/scripts/ci/build_benchmarks.sh - name: 'Test status check' run: | # tiledb_unit is configured to set a job-level variable TILEDB_CI_SUCCESS=1 # following the test run. If this variable is not set, the build should fail. # see https://github.com/TileDB-Inc/TileDB/pull/1400 (5f0623f4d3) if [[ "${{ steps.test.outputs.TILEDB_CI_SUCCESS }}" -ne 1 ]]; then exit 1; fi - name: "Print log files (failed build only)" run: | source $GITHUB_WORKSPACE/scripts/ci/print_logs.sh if: ${{ failure() }} # only run this job if the build step failed TileDB-2.6.2/.github/workflows/build-ubuntu20.04-AZURE.yml000066400000000000000000000076011417424417000226430ustar00rootroot00000000000000name: build-ubuntu-20.04-AZURE on: push: branches: - dev - release-* - refs/tags/* pull_request: branches: - '*' # must quote since "*" is a YAML reserved character; we want a string env: BACKWARDS_COMPATIBILITY_ARRAYS: OFF TILEDB_AZURE: ON TILEDB_STATIC: OFF TILEDB_ARROW_TESTS: ON CXX: g++ jobs: build: runs-on: ubuntu-20.04 if: ${{ startsWith(github.ref , 'refs/tags') != true && startsWith(github.ref , 'build-') != true }} timeout-minutes: 90 name: Build - ubuntu-20.04 - AZURE steps: - uses: actions/checkout@v2 - name: 'Print env' run: | echo "'uname -s' is:" echo "uname: " $(uname) echo "uname -m: " $(uname -m) echo "uname -r:" $(uname -r) echo "uname -s: " $(uname -s) echo "uname -v: " $(uname -v) printenv shell: bash # Need this for virtualenv and arrow tests if enabled - uses: actions/setup-python@v2 with: python-version: '3.8' - run: | set -e pipefail python -m pip install --upgrade pip virtualenv pip install pyarrow pybind11 numpy shell: bash - name: 'Build and test libtiledb' id: test run: | # Azure sets "SYSTEM=build" for unknown reasonas, which breaks the OpenSSL configure script # - openssl configure uses ENV{SYSTEM} if available: # https://github.com/openssl/openssl/blob/6d745d740d37d680ff696486218b650512bbbbc6/config#L56 # - error description: # https://developercommunity.visualstudio.com/content/problem/602584/openssl-build-error-when-using-pipelines.htm unset SYSTEM # azure run does not treat intermediate failure as error # https://github.com/Microsoft/azure-pipelines-yaml/issues/135 set -e pipefail git config --global user.name 'Azure Pipeline' git config --global user.email 'no-reply@tiledb.io' # Start Azurite - Azure is enabled source scripts/install-azurite.sh; source scripts/run-azurite.sh; bootstrap_args="${bootstrap_args} --enable-azure"; source $GITHUB_WORKSPACE/scripts/ci/build_libtiledb.sh # Bypass Catch2 Framework stdout interception with awk on test output # make check | awk '/1: ::set-output/{sub(/.*1: /, ""); print; next} 1' ./tiledb/test/tiledb_unit -d yes | awk '/1: ::set-output/{sub(/.*1: /, ""); print; next} 1' # Kill the running Azurite server kill -n 9 $AZURITE_PID # - bash: | pushd $GITHUB_WORKSPACE/examples/cmake_project mkdir build && cd build cmake -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/dist .. && make ./ExampleExe popd # Build and run the PNG ingestion example. # libpng (example dependency) sudo apt-get install libpng-dev pushd $GITHUB_WORKSPACE/examples/png_ingestion; mkdir build && cd build; cmake -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/dist .. && make; ./tiledb_png $GITHUB_WORKSPACE/doc/source/figures/Scarlet-Macaw-small.png /tmp/pngarray output.png; popd; source $GITHUB_WORKSPACE/scripts/ci/build_benchmarks.sh - name: 'Test status check' run: | # tiledb_unit is configured to set a job-level variable TILEDB_CI_SUCCESS=1 # following the test run. If this variable is not set, the build should fail. # see https://github.com/TileDB-Inc/TileDB/pull/1400 (5f0623f4d3) if [[ "${{ steps.test.outputs.TILEDB_CI_SUCCESS }}" -ne 1 ]]; then exit 1; fi - name: "Print log files (failed build only)" run: | source $GITHUB_WORKSPACE/scripts/ci/print_logs.sh if: ${{ failure() }} # only run this job if the build step failedTileDB-2.6.2/.github/workflows/build-ubuntu20.04-GCS.yml000066400000000000000000000050411417424417000223650ustar00rootroot00000000000000name: build-ubuntu-20.04-GCS on: push: branches: - dev - release-* - refs/tags/* pull_request: branches: - '*' # must quote since "*" is a YAML reserved character; we want a string env: BACKWARDS_COMPATIBILITY_ARRAYS: OFF TILEDB_GCS: ON TILEDB_STATIC: OFF CXX: g++ jobs: build: runs-on: ubuntu-20.04 if: ${{ startsWith(github.ref , 'refs/tags') != true && startsWith(github.ref , 'build-') != true }} timeout-minutes: 90 name: Build - ubuntu-20.04 - GCS steps: - uses: actions/checkout@v2 - name: 'Print env' run: | echo "'uname -s' is:" echo "uname: " $(uname) echo "uname -m: " $(uname -m) echo "uname -r:" $(uname -r) echo "uname -s: " $(uname -s) echo "uname -v: " $(uname -v) printenv shell: bash # Need this for virtualenv and arrow tests if enabled - uses: actions/setup-python@v2 with: python-version: '3.8' - run: | set -e pipefail python -m pip install --upgrade pip virtualenv pip install pyarrow pybind11 numpy shell: bash - name: 'Build and test libtiledb' id: test run: | # Start GCS Emulator if GCS is enabled source scripts/install-gcs-emu.sh; source scripts/run-gcs-emu.sh; bootstrap_args="${bootstrap_args} --enable-gcs"; source $GITHUB_WORKSPACE/scripts/ci/build_libtiledb.sh # Bypass Catch2 Framework stdout interception with awk on test output # make check | awk '/1: ::set-output/{sub(/.*1: /, ""); print; next} 1' ./tiledb/test/tiledb_unit -d yes | awk '/1: ::set-output/{sub(/.*1: /, ""); print; next} 1' # Kill the running GCS emulator server Linux only because OSX does not # run the emulator kill -9 $GCS_PID source $GITHUB_WORKSPACE/scripts/ci/build_benchmarks.sh - name: 'Test status check' run: | # tiledb_unit is configured to set a job-level variable TILEDB_CI_SUCCESS=1 # following the test run. If this variable is not set, the build should fail. # see https://github.com/TileDB-Inc/TileDB/pull/1400 (5f0623f4d3) if [[ "${{ steps.test.outputs.TILEDB_CI_SUCCESS }}" -ne 1 ]]; then exit 1; fi - name: "Print log files (failed build only)" run: | source $GITHUB_WORKSPACE/scripts/ci/print_logs.sh if: ${{ failure() }} # only run this job if the build step failedTileDB-2.6.2/.github/workflows/build-ubuntu20.04-S3.yml000066400000000000000000000057151417424417000222460ustar00rootroot00000000000000name: build-ubuntu-20.04-S3 on: push: branches: - dev - release-* - refs/tags/* pull_request: branches: - '*' # must quote since "*" is a YAML reserved character; we want a string env: BACKWARDS_COMPATIBILITY_ARRAYS: OFF TILEDB_STATIC: OFF TILEDB_TOOLS: ON CXX: g++ jobs: build: runs-on: ubuntu-20.04 if: ${{ startsWith(github.ref , 'refs/tags') != true && startsWith(github.ref , 'build-') != true }} timeout-minutes: 90 name: Build - ubuntu-20.04 - S3 steps: - uses: actions/checkout@v2 - name: 'Print env' run: | echo "'uname -s' is:" echo "uname: " $(uname) echo "uname -m: " $(uname -m) echo "uname -r:" $(uname -r) echo "uname -s: " $(uname -s) echo "uname -v: " $(uname -v) printenv shell: bash # Need this for virtualenv and arrow tests if enabled - uses: actions/setup-python@v2 with: python-version: '3.8' - run: | set -e pipefail python -m pip install --upgrade pip virtualenv shell: bash - name: 'Build and test libtiledb' id: test run: | # Start minio server if S3 is enabled source scripts/install-minio.sh; source scripts/run-minio.sh; bootstrap_args="${bootstrap_args} --enable-s3"; bootstrap_args="${bootstrap_args} --enable-tools"; source $GITHUB_WORKSPACE/scripts/ci/build_libtiledb.sh # make sure docker is still running... printenv docker ps -a ./tiledb/test/tiledb_unit -d yes | awk '/1: ::set-output/{sub(/.*1: /, ""); print; next} 1' pushd $GITHUB_WORKSPACE/examples/cmake_project mkdir build && cd build cmake -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/dist .. && make ./ExampleExe popd # Build and run the PNG ingestion example. # libpng (example dependency) sudo apt-get install libpng-dev pushd $GITHUB_WORKSPACE/examples/png_ingestion; mkdir build && cd build; cmake -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/dist .. && make; ./tiledb_png $GITHUB_WORKSPACE/doc/source/figures/Scarlet-Macaw-small.png /tmp/pngarray output.png; popd; source $GITHUB_WORKSPACE/scripts/ci/build_benchmarks.sh - name: 'Test status check' run: | # tiledb_unit is configured to set a job-level variable TILEDB_CI_SUCCESS=1 # following the test run. If this variable is not set, the build should fail. # see https://github.com/TileDB-Inc/TileDB/pull/1400 (5f0623f4d3) if [[ "${{ steps.test.outputs.TILEDB_CI_SUCCESS }}" -ne 1 ]]; then exit 1; fi - name: "Print log files (failed build only)" run: | source $GITHUB_WORKSPACE/scripts/ci/print_logs.sh if: ${{ failure() }} # only run this job if the build step failedTileDB-2.6.2/.github/workflows/build-ubuntu20.04-SERIALIZATION.yml000066400000000000000000000056471417424417000240020ustar00rootroot00000000000000name: build-ubuntu-20.04-SERIALIZATION on: push: branches: - dev - release-* - refs/tags/* pull_request: branches: - '*' # must quote since "*" is a YAML reserved character; we want a string env: TILEDB_SERIALIZATION: ON # NOTE: currently defined directly inline CXX: g++ BACKWARDS_COMPATIBILITY_ARRAYS: ON jobs: build: runs-on: ubuntu-20.04 if: ${{ startsWith(github.ref , 'refs/tags') != true && startsWith(github.ref , 'build-') != true }} timeout-minutes: 120 name: Build - ubuntu-20.04 - SERIALIZATION steps: - uses: actions/checkout@v2 - name: 'Print env' run: | echo "'uname -s' is:" echo "uname: " $(uname) echo "uname -m: " $(uname -m) echo "uname -r:" $(uname -r) echo "uname -s: " $(uname -s) echo "uname -v: " $(uname -v) printenv shell: bash # Need this for virtualenv and arrow tests if enabled - uses: actions/setup-python@v2 with: python-version: '3.8' - run: | set -e pipefail python -m pip install --upgrade pip virtualenv shell: bash - name: 'Build and test libtiledb' id: test run: | bootstrap_args="${bootstrap_args} --enable-serialization"; source $GITHUB_WORKSPACE/scripts/ci/build_libtiledb.sh # Bypass Catch2 Framework stdout interception with awk on test output # make check | awk '/1: ::set-output/{sub(/.*1: /, ""); print; next} 1' ./tiledb/test/tiledb_unit -d yes | awk '/1: ::set-output/{sub(/.*1: /, ""); print; next} 1' # - bash: | pushd $GITHUB_WORKSPACE/examples/cmake_project mkdir build && cd build cmake -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/dist .. && make ./ExampleExe popd # Build and run the PNG ingestion example. # libpng (example dependency) sudo apt-get install libpng-dev pushd $GITHUB_WORKSPACE/examples/png_ingestion; mkdir build && cd build; cmake -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/dist .. && make; ./tiledb_png $GITHUB_WORKSPACE/doc/source/figures/Scarlet-Macaw-small.png /tmp/pngarray output.png; popd; source $GITHUB_WORKSPACE/scripts/ci/build_benchmarks.sh - name: 'Test status check' run: | # tiledb_unit is configured to set a job-level variable TILEDB_CI_SUCCESS=1 # following the test run. If this variable is not set, the build should fail. # see https://github.com/TileDB-Inc/TileDB/pull/1400 (5f0623f4d3) if [[ "${{ steps.test.outputs.TILEDB_CI_SUCCESS }}" -ne 1 ]]; then exit 1; fi - name: "Print log files (failed build only)" run: | source $GITHUB_WORKSPACE/scripts/ci/print_logs.sh if: ${{ failure() }} # only run this job if the build step failed TileDB-2.6.2/.github/workflows/build-ubuntu20.04-backwards-compatibility.yml000066400000000000000000000063551417424417000265720ustar00rootroot00000000000000name: build-ubuntu-20.04-backwards-compatibility on: push: pull_request: env: CXX: g++ jobs: build: runs-on: ubuntu-20.04 if: ${{ startsWith(github.ref , 'refs/tags') != true && startsWith(github.ref , 'build-') != true }} strategy: matrix: # Note: v2_1_0 arrays were never created so its currently skipped tiledb_version: ["v1_4_0", "v1_5_0", "v1_6_0", "v1_7_0", "v2_0_0", "v2_2_0", "v2_2_3", "v2_3_0", "v2_4_0"] timeout-minutes: 120 name: Ubuntu-20.04-back-comp steps: - uses: actions/checkout@v2 - name: 'Print env' run: | echo "'uname -s' is:" echo "uname: " $(uname) echo "uname -m: " $(uname -m) echo "uname -r:" $(uname -r) echo "uname -s: " $(uname -s) echo "uname -v: " $(uname -v) printenv shell: bash env: TILEDB_COMPATIBILITY_VERSION: ${{ matrix.tiledb_version }} # Need this for virtualenv and arrow tests if enabled - uses: actions/setup-python@v2 with: python-version: '3.8' - run: | set -e pipefail python -m pip install --upgrade pip virtualenv shell: bash - name: 'Build and test libtiledb' env: TILEDB_COMPATIBILITY_VERSION: ${{ matrix.tiledb_version }} id: test run: | git clone https://github.com/TileDB-Inc/TileDB-Unit-Test-Arrays.git --branch 2.5.0 test/inputs/arrays/read_compatibility_test # Remove all arrays besides the current matrix version ls test/inputs/arrays/read_compatibility_test/ | grep -v ${TILEDB_COMPATIBILITY_VERSION} | grep -v "__tiledb_group.tdb" | xargs -I{} echo "rm -r test/inputs/arrays/read_compatibility_test/{}" ls test/inputs/arrays/read_compatibility_test/ | grep -v ${TILEDB_COMPATIBILITY_VERSION} | grep -v "__tiledb_group.tdb" | xargs -I{} rm -r test/inputs/arrays/read_compatibility_test/{} rm -r test/inputs/arrays/read_compatibility_test/.git rm test/inputs/arrays/read_compatibility_test/.gitignore ls -lah test/inputs/arrays/read_compatibility_test/ ls -lah test/inputs/arrays/read_compatibility_test/${TILEDB_COMPATIBILITY_VERSION}/ # name: 'Clone Unit-Test-Arrays' bootstrap_args="${bootstrap_args}"; source $GITHUB_WORKSPACE/scripts/ci/build_libtiledb.sh # Bypass Catch2 Framework stdout interception with awk on test output # make check | awk '/1: ::set-output/{sub(/.*1: /, ""); print; next} 1' ./tiledb/test/tiledb_unit -d yes "[backwards-compat]"| awk '/1: ::set-output/{sub(/.*1: /, ""); print; next} 1' - name: 'Test status check' run: | # tiledb_unit is configured to set a job-level variable TILEDB_CI_SUCCESS=1 # following the test run. If this variable is not set, the build should fail. # see https://github.com/TileDB-Inc/TileDB/pull/1400 (5f0623f4d3) if [[ "${{ steps.test.outputs.TILEDB_CI_SUCCESS }}" -ne 1 ]]; then exit 1; fi - name: "Print log files (failed build only)" run: | source $GITHUB_WORKSPACE/scripts/ci/print_logs.sh if: ${{ failure() }} # only run this job if the build step failed TileDB-2.6.2/.github/workflows/check-formatting.yml000066400000000000000000000014321417424417000221750ustar00rootroot00000000000000name: check-formatting on: push: pull_request: jobs: build: runs-on: ubuntu-20.04 if: ${{ startsWith(github.ref , 'refs/tags') != true && startsWith(github.ref , 'build-') != true }} timeout-minutes: 90 name: Check Clang Format steps: - uses: actions/checkout@v2 - name: 'Print env' run: | echo "'uname -s' is:" echo "uname: " $(uname) echo "uname -m: " $(uname -m) echo "uname -r:" $(uname -r) echo "uname -s: " $(uname -s) echo "uname -v: " $(uname -v) printenv shell: bash - name: Check formatting (linux only)' run: | source $GITHUB_WORKSPACE/scripts/ci/check_formatting_linux.sh shell: bash if: ${{ runner.os == 'Linux' }} TileDB-2.6.2/.github/workflows/check-heap-memory-api-violations.yml000066400000000000000000000015221417424417000252020ustar00rootroot00000000000000name: check-heap-memory-api-violations on: push: pull_request: jobs: build: runs-on: ubuntu-20.04 if: ${{ startsWith(github.ref , 'refs/tags') != true && startsWith(github.ref , 'build-') != true }} timeout-minutes: 90 name: Check Heap Memory Violations steps: - uses: actions/checkout@v2 - name: 'Print env' run: | echo "'uname -s' is:" echo "uname: " $(uname) echo "uname -m: " $(uname -m) echo "uname -r:" $(uname -r) echo "uname -s: " $(uname -s) echo "uname -v: " $(uname -v) printenv shell: bash - name: Check Heap Memory API Violations (linux only)' run: | set -e pipefail python scripts/find_heap_api_violations.py tiledb shell: bash if: ${{ runner.os == 'Linux' }} TileDB-2.6.2/.github/workflows/check-pr-body.yml000066400000000000000000000005461417424417000214040ustar00rootroot00000000000000name: Check PR body on: pull_request: types: [opened, edited] jobs: check_pr_body: runs-on: ubuntu-20.04 steps: - name: Check out the repository uses: actions/checkout@v2 - name: Run PR body checker run: | cat <<'EOF' | scripts/parse_pr.py ${{ github.event.pull_request.body }} EOF TileDB-2.6.2/.github/workflows/mingw-w64-tiledb/000077500000000000000000000000001417424417000212255ustar00rootroot00000000000000TileDB-2.6.2/.github/workflows/mingw-w64-tiledb/PKGBUILD000066400000000000000000000026671417424417000223640ustar00rootroot00000000000000_realname=tiledb pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=2.9000 pkgrel=1 pkgdesc="Storage management library for sparse and dense array data (mingw-w64)" arch=("any") url="https://tiledb.com/" license=("MIT") depends=("${MINGW_PACKAGE_PREFIX}-lz4" "${MINGW_PACKAGE_PREFIX}-aws-sdk-cpp" "${MINGW_PACKAGE_PREFIX}-bzip2" "${MINGW_PACKAGE_PREFIX}-zlib" "${MINGW_PACKAGE_PREFIX}-zstd") makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-curl") options=("staticlibs" "strip") source_dir="$TILEDB_HOME" build() { [[ -d ${source_dir}/build-${MINGW_CHOST} ]] && rm -rf ${source_dir}/build-${MINGW_CHOST} mkdir -p ${source_dir}/build-${MINGW_CHOST} && cd ${source_dir}/build-${MINGW_CHOST} if [ "$CARCH" == "i686" ]; then export CFLAGS="-mfpmath=sse -msse2" export CXXFLAGS="-mfpmath=sse -msse2" fi export MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" ${MINGW_PREFIX}/bin/cmake.exe \ -G"MSYS Makefiles" \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_BUILD_TYPE=Release \ -DTILEDB_STATIC=ON \ -DTILEDB_S3=ON \ -DCOMPILER_SUPPORTS_AVX2=OFF \ .. make make -C tiledb } package() { cd ${source_dir}/build-${MINGW_CHOST} make DESTDIR="${pkgdir}" -C tiledb install } check (){ cd ${source_dir}/build-${MINGW_CHOST} #make check } TileDB-2.6.2/.github/workflows/msys2.yml000066400000000000000000000021041417424417000200220ustar00rootroot00000000000000name: msys2 on: push: pull_request: jobs: build: runs-on: windows-latest strategy: matrix: include: [ { msystem: MINGW64, toolchain: x86_64 }, { msystem: MINGW32, toolchain: i686 }, { msystem: ucrt64, toolchain: "ucrt-x86_64" } ] fail-fast: false env: TILEDB_HOME: ${{ github.workspace }} MINGW_INSTALLS: ${{ matrix.msystem }} MINGW_ARCH: ${{ matrix.msystem }} MINGW_TOOLCHAIN: ${{ matrix.toolchain }} PACMAN_REPOSITORY: ${{ matrix.msystem }} steps: - name: Prepare git run: git config --global core.autocrlf false - uses: actions/checkout@v2 with: fetch-depth: 1 - uses: msys2/setup-msys2@v2 with: msystem: ${{ matrix.msystem }} install: mingw-w64-${{ matrix.toolchain }}-toolchain make patch update: true - name: Building TileDB run: cd .github/workflows/mingw-w64-tiledb && makepkg-mingw --noconfirm --syncdeps env: PKGEXT: ".pkg.tar.xz" shell: msys2 {0} TileDB-2.6.2/.github/workflows/prepare-release.yml000066400000000000000000000021421417424417000220230ustar00rootroot00000000000000name: Prepare new release on: workflow_dispatch: inputs: version: description: 'New version to be released' required: true branch: description: 'Release branch' required: true jobs: prepare_release: runs-on: ubuntu-20.04 steps: - name: Check out the repository uses: actions/checkout@v2 with: ref: ${{ github.event.inputs.branch }} token: ${{ secrets.GITHUB_TOKEN }} - name: Install dependencies run: pip install PyGithub - name: Update version and history run: python ./scripts/prepare_release.py ${{ github.event.inputs.version }} --token="${{ secrets.GITHUB_TOKEN }}" - name: Commit and push updates uses: test-room-7/action-update-file@v1 with: branch: ${{ github.event.inputs.branch }} file-path: | HISTORY.md doc/source/conf.py tiledb/sm/c_api/tiledb_version.h commit-msg: "${{ github.event.inputs.version }} release notes, version update" github-token: ${{ secrets.GITHUB_TOKEN }} TileDB-2.6.2/.github/workflows/rtools40.yml000066400000000000000000000020331417424417000204340ustar00rootroot00000000000000name: rtools40 on: push: pull_request: jobs: build: runs-on: windows-latest strategy: matrix: include: [ { msystem: MINGW64, toolchain: x86_64 }, { msystem: MINGW32, toolchain: i686 }, { msystem: ucrt64, toolchain: "ucrt-x86_64" } ] fail-fast: false steps: - name: Prepare git run: git config --global core.autocrlf false - uses: actions/checkout@v2 with: fetch-depth: 1 - name: Building TileDB with Rtools40 run: | cd ${GITHUB_WORKSPACE}/.github/workflows/mingw-w64-tiledb pacman -Sy makepkg-mingw --noconfirm --syncdeps env: TILEDB_HOME: ${{ github.workspace }} MINGW_INSTALLS: ${{ matrix.msystem }} shell: c:\rtools40\usr\bin\bash.exe --login {0} - name: "Upload binaries" uses: actions/upload-artifact@v2 with: name: mingw-w64-${{ matrix.msystem }}-tiledb path: .github/workflows/mingw-w64-tiledb/*.pkg.tar.* TileDB-2.6.2/.github/workflows/unit-test-runs.yml000066400000000000000000000036021417424417000216720ustar00rootroot00000000000000name: unit-test-standalone on: push: pull_request: env: BACKWARDS_COMPATIBILITY_ARRAYS: OFF TILEDB_S3: OFF TILEDB_AZURE: OFF TILEDB_GCS: OFF TILEDB_SERIALIZATION: OFF TILEDB_STATIC: OFF TILEDB_TOOLS: ON jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [macos-latest, ubuntu-latest, ubuntu-latest] name: Build - ${{ matrix.os }} steps: - uses: actions/checkout@v2 - name: 'Print env' run: | echo "'uname -s' is:" echo "uname: " $(uname) echo "uname -m: " $(uname -m) echo "uname -r:" $(uname -r) echo "uname -s: " $(uname -s) echo "uname -v: " $(uname -v) printenv shell: bash - name: 'Install system headers (OSX 10.14 only)' run: | set -e pipefail open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -allowUntrusted -target / shell: bash if: ${{ runner.os == 'macOS' && env.imageName == 'macOS-10.14' }} - name: 'Build and run interval unit test' id: test run: | mkdir -p $GITHUB_WORKSPACE/build pushd $GITHUB_WORKSPACE/build cmake .. \ -DTILEDB_AZURE=${TILEDB_AZURE}\ -DTILEDB_GCS=${TILEDB_GCS} \ -DTILEDB_S3=${TILEDB_S3} \ -DTILEDB_SERIALIZATION=${TILEDB_SERIALIZATION} make -j4 # Build all unit tests make -C tiledb tests -j4 # Run all unit tests make -C tiledb test ARGS="-R '^unit_'" popd - name: "Print log files (failed build only)" run: | source $GITHUB_WORKSPACE/scripts/ci/print_logs.sh if: ${{ failure() }} # only run this job if the build step failed TileDB-2.6.2/.gitignore000066400000000000000000000010131417424417000146130ustar00rootroot00000000000000.vscode* *.swp build/* dist/* cmake-build-*/* core/bin/* core/obj/* core/lib/* core/include/temp core/src/temp coverage.info test/benchmarking/build/* test/bin/* test/inputs/arrays/read_compatibility_test* test/obj/* test/tiledb_test/* Doxyfile.log doxyfile.inc doxygen/html/ doxygen/latex/ examples/bin/* examples/obj/* scripts/deps-staging/* .idea *temp* *.DS_Store doc/venv doc/source/__pycache__ doc/source/_build doc/source/_sidebar.rst.inc doc/source/gensidebar.pyc examples/cmake_project/build CMakeUserPresets.json TileDB-2.6.2/.readthedocs.yml000066400000000000000000000005351417424417000157210ustar00rootroot00000000000000# Don't build any extra formats formats: [] # Use RTD config version 2 # https://docs.readthedocs.io/en/stable/config-file/v2.html version: 2 sphinx: configuration: doc/source/conf.py python: version: 3.7 install: # this order is important: we need cmake to build doxygen XML for breathe - requirements: doc/source/requirements.txt TileDB-2.6.2/CMakeLists.txt000066400000000000000000000267121417424417000154000ustar00rootroot00000000000000# # CMakeLists.txt # # # The MIT License # # Copyright (c) 2017-2021 TileDB, Inc. # Copyright (c) 2016 MIT and Intel Corporation # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # ############################################################ # CMake setup ############################################################ cmake_minimum_required(VERSION 3.3) ############################################################ # Parse version file # credit: https://stackoverflow.com/a/47084079 file(READ "${CMAKE_CURRENT_SOURCE_DIR}/tiledb/sm/c_api/tiledb_version.h" VERFILE) if (NOT VERFILE) message(FATAL_ERROR "Failed to parse tiledb_version.h!") endif() string(REGEX MATCH "TILEDB_VERSION_MAJOR ([0-9])*" _ ${VERFILE}) set(TILEDB_VERSION_MAJOR ${CMAKE_MATCH_1}) string(REGEX MATCH "TILEDB_VERSION_MINOR ([0-9])*" _ ${VERFILE}) set(TILEDB_VERSION_MINOR ${CMAKE_MATCH_1}) string(REGEX MATCH "TILEDB_VERSION_PATCH ([0-9])*" _ ${VERFILE}) set(TILEDB_VERSION_PATCH ${CMAKE_MATCH_1}) set(TILEDB_VERSION "${TILEDB_VERSION_MAJOR}.${TILEDB_VERSION_MINOR}.${TILEDB_VERSION_PATCH}") ############################################################ # Check for regex characters in the most important paths # fixes https://github.com/TileDB-Inc/TileDB/issues/1799 option(TILEDB_ALLOW_REGEX_CHAR_PATH "If true, allow regex characters in source, build, or install path." FALSE) mark_as_advanced(TILEDB_ALLOW_REGEX_CHAR_PATH) set(REGEX_CHARS "[\\^\\$\\+\\*\\?\\|\\(\\)]") # note: must be escaped, and regex doesn't work with \[\] entries set(REGEX_CHAR_PATH_MSG " contains a REGEX character and may break CMakeList processing. Please use" " a different path, or set TILEDB_ALLOW_REGEX_CHAR_PATH to override.") if (NOT TILEDB_ALLOW_REGEX_CHAR_PATH) if (CMAKE_CURRENT_SOURCE_DIR MATCHES ${REGEX_CHARS}) message(FATAL_ERROR "CMAKE_CURRENT_SOURCE_DIR ${REGEX_CHAR_PATH_MSG}:\n '${CMAKE_CURRENT_SOURCE_DIR}'") elseif (CMAKE_CURRENT_SOURCE_DIR MATCHES ${REGEX_CHARS}) message(FATAL_ERROR "CMAKE_CURRENT_BINARY_DIR ${REGEX_CHAR_PATH_MSG}:\n '${CMAKE_CURRENT_BINARY_DIR}'") elseif (CMAKE_CURRENT_SOURCE_DIR MATCHES ${REGEX_CHARS}) message(FATAL_ERROR "CMAKE_INSTALL_PREFIX ${REGEX_CHAR_PATH_MSG}:\n '${CMAKE_INSTALL_PREFIX}'") endif() endif() ############################################################ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/") set(TILEDB_CMAKE_INPUTS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/cmake/inputs") if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() if(APPLE) # Use @rpath on macOS for building shared libraries. set(CMAKE_MACOSX_RPATH ON) # Don't allow macOS .frameworks to be used for dependencies. set(CMAKE_FIND_FRAMEWORK NEVER) endif() # Set C++17 as required standard for all C++ targets. set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) if(CMAKE_SYSTEM_NAME MATCHES "CYGWIN") # Use GNU extensions under Cygwin set(CMAKE_CXX_EXTENSIONS ON) else() set(CMAKE_CXX_EXTENSIONS OFF) endif() # Set -fvisibility=hidden (or equivalent) flags by default. set(CMAKE_C_VISIBILITY_PRESET hidden) set(CMAKE_CXX_VISIBILITY_PRESET hidden) ############################################################ # Build options ############################################################ # Note: when adding options, make sure to forward them via INHERITED_CMAKE_ARGS # in TileDB-Superbuild.cmake. option(TILEDB_SUPERBUILD "If true, perform a superbuild (builds all missing dependencies)." ON) option(TILEDB_FORCE_ALL_DEPS "If true, force superbuild to download and build all dependencies, even those installed on the system." OFF) option(TILEDB_VERBOSE "Prints TileDB errors with verbosity" OFF) option(TILEDB_S3 "Enables S3/minio support using aws-cpp-sdk" OFF) option(TILEDB_AZURE "Enables Azure Storage support using azure-storage-cpp" OFF) option(TILEDB_GCS "Enables GCS Storage support using google-cloud-cpp" OFF) option(TILEDB_HDFS "Enables HDFS support using the official Hadoop JNI bindings" OFF) option(TILEDB_WERROR "Enables the -Werror flag during compilation." ON) option(TILEDB_CPP_API "Enables building of the TileDB C++ API." ON) option(TILEDB_CMAKE_IDE "(Used for CLion builds). Disables superbuild and sets the EP install dir." OFF) option(TILEDB_STATS "Enables internal TileDB statistics gathering." ON) option(TILEDB_STATIC "Enables building TileDB as a static library." OFF) option(TILEDB_TESTS "If true, enables building the TileDB unit test suite" ON) option(TILEDB_TOOLS "If true, enables building the TileDB tools" OFF) option(TILEDB_SERIALIZATION "If true, enables building with support for query serialization" OFF) option(TILEDB_CCACHE "If true, enables use of 'ccache' (if present)" OFF) option(TILEDB_ARROW_TESTS "If true, enables building the arrow adapter unit tests" OFF) option(TILEDB_LOG_OUTPUT_ON_FAILURE "If true, print error logs if dependency sub-project build fails" ON) option(TILEDB_SKIP_S3AWSSDK_DIR_LENGTH_CHECK "If true, skip check needed path length for awssdk (TILEDB_S3) dependent builds" OFF) set(TILEDB_INSTALL_LIBDIR "" CACHE STRING "If non-empty, install TileDB library to this directory instead of CMAKE_INSTALL_LIBDIR.") # early WIN32 audit of path length for aws sdk build where # insufficient available path length causes sdk build failure. if (WIN32 AND NOT TILEDB_SKIP_S3AWSSDK_DIR_LENGTH_CHECK) if (TILEDB_SUPERBUILD) if (TILEDB_S3) string(LENGTH ${CMAKE_CURRENT_BINARY_DIR} LENGTH_CMAKE_CURRENT_BINARY_DIR) if ( NOT (LENGTH_CMAKE_CURRENT_BINARY_DIR LESS 61)) message(FATAL_ERROR " build directory path likely too long for building awssdk/dependencies!") return() endif() endif() endif() endif() ############################################################ # Superbuild setup ############################################################ # Set the variable used when calling find_package(), find_file() etc. # to determine if NO_DEFAULT_PATH should be passed. if (TILEDB_FORCE_ALL_DEPS) set(TILEDB_DEPS_NO_DEFAULT_PATH NO_DEFAULT_PATH) else() set(TILEDB_DEPS_NO_DEFAULT_PATH) endif() # If this is an in-IDE build, we need to disable the superbuild and explicitly # set the EP base dir. The normal 'cmake && make' process won't need this step, # it is for better CLion support of this superbuild architecture. if (TILEDB_CMAKE_IDE) set(TILEDB_SUPERBUILD OFF) set(TILEDB_EP_BASE "${CMAKE_CURRENT_BINARY_DIR}/externals") endif() # When building static TileDB, we also need to install any static dependencies # built as external projects. set(TILEDB_INSTALL_STATIC_DEPS ${TILEDB_STATIC}) # Perform superbuild config and exit. if (TILEDB_SUPERBUILD) project(TileDB-Superbuild) message(STATUS "Starting TileDB superbuild.") include("cmake/TileDB-Superbuild.cmake") message(STATUS "Install prefix is ${CMAKE_INSTALL_PREFIX}") # The superbuild file incorporates this file as an external project with the # superbuild off. Thus we stop processing this file here, knowing that we'll # come back later. return() endif() project(TileDB) message(STATUS "Starting TileDB regular build.") # Paths to locate the installed external projects. set(TILEDB_EP_SOURCE_DIR "${TILEDB_EP_BASE}/src") set(TILEDB_EP_INSTALL_PREFIX "${TILEDB_EP_BASE}/install") ############################################################ # Compile options/definitions for all targets ############################################################ # Set compiler flags if (MSVC) # We disable some warnings that are not present in gcc/clang -Wall: # C4101: unreferenced local variable # C4146: unary minus operator applied to unsigned type # C4244: conversion warning of floating point to integer type. # C4251: C++ export warning # C4456: local variable hiding previous local variable # C4457: local variable hiding function parameter # C4702: unreachable code # C4800: warning implicit cast int to bool # C4996: deprecation warning about e.g. sscanf. add_compile_options(/W4 /wd4101 /wd4146 /wd4244 /wd4251 /wd4456 /wd4457 /wd4702 /wd4800 /wd4996) # Warnings as errors: if (TILEDB_WERROR) add_compile_options(/WX) endif() # Disable GDI (which we don't need, and causes some macro # re-definition issues if wingdi.h is included) add_compile_options(/DNOGDI) # Add /MPn flag from CMake invocation (if defined). add_compile_options(${MSVC_MP_FLAG}) # Build-specific flags add_compile_options( "$<$:/DDEBUG /Od /Zi /bigobj>" "$<$:/DNDEBUG /Ox>" "$<$:/DNDEBUG /Ox /Zi>" ) else() add_compile_options(-Wall -Wextra) if (TILEDB_WERROR) add_compile_options(-Werror) endif() # Build-specific flags if (CMAKE_BUILD_TYPE MATCHES "Debug") add_compile_options(-DDEBUG -O0 -g3 -ggdb3 -gdwarf-3) elseif (CMAKE_BUILD_TYPE MATCHES "Release") add_compile_options(-DNDEBUG -O3) elseif (CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo") add_compile_options(-DNDEBUG -O3 -g3 -ggdb3 -gdwarf-3) elseif (CMAKE_BUILD_TYPE MATCHES "Coverage") add_compile_options(-DDEBUG -g3 -gdwarf-3 --coverage) endif() # Use -Wno-literal-suffix on Linux with C++ sources. if (NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options($<$:-Wno-literal-suffix>) endif() endif() # Definitions for all targets add_definitions(-D_FILE_OFFSET_BITS=64) # AVX2 flag include(CheckAVX2Support) CheckAVX2Support() if (COMPILER_SUPPORTS_AVX2) add_compile_options(${COMPILER_AVX2_FLAG}) endif() ############################################################ # Enable testing and add subdirectories ############################################################ # Enable testing enable_testing() # Build the TileDB library add_subdirectory(tiledb) # Build examples add_subdirectory(examples) # Build unit tests if (TILEDB_TESTS) add_subdirectory(test) # Add cmake target for "tests" to build all unit tests executables add_custom_target(tests) add_dependencies(tests tiledb_unit) add_dependencies(tests unit_interval) endif() # Build tools if (TILEDB_TOOLS) add_subdirectory(tools) endif() ########################################################### # Uninstall ########################################################### set(CMD "xargs printf -- '-- Uninstalling: %s\\\\n' / ... code changes ... make -C build format make -C build check git commit -a -m "my commit message" git push --set-upstream origin / [Issue a PR from your updated TileDB fork](https://help.github.com/articles/creating-a-pull-request-from-a-fork/) Branch conventions: - `dev` is the development branch of TileDB, all PR's are merged into `dev`. - `master` tracks the latest stable / released version of TileDB. - `release-x.y.z` are major / bugfix release branches of TileDB. Formatting conventions: - 2 spaces per indentation level not tabs - class names use CamelCase - member functions, variables use lowercase with underscores - class member variables use a trailing underscore `foo_` - comments are good, TileDB uses [doxygen](http://www.stack.nl/~dimitri/doxygen/manual/docblocks.html) for class doc strings. - format code using [clang-format](https://clang.llvm.org/docs/ClangFormat.html) ### Pull Requests: - `dev` is the development branch, all PR’s should be rebased on top of the latest `dev` commit. - Commit changes to a local branch. The convention is to use your initials to identify branches: (ex. “Fred Jones†, `fj/my_bugfix_branch`). Branch names should be identifiable and reflect the feature or bug that they want to address / fix. This helps in deleting old branches later. - Make sure the test suite passes by running `make check`. - When ready to submit a PR, `git rebase` the branch on top of the latest `dev` commit. Be sure to squash / cleanup the commit history so that the PR preferably one, or a couple commits at most. Each atomic commit in a PR should be able to pass the test suite. - Run the limiting / code format tooling (`make format`) before submitting a final PR. Make sure that your contribution generally follows the format and naming conventions used by surrounding code. - If the PR changes/adds/removes user-facing API or system behavior (such as API changes), add a note to the `TileDB/HISTORY.md` file. - Submit a PR, writing a descriptive message. If a PR closes an open issue, reference the issue in the PR message (ex. If an issue closes issue number 10, you would write `closes #10`) - Make sure CI (continuous integration) is passing for your PR -- click `Show all checks` in the pull request status box at the bottom of each PR page. The continous integration project pages will also list all recently-built PRs: - [Azure Pipelines](https://dev.azure.com/TileDB-Inc/CI/_build) ### Documentation Pull Requests: - TileDB uses [Sphinx](http://www.sphinx-doc.org/en/master/) as its documentation generator. - Documentation is written in [reStructuredText](http://docutils.sourceforge.net/rst.html) markup. Building the docs locally: $ cd TileDB/doc $ ./local-build.sh This will install all the required packages in a Python virtual environment, and build the docs locally. You can then open the `doc/source/_build/html/index.html` file in your browser. **Note:** If there are additions to the C/C++ API in between builds, rerun bootstrap: $ cd ../build $ ../bootstrap ### Resources * TileDB - [Homepage](https://tiledb.io) - [Documentation](https://docs.tiledb.io/en/latest/) - [Issues](https://github.com/TileDB-Inc/TileDB/issues) - [Forum](https://forum.tiledb.io/) - [Organization](https://github.com/TileDB-Inc/) * Github / Git - [Git cheatsheet](https://services.github.com/on-demand/downloads/github-git-cheat-sheet/) - [Github Documentation](https://help.github.com/) - [Forking a Repo](https://help.github.com/articles/fork-a-repo/) - [More Learning Resources](https://help.github.com/articles/git-and-github-learning-resources/) TileDB-2.6.2/HISTORY.md000066400000000000000000003220601417424417000143160ustar00rootroot00000000000000# TileDB v2.6.2 Release Notes ## Bug fixes * Only initialize REST query strategies once [#2836](https://github.com/TileDB-Inc/TileDB/pull/2836) * Sparse unordered w dups reader: fixing max pos calculation in tile copy. [#2840](https://github.com/TileDB-Inc/TileDB/pull/2840) # TileDB v2.6.1 Release Notes ## Bug fixes * Sparse unordered w/ dups reader: off by one error in query continuation. [#2815](https://github.com/TileDB-Inc/TileDB/pull/2815) * Sparse unordered w dups reader: fixing query continuation with subarray. [#2824](https://github.com/TileDB-Inc/TileDB/pull/2824) ## API additions ### C++ API * tiledb::Array destructor no longer calls ::close for non-owned C ptr [#2823](https://github.com/TileDB-Inc/TileDB/pull/2823) # TileDB v2.6.0 Release Notes ## Improvements * Sparse unordered with dups reader: removing result cell slabs. [#2606](https://github.com/TileDB-Inc/TileDB/pull/2606) * Use as-installed path for TileDBConfig CMake static library imports [#2669](https://github.com/TileDB-Inc/TileDB/pull/2669) * Check error message variable for nullptr before further use [#2634](https://github.com/TileDB-Inc/TileDB/pull/2634) * Fixing str_coord_intersects to use std::basic_string_view. [#2654](https://github.com/TileDB-Inc/TileDB/pull/2654) * Sparse unordered with duplicates reader: cell num fix. [#2636](https://github.com/TileDB-Inc/TileDB/pull/2636) * Sparse unordered with dups reader: fixing initial bound calculation. [#2638](https://github.com/TileDB-Inc/TileDB/pull/2638) * Read_tiles parallelization improvements. [#2644](https://github.com/TileDB-Inc/TileDB/pull/2644) * Sparse global order reader: memory management unit tests. [#2645](https://github.com/TileDB-Inc/TileDB/pull/2645) * Reduce scope of `open_array_for_reads_mtx_` locks [#2681](https://github.com/TileDB-Inc/TileDB/pull/2681) * Sparse refactored readers: better parallelization for tile bitmaps. [#2643](https://github.com/TileDB-Inc/TileDB/pull/2643) * ZStd compressor: allocate one context per thread and re-use. [#2691](https://github.com/TileDB-Inc/TileDB/pull/2691) * Sparse refactored readers: disable filtered buffer tile cache. [#2651](https://github.com/TileDB-Inc/TileDB/pull/2651) * Moving coord_string from returning a std::string to std::basic_string_view. [#2704](https://github.com/TileDB-Inc/TileDB/pull/2704) * Sparse unordered w/ dups reader: tracking cell progress. [#2668](https://github.com/TileDB-Inc/TileDB/pull/2668) * Sparse unordered w/ dups reader: fixing var size overflow adjustment. [#2713](https://github.com/TileDB-Inc/TileDB/pull/2713) * Enable memfs tests that were disabled by mistake [#2648](https://github.com/TileDB-Inc/TileDB/pull/2648) * Add helpful details to memory limit error strings. [#2729](https://github.com/TileDB-Inc/TileDB/pull/2729) * Sparse refactored readers: Better vectorization for tile bitmaps calculations. [#2711](https://github.com/TileDB-Inc/TileDB/pull/2711) * Sort ranges for unordered with duplicate reader and exit comparisons early [#2736](https://github.com/TileDB-Inc/TileDB/pull/2736) * Sparse refactored readers: better vectorization for query condition. [#2737](https://github.com/TileDB-Inc/TileDB/pull/2737) * Use correct frag index in tiles creation for compute_result_space_tiles. [#2741](https://github.com/TileDB-Inc/TileDB/pull/2741) * Use a single uint64 for cell counts [#2749](https://github.com/TileDB-Inc/TileDB/pull/2749) * Array Schema name should be included with cap'n proto serialization [#2696](https://github.com/TileDB-Inc/TileDB/pull/2696) * Add and use blocking resource pool [#2735](https://github.com/TileDB-Inc/TileDB/pull/2735) * Making the allocation part of read_tiles single threaded. [#2753](https://github.com/TileDB-Inc/TileDB/pull/2753) * Sparse unordered w/ dups reader: remove invalid assert. [#2778](https://github.com/TileDB-Inc/TileDB/pull/2778) * Read tiles: fixing preallocation size for var and validity buffers. [#2781](https://github.com/TileDB-Inc/TileDB/pull/2781) * Sparse unordered w/ dups: var buffer overflow on tile continuation fix. [#2777](https://github.com/TileDB-Inc/TileDB/pull/2777) * Determine non overlapping ranges automatically. [#2780](https://github.com/TileDB-Inc/TileDB/pull/2780) * Improve object type detection performance [#2792](https://github.com/TileDB-Inc/TileDB/pull/2792) * patch git+git: to git+https: to avoid GH access failure [#2805](https://github.com/TileDB-Inc/TileDB/pull/2805) ## Deprecations * eliminate usage of std::iterator due to c++17 deprecation [#2675](https://github.com/TileDB-Inc/TileDB/pull/2675) ## Bug fixes * upgrade to blosc 1.21.0 from 1.14.x [#2422](https://github.com/TileDB-Inc/TileDB/pull/2422) * Guard ZStd resource pool to fix initialization race [#2699](https://github.com/TileDB-Inc/TileDB/pull/2699) * [C API] Add missing save_error calls in vfs_ls [#2714](https://github.com/TileDB-Inc/TileDB/pull/2714) * Use fragment array schema for applying query condition to account for schema evolution [#2698](https://github.com/TileDB-Inc/TileDB/pull/2698) * Don't try to read config from uninitialize storage manager [#2771](https://github.com/TileDB-Inc/TileDB/pull/2771) * Fix segfault in new sparse null `QueryCondition` code [#2794](https://github.com/TileDB-Inc/TileDB/pull/2794) * ReaderBase needs to load var sizes [#2809](https://github.com/TileDB-Inc/TileDB/pull/2809) ## API additions ### C API * Add bulk point-range setter tiledb_query_add_point_ranges [#2765](https://github.com/TileDB-Inc/TileDB/pull/2765) * Add experimental query status details API [#2770](https://github.com/TileDB-Inc/TileDB/pull/2770) * Add {set,get}_validity_filter_list [#2798](https://github.com/TileDB-Inc/TileDB/pull/2798) ### C++ API * Backport Query::ctx and Query::array getters from 2.7 [#2754](https://github.com/TileDB-Inc/TileDB/pull/2754) * Add validity_filter_list set/get and missing get tests [#2798](https://github.com/TileDB-Inc/TileDB/pull/2798) # TileDB v2.5.3 Release Notes ## Improvements * Removing unnecessary openssl callback function. [#2705](https://github.com/TileDB-Inc/TileDB/pull/2705) * openssl3 md5 deprecation mitigation [#2716](https://github.com/TileDB-Inc/TileDB/pull/2716) * Sparse refactored reader: change all_tiles_loaded_ to vector of uint8_t. [#2724](https://github.com/TileDB-Inc/TileDB/pull/2724) ## Bug fixes * Properly check and use legacy readers instead of refactored in serialized query. [#2667](https://github.com/TileDB-Inc/TileDB/pull/2667) * Set array URI in cap'n proto object for compatibility with repeated opened array usage in TileDB 2.4 and older. [#2676](https://github.com/TileDB-Inc/TileDB/pull/2676) * Add the compute_mbr_var_func_pointer assignment in Dimension constructor [#2730](https://github.com/TileDB-Inc/TileDB/pull/2730) # TileDB v2.5.2 Release Notes ## Improvements * Provide non-AVX2 build artifact on Linux [#2649](https://github.com/TileDB-Inc/TileDB/pull/2649) * Error out when setting multiple ranges for global layout [#2658](https://github.com/TileDB-Inc/TileDB/pull/2658) ## Bug fixes * Patch AWS sdk for cmake 3.22 support [#2639](https://github.com/TileDB-Inc/TileDB/pull/2639) * Remove assert on memory_used_result_tile_ranges_ in SparseUnorderedWithDupsReader [#2652](https://github.com/TileDB-Inc/TileDB/pull/2652) * Remove tiles that are empty through being filtered with a query condition [#2659](https://github.com/TileDB-Inc/TileDB/pull/2659) * Always load array schemas during array open to find any new array schemas created from array schema evolution [#2613](https://github.com/TileDB-Inc/TileDB/pull/2613) # TileDB v2.5.1 Release Notes ## New features * Disable AVX2 for MSys2 builds used by CRAN [#2614](https://github.com/TileDB-Inc/TileDB/pull/2614) ## Improvements * Clarify error messages in `check_buffers_correctness()` [#2580](https://github.com/TileDB-Inc/TileDB/pull/2580) ## Bug fixes * Fix schema evolution calls on all pre-TileDB 2.4 arrays [#2611](https://github.com/TileDB-Inc/TileDB/pull/2611) * Unordered reads should be allowed for dense arrays [#2608](https://github.com/TileDB-Inc/TileDB/pull/2608) * Fix logger creation on context to be threadsafe [#2625](https://github.com/TileDB-Inc/TileDB/pull/2625) ## API additions ### C++ API * Add C++ API for `Context::last_error()` [#2609](https://github.com/TileDB-Inc/TileDB/pull/2609) # TileDB v2.5.0 Release Notes ## Breaking C API changes * Remove deprecated c-api `tiledb_array_max_buffer_size` and `tiledb_array_max_buffer_size_var` [#2579](https://github.com/TileDB-Inc/TileDB/pull/2579) * Remove deprecated cpp-api `Array::max_buffer_elements` [#2579](https://github.com/TileDB-Inc/TileDB/pull/2579) ## New features * Support upgrading an older version array to the latest version [#2513](https://github.com/TileDB-Inc/TileDB/pull/2513) * Add improved logging support to classes [#2565](https://github.com/TileDB-Inc/TileDB/pull/2565) ## Improvements * Replace Buffer key_ with char key_[32] per shortcut story id 9561 [#2502](https://github.com/TileDB-Inc/TileDB/pull/2502) * Remove support for sparse writes in dense arrays. [#2504](https://github.com/TileDB-Inc/TileDB/pull/2504) * Initial dense refactor. [#2503](https://github.com/TileDB-Inc/TileDB/pull/2503) * More concise cmake output during build [#2512](https://github.com/TileDB-Inc/TileDB/pull/2512) * Sparse refactored readers: fixing looping behavior on large arrays. [#2530](https://github.com/TileDB-Inc/TileDB/pull/2530) * Use sparse global order reader for unordered without duplicates queries. [#2526](https://github.com/TileDB-Inc/TileDB/pull/2526) * Add CMakeUserPresets.json to .gitignore [#2534](https://github.com/TileDB-Inc/TileDB/pull/2534) * Sparse unordered with duplicates reader: support multiple ranges. [#2537](https://github.com/TileDB-Inc/TileDB/pull/2537) * Refactored sparse readers: tile overlap refactor. [#2547](https://github.com/TileDB-Inc/TileDB/pull/2547) * Refactored dense reader: fixing output buffer offsets with multi-ranges. [#2553](https://github.com/TileDB-Inc/TileDB/pull/2553) * Refactored sparse readers: serialization fixes. [#2558](https://github.com/TileDB-Inc/TileDB/pull/2558) * Refactored sparse readers: proper lifetime for tile bitmaps. [#2563](https://github.com/TileDB-Inc/TileDB/pull/2563) * REST scratch buffer is now owned by the query to allow reuse [#2555](https://github.com/TileDB-Inc/TileDB/pull/2555) * Remove default constructor from `Dimension` [#2561](https://github.com/TileDB-Inc/TileDB/pull/2561) * Resource pool: fixing off by one error. [#2567](https://github.com/TileDB-Inc/TileDB/pull/2567) * Splitting config for refactored readers. [#2569](https://github.com/TileDB-Inc/TileDB/pull/2569) * Sparse refactored readers: memory management unit tests. [#2568](https://github.com/TileDB-Inc/TileDB/pull/2568) * Removed all aspects of posix_code from Status [#2571](https://github.com/TileDB-Inc/TileDB/pull/2571) * Fixing pre-loading for tile offsets in various readers. [#2570](https://github.com/TileDB-Inc/TileDB/pull/2570) * Use the new logger in Subarray, SubarrayPartitioner and Consolidator classes. [#2574](https://github.com/TileDB-Inc/TileDB/pull/2574) * Add tiledb_fragment_info_get_schema_name [#2581](https://github.com/TileDB-Inc/TileDB/pull/2581) * Enable CMake AVX2 check [#2591](https://github.com/TileDB-Inc/TileDB/pull/2591) * Adding logging for sparse refactored readers. [#2575](https://github.com/TileDB-Inc/TileDB/pull/2575) * use ROW_MAJOR read paths for unordered reads of Hilbert layout array [#2551](https://github.com/TileDB-Inc/TileDB/pull/2551) ## Bug fixes * Fix the memory leak in store_array_schema in the StorageManager class. [#2480](https://github.com/TileDB-Inc/TileDB/pull/2480) * Fix curl/REST query scratch size to reset after each query is processed. [#2535](https://github.com/TileDB-Inc/TileDB/pull/2535) * Sparse refactored readers: segfault with dimension only reads. [#2539](https://github.com/TileDB-Inc/TileDB/pull/2539) * REST array metadata writes should post with timestamps [#2545](https://github.com/TileDB-Inc/TileDB/pull/2545) * Fix bug in Arrow schema construction [#2554](https://github.com/TileDB-Inc/TileDB/pull/2554) * Replaced `auto& path` with `auto path` [#2560](https://github.com/TileDB-Inc/TileDB/pull/2560) ## API additions ### C API * Expose MBR in Fragment Info API [#2222](https://github.com/TileDB-Inc/TileDB/pull/2222) * Add `tiledb_fragment_info_get_array_schema_name` for fetching array name used by fragment [#2581](https://github.com/TileDB-Inc/TileDB/pull/2581) ### C++ API * Expose MBR in Fragment Info API [#2222](https://github.com/TileDB-Inc/TileDB/pull/2222) * Add `FragmentInfo::array_schema_name` for fetching array name used by fragment [#2581](https://github.com/TileDB-Inc/TileDB/pull/2581) # TileDB v2.4.3 Release Notes ## Bug fixes * Fix segfault in result `ResultTile::coord_string` and `ResultTile::compute_results_sparse` due empty chunk buffer [#2531](https://github.com/TileDB-Inc/TileDB/pull/2531) * Fix memory corruption with empty result set in extra_element mode [#2540](https://github.com/TileDB-Inc/TileDB/pull/2540) * REST array metadata writes should post with timestamps [#2545](https://github.com/TileDB-Inc/TileDB/pull/2545) * Backport fixes for new Sparse Unordered with Duplicate readers from [#2530](https://github.com/TileDB-Inc/TileDB/pull/2530) and [#2538](https://github.com/TileDB-Inc/TileDB/pull/2538) ## API additions # TileDB v2.4.2 Release Notes ## New features * Add support for empty string as query condition value. [#2507](https://github.com/TileDB-Inc/TileDB/pull/2507) ## Improvements * Support writing empty strings for dimensions [#2501](https://github.com/TileDB-Inc/TileDB/pull/2501) * Refactored readers can segfault when multiple contexts are used. [#2525](https://github.com/TileDB-Inc/TileDB/pull/2525) ## Bug fixes * Fix ch10191: check cell_val_num for varlen status instead of result count [#2505](https://github.com/TileDB-Inc/TileDB/pull/2505) * Do not access variables after moving them [#2522](https://github.com/TileDB-Inc/TileDB/pull/2522) * Add try/catch to `tiledb_ctx_alloc` for exception safety [#2527](https://github.com/TileDB-Inc/TileDB/pull/2527) # TileDB v2.4.0 Release Notes ## Disk Format * Store array schemas under `__schema` directory [#2258](https://github.com/TileDB-Inc/TileDB/pull/2258) ## New features * Perform early audit for acceptable aws sdk windows path length [#2260](https://github.com/TileDB-Inc/TileDB/pull/2260) * Support setting via config s3 BucketCannedACL and ObjectCannedACL via SetACL() methods [#2383](https://github.com/TileDB-Inc/TileDB/pull/2383) * Update spdlog dependency to 1.9.0 fixing c++17 compatibility and general improvements [#1973](https://github.com/TileDB-Inc/TileDB/pull/1973) * Added Azure SAS token config support and new config option [#2420](https://github.com/TileDB-Inc/TileDB/pull/2420) * Load all array schemas in storage manager and pass the appropriate schema pointer to each fragment [#2415](https://github.com/TileDB-Inc/TileDB/pull/2415) * First revision of the Interval class [#2417](https://github.com/TileDB-Inc/TileDB/pull/2417) * Add `tiledb_schema_evolution_t` and new apis for schema evolution [#2426](https://github.com/TileDB-Inc/TileDB/pull/2426) * Add `ArraySchemaEvolution` to cpp_api and its unit tests are also added. [#2462](https://github.com/TileDB-Inc/TileDB/pull/2462) * Add c and cpp api functions for getting the array schema of a fragment [#2468](https://github.com/TileDB-Inc/TileDB/pull/2468) * Add capnp serialization and rest support for array schema evolution objects [#2467](https://github.com/TileDB-Inc/TileDB/pull/2467) ## Improvements * `encryption_key` and `encryption_type` parameters have been added to the config; internal APIs now use these parameters to set the key. [#2245](https://github.com/TileDB-Inc/TileDB/pull/2245) * Initial read refactor [#2374](https://github.com/TileDB-Inc/TileDB/pull/2374) * Create class ByteVecValue from typedef [#2368](https://github.com/TileDB-Inc/TileDB/pull/2368) * Encapsulate spdlog.h [#2396](https://github.com/TileDB-Inc/TileDB/pull/2396) * Update OSX target to 10.14 for release artifacts [#2401](https://github.com/TileDB-Inc/TileDB/pull/2401) * Add nullable (and unordered, nullable) support to the smoke test. [#2405](https://github.com/TileDB-Inc/TileDB/pull/2405) * Initial sparse global order reader [#2395](https://github.com/TileDB-Inc/TileDB/pull/2395) * Remove sm.sub_partitioner_memory_budget [#2402](https://github.com/TileDB-Inc/TileDB/pull/2402) * Update the markdown documents for our new version of array schemas [#2416](https://github.com/TileDB-Inc/TileDB/pull/2416) * Sparse global order reader: no more result cell slab copy. [#2411](https://github.com/TileDB-Inc/TileDB/pull/2411) * Sparse global order reader: initial memory budget improvements. [#2413](https://github.com/TileDB-Inc/TileDB/pull/2413) * Optimization of result cell slabs generation for sparse global order reader. [#2414](https://github.com/TileDB-Inc/TileDB/pull/2414) * Remove selective unfiltering. [#2410](https://github.com/TileDB-Inc/TileDB/pull/2410) * Updated Azure Storage Lite SDK to 0.3.0 [#2419](https://github.com/TileDB-Inc/TileDB/pull/2419) * Respect memory budget for sparse global order reader. [#2425](https://github.com/TileDB-Inc/TileDB/pull/2425) * Use newer Azure patch for all platforms to solve missing header error [#2433](https://github.com/TileDB-Inc/TileDB/pull/2433) * increased diag output for differences reported by tiledb_unit (some of which may be reasonable) [#2437](https://github.com/TileDB-Inc/TileDB/pull/2437) * Adjustments to schema evolution new attribute reads [#2484](https://github.com/TileDB-Inc/TileDB/pull/2484) * Change `Quickstart` link in readthedocs/doxygen `index.rst` [#2448](https://github.com/TileDB-Inc/TileDB/pull/2448) * Initial sparse unordered with duplicates reader. [#2441](https://github.com/TileDB-Inc/TileDB/pull/2441) * Add calls to `malloc_trim` on context and query destruction linux to potentially reduce idle memory usage [#2443](https://github.com/TileDB-Inc/TileDB/pull/2443) * Add logger internals for `std::string` and `std::stringstream` for developer convenience [#2454](https://github.com/TileDB-Inc/TileDB/pull/2454) * Allow empty attribute writes. [#2461](https://github.com/TileDB-Inc/TileDB/pull/2461) * Refactored readers: serialization. [#2458](https://github.com/TileDB-Inc/TileDB/pull/2458) * Allow null data pointers for writes. [#2481](https://github.com/TileDB-Inc/TileDB/pull/2481) * Update backwards compatibility arrays for 2.3.0 [#2487](https://github.com/TileDB-Inc/TileDB/pull/2487) ## Deprecations * Deprecate all `*_with_key` APIs. [#2245](https://github.com/TileDB-Inc/TileDB/pull/2245) [#2308](https://github.com/TileDB-Inc/TileDB/pull/2308) [#2412](https://github.com/TileDB-Inc/TileDB/pull/2412) ## Bug fixes * Fix to correctly apply capnproto create_symlink avoidance patch [#2264](https://github.com/TileDB-Inc/TileDB/pull/2264) * The bug for calculating max_size_validity for var_size attribute caused incomplete query [#2266](https://github.com/TileDB-Inc/TileDB/pull/2266) * Always run ASAN with matching compiler versions [#2277](https://github.com/TileDB-Inc/TileDB/pull/2277) * Fix some loop bounds that reference non-existent elements [#2282](https://github.com/TileDB-Inc/TileDB/pull/2282) * Treating `std::vector` like an array; accessing an element that is not present to get its address. [#2276](https://github.com/TileDB-Inc/TileDB/pull/2276) * Fix buffer arguments in unit-curl.cc [#2287](https://github.com/TileDB-Inc/TileDB/pull/2287) * Stop loop iterations within limits of vector being initialized. [#2320](https://github.com/TileDB-Inc/TileDB/pull/2320) * Modify FindCurl_EP.cmake to work for WIN32 -EnableDebug builds [#2319](https://github.com/TileDB-Inc/TileDB/pull/2319) * Fixing test failure because of an uninitialized buffer. [#2386](https://github.com/TileDB-Inc/TileDB/pull/2386) * Change a condition that assumed MSVC was the only compiler for WIN32 [#2388](https://github.com/TileDB-Inc/TileDB/pull/2388) * Fix defects in buffer classes: read, set_offset, advance_offset [#2342](https://github.com/TileDB-Inc/TileDB/pull/2342) * Use CHECK_SAFE() to avoid multi-threaded conflict [#2394](https://github.com/TileDB-Inc/TileDB/pull/2394) * Use tiledb _SAFE() items when overlapping threads may invoke code [#2418](https://github.com/TileDB-Inc/TileDB/pull/2418) * Changes to address issues with default string dimension ranges in query [#2436](https://github.com/TileDB-Inc/TileDB/pull/2436) * Only set cmake policy CMP0076 if cmake version in use knows about it [#2463](https://github.com/TileDB-Inc/TileDB/pull/2463) * Fix handling curl REST request having all data in single call back [#2485](https://github.com/TileDB-Inc/TileDB/pull/2485) * Write queries should post start/end timestamps for REST arrays [#2492](https://github.com/TileDB-Inc/TileDB/pull/2492) ## API additions * Introduce new `tiledb_experimental.h` c-api header for new feature that don't have a stabilized api yet [#2453](https://github.com/TileDB-Inc/TileDB/pull/2453) * Introduce new `tiledb_experimental` cpp-api header for new feature that don't have a stabilized api yet [#2453](https://github.com/TileDB-Inc/TileDB/pull/2462) ### C API * Refactoring [get/set]_buffer APIs [#2315](https://github.com/TileDB-Inc/TileDB/pull/2315) * Add `tiledb_fragment_info_get_array_schema` functions for getting the array schema of a fragment [#2468](https://github.com/TileDB-Inc/TileDB/pull/2468) * Add `tiledb_schema_evolution_t` and new apis for schema evolution [#2426](https://github.com/TileDB-Inc/TileDB/pull/2426) ### C++ API * Refactoring [get/set]_buffer APIs [#2399](https://github.com/TileDB-Inc/TileDB/pull/2399) * Add `FragmentInfo::array_schema` functions for getting the array schema of a fragment [#2468](https://github.com/TileDB-Inc/TileDB/pull/2468) * Add `ArraySchemaEvolution` to cpp_api and its unit tests are also added. [#2462](https://github.com/TileDB-Inc/TileDB/pull/2462) # TileDB v2.3.4 Release Notes ## Improvements * `Query::set_layout`: setting the layout on the subarray. [#2451](https://github.com/TileDB-Inc/TileDB/pull/2451) * Allow empty attribute writes. [#2461](https://github.com/TileDB-Inc/TileDB/pull/2461) ## Bug fixes * Fix deserialization of buffers in write queries with nullable var-length attributes [#2442](https://github.com/TileDB-Inc/TileDB/pull/2442) # TileDB v2.3.3 Release Notes ## Improvements * Increase REST (TileDB Cloud) retry count from 3 to 25 to be inline with S3/GCS retry times [#2421](https://github.com/TileDB-Inc/TileDB/pull/2421) * Avoid unnecessary `est_result_size` computation in `must_split` [#2431](https://github.com/TileDB-Inc/TileDB/pull/2431) * Use newer Azure patch for all platforms to solve missing header error [#2433](https://github.com/TileDB-Inc/TileDB/pull/2433) ## Bug fixes * Fix c-api error paths always resetting any alloced pointers to nullptr in-addition to deleting [#2427](https://github.com/TileDB-Inc/TileDB/pull/2427) # TileDB v2.3.2 Release Notes ## Improvements * Support more env selectable options in both azure-windows.yml and azure-windows-release.yml [#2384](https://github.com/TileDB-Inc/TileDB/pull/2384) * Enable Azure/Serialization for windows CI artifacts [#2400](https://github.com/TileDB-Inc/TileDB/pull/2400) ## Bug fixes * Correct check for last offset position so that undefined memory is not accessed. [#2390](https://github.com/TileDB-Inc/TileDB/pull/2390) * Fix ch8416, failure to read array written with tiledb 2.2 via REST [#2404](https://github.com/TileDB-Inc/TileDB/pull/2404) * Fix ch7582: use the correct buffer for validity deserialization [#2407](https://github.com/TileDB-Inc/TileDB/pull/2407) # TileDB v2.3.1 Release Notes ## Improvements * Update bzip2 in windows build to 1.0.8 [#2332](https://github.com/TileDB-Inc/TileDB/pull/2332) * Fixing S3 build for OSX11 [#2339](https://github.com/TileDB-Inc/TileDB/pull/2339) * Fixing possible overflow in Dimension::tile_num [#2265](https://github.com/TileDB-Inc/TileDB/pull/2265) * Fixing tile extent calculations for signed integer domains [#2303](https://github.com/TileDB-Inc/TileDB/pull/2303) * Add support for cross compilation on OSX in superbuild [#2354](https://github.com/TileDB-Inc/TileDB/pull/2354) * Remove curl link args for cross compilation [#2359](https://github.com/TileDB-Inc/TileDB/pull/2359) * Enable MacOS arm64 release artifacts [#2360](https://github.com/TileDB-Inc/TileDB/pull/2360) * Add more stats for \`compute_result_coords\` path [#2366](https://github.com/TileDB-Inc/TileDB/pull/2366) * Support credentials refresh for AWS [#2376](https://github.com/TileDB-Inc/TileDB/pull/2376) ## Bug fixes * Fixing intermittent metadata test failure [#2338](https://github.com/TileDB-Inc/TileDB/pull/2338) * Fix query condition validation check for nullable attributes with null conditions [#2344](https://github.com/TileDB-Inc/TileDB/pull/2344) * Multi-range single dimension query fix [#2347](https://github.com/TileDB-Inc/TileDB/pull/2347) * Rewrite `Dimension::overlap_ratio` [#2304](https://github.com/TileDB-Inc/TileDB/pull/2304) * Follow up fixes to floating point calculations for tile extents [#2341](https://github.com/TileDB-Inc/TileDB/pull/2341) * Fix for set_null_tile_extent_to_range [#2361](https://github.com/TileDB-Inc/TileDB/pull/2361) * Subarray partitioner, unordered should be unordered, even for Hilbert. [#2377](https://github.com/TileDB-Inc/TileDB/pull/2377) # TileDB v2.3.0 Release Notes ## Disk Format * Format version incremented to 9. [#2108](https://github.com/TileDB-Inc/TileDB/pull/2108) ## Breaking behavior * The setting of \`sm.read_range_oob\` now defaults to \`warn\`, allowing queries to run with bounded ranges that errored before. [#2176](https://github.com/TileDB-Inc/TileDB/pull/2176) * Removes TBB as an optional dependency [#2181](https://github.com/TileDB-Inc/TileDB/pull/2181) ## New features * Support TILEDB_DATETIME_{SEC,MS,US,NS} in arrow_io_impl.h [#2228](https://github.com/TileDB-Inc/TileDB/pull/2228) * Adds support for filtering query results on attribute values [#2141](https://github.com/TileDB-Inc/TileDB/pull/2141) * Adding support for time datatype dimension and attribute [#2140](https://github.com/TileDB-Inc/TileDB/pull/2140) * Add support for serialization of config objects [#2164](https://github.com/TileDB-Inc/TileDB/pull/2164) * Add C and C++ examples to the `examples/` directory for the `tiledb_fragment_info_t` APIs. [#2160](https://github.com/TileDB-Inc/TileDB/pull/2160) * supporting serialization (using capnproto) build on windows [#2100](https://github.com/TileDB-Inc/TileDB/pull/2100) * Config option "vfs.s3.sse" for S3 server-side encryption support [#2130](https://github.com/TileDB-Inc/TileDB/pull/2130) * Name attribute/dimension files by index. This is fragment-specific and updates the format version to version 9. [#2107](https://github.com/TileDB-Inc/TileDB/pull/2107) * Smoke Test, remove nullable structs from global namespace. [#2078](https://github.com/TileDB-Inc/TileDB/pull/2078) ## Improvements * replace ReadFromOffset with ReadRange in GCS::read() to avoid excess gcs egress traffic [#2307](https://github.com/TileDB-Inc/TileDB/pull/2307) * Hilbert partitioning fixes [#2269](https://github.com/TileDB-Inc/TileDB/pull/2269) * Stats refactor [#2267](https://github.com/TileDB-Inc/TileDB/pull/2267) * Improve Cap'n Proto cmake setup for system installations [#2263](https://github.com/TileDB-Inc/TileDB/pull/2263) * Runtime check for minimum validity buffer size [#2261](https://github.com/TileDB-Inc/TileDB/pull/2261) * Enable partial vacuuming when vacuuming with timestamps [#2251](https://github.com/TileDB-Inc/TileDB/pull/2251) * Consolidation: de-dupe FragmentInfo [#2250](https://github.com/TileDB-Inc/TileDB/pull/2250) * Consolidation: consider non empty domain before start timestamp [#2248](https://github.com/TileDB-Inc/TileDB/pull/2248) * Add size details to s3 read error [#2249](https://github.com/TileDB-Inc/TileDB/pull/2249) * Consolidation: do not re-open array for each fragment [#2243](https://github.com/TileDB-Inc/TileDB/pull/2243) * Support back compat writes [#2230](https://github.com/TileDB-Inc/TileDB/pull/2230) * Serialization support for query conditions [#2240](https://github.com/TileDB-Inc/TileDB/pull/2240) * Make SubarrayPartitioner's member functions to return Status after calling Subarray::get_range_num. [#2235](https://github.com/TileDB-Inc/TileDB/pull/2235) * Update bzip2 super build version to 1.0.8 to address [CVE-2019-12900](https://nvd.nist.gov/vuln/detail/CVE-2019-12900) in libbzip2 [#2233](https://github.com/TileDB-Inc/TileDB/pull/2233) * Timestamp start and end for vacuuming and consolidation [#2227](https://github.com/TileDB-Inc/TileDB/pull/2227) * Fix memory leaks reported on ASAN when running with leak-detection. [#2223](https://github.com/TileDB-Inc/TileDB/pull/2223) * Use relative paths in consolidated fragment metadata [#2215](https://github.com/TileDB-Inc/TileDB/pull/2215) * Optimize `Subarray::compute_relevant_fragments` [#2216](https://github.com/TileDB-Inc/TileDB/pull/2216) * AWS S3: improve is_dir [#2209](https://github.com/TileDB-Inc/TileDB/pull/2209) * Add nullable string to nullable attribute example [#2212](https://github.com/TileDB-Inc/TileDB/pull/2212) * AWS S3: adding option to skip Aws::InitAPI [#2204](https://github.com/TileDB-Inc/TileDB/pull/2204) * Added additional stats for subarrays and subarray partitioners [#2200](https://github.com/TileDB-Inc/TileDB/pull/2200) * Introduces config parameter "sm.skip_est_size_partitioning" [#2203](https://github.com/TileDB-Inc/TileDB/pull/2203) * Add config to query serialization. [#2177](https://github.com/TileDB-Inc/TileDB/pull/2177) * Consolidation support for nullable attributes [#2196](https://github.com/TileDB-Inc/TileDB/pull/2196) * Adjust unit tests to reduce memory leaks inside the tests. [#2179](https://github.com/TileDB-Inc/TileDB/pull/2179) * Reduces memory usage in multi-range range reads [#2165](https://github.com/TileDB-Inc/TileDB/pull/2165) * Add config option \`sm.read_range_oob\` to toggle bounding read ranges to domain or erroring [#2162](https://github.com/TileDB-Inc/TileDB/pull/2162) * Windows msys2 build artifacts are no longer uploaded [#2159](https://github.com/TileDB-Inc/TileDB/pull/2159) * Add internal log functions to log at different log levels [#2161](https://github.com/TileDB-Inc/TileDB/pull/2161) * Parallelize Writer::filter_tiles [#2156](https://github.com/TileDB-Inc/TileDB/pull/2156) * Added config option "vfs.gcs.request_timeout_ms" [#2148](https://github.com/TileDB-Inc/TileDB/pull/2148) * Improve fragment info loading by parallelizing fragment_size requests [#2143](https://github.com/TileDB-Inc/TileDB/pull/2143) * Allow open array stats to be printed without read query [#2131](https://github.com/TileDB-Inc/TileDB/pull/2131) * Cleanup the GHA CI scripts - put common code into external shell scripts. [#2124](https://github.com/TileDB-Inc/TileDB/pull/2124) * Reduced memory consumption in the read path for multi-range reads. [#2118](https://github.com/TileDB-Inc/TileDB/pull/2118) * The latest version of `dev` was leaving behind a `test/empty_string3/`. This ensures that the directory is removed when `make check` is run. [#2113](https://github.com/TileDB-Inc/TileDB/pull/2113) * Migrating AZP CI to GA [#2111](https://github.com/TileDB-Inc/TileDB/pull/2111) * Cache non_empty_domain for REST arrays like all other arrays [#2105](https://github.com/TileDB-Inc/TileDB/pull/2105) * Add additional stats printing to breakdown read state initialization timings [#2095](https://github.com/TileDB-Inc/TileDB/pull/2095) * Places the in-memory filesystem under unit test [#1961](https://github.com/TileDB-Inc/TileDB/pull/1961) * Adds a Github Action to automate the HISTORY.md [#2075](https://github.com/TileDB-Inc/TileDB/pull/2075) * Change printfs in C++ examples to cout, edit C print statements to fix format warnings [#2226](https://github.com/TileDB-Inc/TileDB/pull/2226) ## Deprecations * The following APIs have been deprecated: `tiledb_array_open_at`, `tiledb_array_open_at_with_key`, `tiledb_array_reopen_at`. [#2142](https://github.com/TileDB-Inc/TileDB/pull/2142) ## Bug fixes * Fix a segfault on `VFS::ls` for the in-memory filesystem [#2255](https://github.com/TileDB-Inc/TileDB/pull/2255) * Fix rare read corruption in S3 [#2253](https://github.com/TileDB-Inc/TileDB/pull/2253) * Update some union initializers to use strict syntax [#2242](https://github.com/TileDB-Inc/TileDB/pull/2242) * Fix race within `S3::init_client` [#2247](https://github.com/TileDB-Inc/TileDB/pull/2247) * Expand accepted windows URIs. [#2237](https://github.com/TileDB-Inc/TileDB/pull/2237) * Write fix for unordered writes on nullable, fixed attributes. [#2241](https://github.com/TileDB-Inc/TileDB/pull/2241) * Fix tile extent to be reported as domain extent for sparse arrays with Hilbert ordering [#2231](https://github.com/TileDB-Inc/TileDB/pull/2231) * Do not consider option sm.read_range_oob for set_subarray() on Write queries [#2211](https://github.com/TileDB-Inc/TileDB/pull/2211) * Change avoiding generation of multiple, concatenated, subarray flattened data. [#2190](https://github.com/TileDB-Inc/TileDB/pull/2190) * Change mutex from basic to recursive [#2180](https://github.com/TileDB-Inc/TileDB/pull/2180) * Fixes a memory leak in the S3 read path [#2189](https://github.com/TileDB-Inc/TileDB/pull/2189) * Fixes a potential memory leak in the filter pipeline [#2185](https://github.com/TileDB-Inc/TileDB/pull/2185) * Fixes misc memory leaks in the unit tests [#2183](https://github.com/TileDB-Inc/TileDB/pull/2183) * Fix memory leak of \`tiledb_config_t\` in error path of \`tiledb_config_alloc\`. [#2178](https://github.com/TileDB-Inc/TileDB/pull/2178) * Fix check for null pointer in query deserialization [#2163](https://github.com/TileDB-Inc/TileDB/pull/2163) * Fixes a potential crash when retrying incomplete reads [#2137](https://github.com/TileDB-Inc/TileDB/pull/2137) * Fixes a potential crash when opening an array with consolidated fragment metadata [#2135](https://github.com/TileDB-Inc/TileDB/pull/2135) * Corrected a bug where sparse cells may be incorrectly returned using string dimensions. [#2125](https://github.com/TileDB-Inc/TileDB/pull/2125) * Fix segfault in serialized queries when partition is unsplittable [#2120](https://github.com/TileDB-Inc/TileDB/pull/2120) * Always use original buffer size in serialized read queries serverside. [#2115](https://github.com/TileDB-Inc/TileDB/pull/2115) * Fix an edge-case where a read query may hang on array with string dimensions [#2089](https://github.com/TileDB-Inc/TileDB/pull/2089) ## API additions ### C API * Added tiledb_array_set_open_timestamp_start and tiledb_array_get_open_timestamp_start [#2285](https://github.com/TileDB-Inc/TileDB/pull/2285) * Added tiledb_array_set_open_timestamp_end and tiledb_array_get_open_timestamp_end [#2285](https://github.com/TileDB-Inc/TileDB/pull/2285) * Addition of `tiledb_array_set_config` to directly assign a config to an array. [#2142](https://github.com/TileDB-Inc/TileDB/pull/2142) * tiledb_query_get_array now returns a deep-copy [#2184](https://github.com/TileDB-Inc/TileDB/pull/2184) * Added \`tiledb_serialize_config\` and \`tiledb_deserialize_config\` [#2164](https://github.com/TileDB-Inc/TileDB/pull/2164) * Add new api, `tiledb_query_get_config` to get a query's config. [#2167](https://github.com/TileDB-Inc/TileDB/pull/2167) * Removes non-default parameter in "tiledb_config_unset". [#2099](https://github.com/TileDB-Inc/TileDB/pull/2099) ### C++ API * Added Array::set_open_timestamp_start and Array::open_timestamp_start [#2285](https://github.com/TileDB-Inc/TileDB/pull/2285) * Added Array::set_open_timestamp_end and Array::open_timestamp_end [#2285](https://github.com/TileDB-Inc/TileDB/pull/2285) * add Query::result_buffer_elements_nullable support for dims [#2238](https://github.com/TileDB-Inc/TileDB/pull/2238) * Addition of `tiledb_array_set_config` to directly assign a config to an array. [#2142](https://github.com/TileDB-Inc/TileDB/pull/2142) * Add new api, `Query.config()` to get a query's config. [#2167](https://github.com/TileDB-Inc/TileDB/pull/2167) * Removes non-default parameter in "Config::unset". [#2099](https://github.com/TileDB-Inc/TileDB/pull/2099) * Add support for a string-typed, variable-sized, nullable attribute in the C++ API. [#2090](https://github.com/TileDB-Inc/TileDB/pull/2090) # TileDB v2.2.9 Release Notes ## Bug fixes * Fix rare read corruption in S3 [#2254](https://github.com/TileDB-Inc/TileDB/pull/2254) * Write fix for unordered writes on nullable, fixed attributes [#2241](https://github.com/TileDB-Inc/TileDB/pull/2241) # TileDB v2.2.8 Release Notes ## Disk Format ## Breaking C API changes ## Breaking behavior ## New features * Support TILEDB_DATETIME_{SEC,MS,US,NS} in arrow_io_impl.h [#2229](https://github.com/TileDB-Inc/TileDB/pull/2229) * Add support for serialization of config objects [#2164](https://github.com/TileDB-Inc/TileDB/pull/2164) * Add support for serialization of query config [#2177](https://github.com/TileDB-Inc/TileDB/pull/2177) ## Improvements * Optimize `Subarray::compute_relevant_fragments` [#2218](https://github.com/TileDB-Inc/TileDB/pull/2218) * Reduces memory usage in multi-range range reads [#2165](https://github.com/TileDB-Inc/TileDB/pull/2165) * Add config option `sm.read_range_oob` to toggle bounding read ranges to domain or erroring [#2162](https://github.com/TileDB-Inc/TileDB/pull/2162) * Updates bzip2 to v1.0.8 on Linux/OSX [#2233](https://github.com/TileDB-Inc/TileDB/pull/2233) ## Deprecations ## Bug fixes * Fixes a potential memory leak in the filter pipeline [#2185](https://github.com/TileDB-Inc/TileDB/pull/2185) * Fixes misc memory leaks in the unit tests [#2183](https://github.com/TileDB-Inc/TileDB/pull/2183) * Fix memory leak of `tiledb_config_t` in error path of `tiledb_config_alloc`. [#2178](https://github.com/TileDB-Inc/TileDB/pull/2178) ## API additions ### C API * tiledb_query_get_array now returns a deep-copy [#2188](https://github.com/TileDB-Inc/TileDB/pull/2188) * Add new api,`tiledb_query_get_config` to get a query's config. [#2167](https://github.com/TileDB-Inc/TileDB/pull/2167) * Added `tiledb_serialize_config` and `tiledb_deserialize_config` [#2164](https://github.com/TileDB-Inc/TileDB/pull/2164) ### C++ API * Add new api, `Query.config()` to get a query's config. [#2167](https://github.com/TileDB-Inc/TileDB/pull/2167) # TileDB v2.2.7 Release Notes ## Improvements * Added config option vfs.gcs.request_timeout_ms [#2148](https://github.com/TileDB-Inc/TileDB/pull/2148) * Improve fragment info loading by parallelizing fragment_size requests [#2143](https://github.com/TileDB-Inc/TileDB/pull/2143) * Apply 'var_offsets.extra_element' mode to string dimension offsets too [#2145](https://github.com/TileDB-Inc/TileDB/pull/2145) # TileDB v2.2.6 Release Notes ## Bug fixes * Fixes a potential crash when retrying incomplete reads [#2137](https://github.com/TileDB-Inc/TileDB/pull/2137) # TileDB v2.2.5 Release Notes ## New features * Config option vfs.s3.sse for S3 server-side encryption support [#2130](https://github.com/TileDB-Inc/TileDB/pull/2130) ## Improvements * Reduced memory consumption in the read path for multi-range reads. [#2118](https://github.com/TileDB-Inc/TileDB/pull/2118) * Cache non_empty_domain for REST arrays like all other arrays [#2105](https://github.com/TileDB-Inc/TileDB/pull/2105) * Add additional timer statistics for openning array for reads [#2027](https://github.com/TileDB-Inc/TileDB/pull/2027) * Allow open array stats to be printed without read query [#2131](https://github.com/TileDB-Inc/TileDB/pull/2131) ## Bug fixes * Fixes a potential crash when opening an array with consolidated fragment metadata [#2135](https://github.com/TileDB-Inc/TileDB/pull/2135) * Corrected a bug where sparse cells may be incorrectly returned using string dimensions. [#2125](https://github.com/TileDB-Inc/TileDB/pull/2125) * Always use original buffer size in serialized read queries serverside. [#2115](https://github.com/TileDB-Inc/TileDB/pull/2115) * Fix segfault in serialized queries when partition is unsplittable [#2120](https://github.com/TileDB-Inc/TileDB/pull/2120) # TileDB v2.2.4 Release Notes ## Improvements * Add additional stats printing to breakdown read state initialization timings [#2095](https://github.com/TileDB-Inc/TileDB/pull/2095) * Improve GCS multipart locking [#2087](https://github.com/TileDB-Inc/TileDB/pull/2087) ## Bug fixes * Fix an edge-case where a read query may hang on array with string dimensions [#2089](https://github.com/TileDB-Inc/TileDB/pull/2089) * Fix mutex locking bugs on Windows due to unlocking on different thread and missing task join [#2077](https://github.com/TileDB-Inc/TileDB/pull/2077) ### C++ API * Add support for a string-typed, variable-sized, nullable attribute in the C++ API. [#2090](https://github.com/TileDB-Inc/TileDB/pull/2090) # TileDB v2.2.3 Release Notes ## New features * Add support for retrying REST requests that fail with certain http status code such as 503 [#2060](https://github.com/TileDB-Inc/TileDB/pull/2060) ## Improvements * Parallelize across attributes when closing a write [#2048](https://github.com/TileDB-Inc/TileDB/pull/2048) * Support for dimension/attribute names that contain commonly reserved filesystem characters [#2047](https://github.com/TileDB-Inc/TileDB/pull/2047) * Remove unnecessary `is_dir` in `FragmentMetadata::store`, this can increase performance for s3 writes [#2050](https://github.com/TileDB-Inc/TileDB/pull/2050) * Improve S3 multipart locking [#2055](https://github.com/TileDB-Inc/TileDB/pull/2055) * Parallize loading fragments and array schema [#2061](https://github.com/TileDB-Inc/TileDB/pull/2061) # TileDB v2.2.2 Release Notes ## New features * REST client support for caching redirects [#1919](https://github.com/TileDB-Inc/TileDB/pull/1919) ## Improvements * Add `rest.creation_access_credentials_name` configuration parameter [#2025](https://github.com/TileDB-Inc/TileDB/pull/2025) ## Bug fixes * Fixed ArrowAdapter export of string arrays with 64-bit offsets [#2037](https://github.com/TileDB-Inc/TileDB/pull/2037) * Fixed ArrowAdapter export of TILEDB_CHAR arrays with 64-bit offsets [#2039](https://github.com/TileDB-Inc/TileDB/pull/2039) ## API additions ### C API * Add `tiledb_query_set_config` to apply a `tiledb_config_t` to query-level parameters [#2030](https://github.com/TileDB-Inc/TileDB/pull/2030) ### C++ API * Added `Query::set_config` to apply a `tiledb::Config` to query-level parameters [#2030](https://github.com/TileDB-Inc/TileDB/pull/2030) # TileDB v2.2.1 Release Notes ## Breaking behavior * The tile extent can now be set to null, in which case internally TileDB sets the extent to the dimension domain range. [#1880](https://github.com/TileDB-Inc/TileDB/pull/1880) * The C++ API `std::pair Query::est_result_size_var` has been changed to 1) a return type of `std::array` and 2) returns the offsets as a size in bytes rather than elements. [#1946](https://github.com/TileDB-Inc/TileDB/pull/1946) ## New features * Support for nullable attributes. [#1895](https://github.com/TileDB-Inc/TileDB/pull/1895) [#1938](https://github.com/TileDB-Inc/TileDB/pull/1938) [#1948](https://github.com/TileDB-Inc/TileDB/pull/1948) [#1945](https://github.com/TileDB-Inc/TileDB/pull/1945) * Support for Hilbert order sorting for sparse arrays. [#1880](https://github.com/TileDB-Inc/TileDB/pull/1880) * Support for AWS S3 "AssumeRole" temporary credentials [#1882](https://github.com/TileDB-Inc/TileDB/pull/1882) * Support for zero-copy import/export with the Apache Arrow adapter [#2001](https://github.com/TileDB-Inc/TileDB/pull/2001) * Experimental support for an in-memory backend used with bootstrap option "--enable-memfs" [#1873](https://github.com/TileDB-Inc/TileDB/pull/1873) * Support for element offsets when reading var-sized attributes. [#1897] (https://github.com/TileDB-Inc/TileDB/pull/1897) * Support for an extra offset indicating the size of the returned data when reading var-sized attributes. [#1932] (https://github.com/TileDB-Inc/TileDB/pull/1932) * Support for 32-bit offsets when reading var-sized attributes. [#1950] (https://github.com/TileDB-Inc/TileDB/pull/1950) ## Improvements * Optimized string dimension performance. * Added functionality to get fragment information from an array. [#1900](https://github.com/TileDB-Inc/TileDB/pull/1900) * Prevented unnecessary sorting when (1) there is a single fragment and (i) either the query layout is global order, or (ii) the number of dimensions is 1, and (2) when there is a single range for which the result coordinates have already been sorted. [#1880](https://github.com/TileDB-Inc/TileDB/pull/1880) * Added extra stats for consolidation. [#1880](https://github.com/TileDB-Inc/TileDB/pull/1880) * Disabled checking if cells are written in global order when consolidating, as it was redundant (the cells are already being read in global order during consolidation). [#1880](https://github.com/TileDB-Inc/TileDB/pull/1880) * Optimize consolidated fragment metadata loading [#1975](https://github.com/TileDB-Inc/TileDB/pull/1975) ## Bug fixes * Fix tiledb_dimension_alloc returning a non-null pointer after error [#1959]((https://github.com/TileDB-Inc/TileDB/pull/1859) * Fixed issue with string dimensions and non-set subarray (which implies spanning the whole domain). There was an assertion being triggered. Now it works properly. * Fixed bug when checking the dimension domain for infinity or NaN values. [#1880](https://github.com/TileDB-Inc/TileDB/pull/1880) * Fixed bug with string dimension partitioning. [#1880](https://github.com/TileDB-Inc/TileDB/pull/1880) ## API additions ### C API * Added functions for getting fragment information. [#1900](https://github.com/TileDB-Inc/TileDB/pull/1900) * Added APIs for getting and setting ranges of queries using a dimension name. [#1920](https://github.com/TileDB-Inc/TileDB/pull/1920) ### C++ API * Added class `FragmentInfo` and functions for getting fragment information. [#1900](https://github.com/TileDB-Inc/TileDB/pull/1900) * Added function `Dimension::create` that allows not setting a space tile extent. [#1880](https://github.com/TileDB-Inc/TileDB/pull/1880) * Added APIs for getting and setting ranges of queries using a dimension name. [#1920](https://github.com/TileDB-Inc/TileDB/pull/1920) * Changed `std::pair Query::est_result_size_var` to `std::array Query::est_result_size_var`. Additionally, the size estimate for the offsets have been changed from elements to bytes. [#1946](https://github.com/TileDB-Inc/TileDB/pull/1946) # TileDB v2.2.0 Release Notes * This release was skipped due to an erroneous `2.2.0` git tag. # TileDB v2.1.6 Release Notes ## Bug fixes * Fix deadlock in `ThreadPool::wait_or_work` [#1994](https://github.com/TileDB-Inc/TileDB/pull/1994) * Fix "[TileDB::ChunkedBuffer] Error: Cannot init chunk buffers; Total size must be non-zero." in read path [#1992](https://github.com/TileDB-Inc/TileDB/pull/1992) # TileDB v2.1.5 Release Notes ## Improvements * Optimize consolidated fragment metadata loading [#1975](https://github.com/TileDB-Inc/TileDB/pull/1975) * Optimize `Reader::load_tile_offsets` for loading only relevant fragments [#1976](https://github.com/TileDB-Inc/TileDB/pull/1976) [#1983](https://github.com/TileDB-Inc/TileDB/pull/1983) * Optimize locking in `FragmentMetadata::load_tile_offsets` and `FragmentMetadata::load_tile_var_offsets` [#1979](https://github.com/TileDB-Inc/TileDB/pull/1979) * Exit early in `Reader::copy_coordinates`/`Reader::copy_attribute_values` when no results [#1984](https://github.com/TileDB-Inc/TileDB/pull/1984) ## Bug fixes * Fix segfault in optimized `compute_results_sparse` [#1969](https://github.com/TileDB-Inc/TileDB/pull/1969) * Fix GCS "Error:: Read object failed"[#1966](https://github.com/TileDB-Inc/TileDB/pull/1966) * Fix segfault in `ResultTile::str_coords_intersects` [#1981](https://github.com/TileDB-Inc/TileDB/pull/1981) # TileDB v2.1.4 Release Notes ## Improvements * Optimize `ResultTile::compute_results_sparse` resulting in significant performance increases in certain cases with string dimensions [#1963](https://github.com/TileDB-Inc/TileDB/pull/1963) # TileDB v2.1.3 Release Notes ## Improvements * Optimized string dimension performance. [#1922](https://github.com/TileDB-Inc/TileDB/pull/1922) ## Bug fixes * Updated the AWS SDK to v1.8.84 to fix an uncaught exception when using S3 [#1899](https://github.com/TileDB-Inc/TileDB/pull/1899)[TileDB-Py #409](https://github.com/TileDB-Inc/TileDB-Py/issues/409) * Fixed bug where a read on a sparse array may return duplicate values. [#1905](https://github.com/TileDB-Inc/TileDB/pull/1905) * Fixed bug where an array could not be opened if created with an array schema from an older version [#1889](https://github.com/TileDB-Inc/TileDB/pull/1889) * Fix compilation of TileDB Tools [#1926](https://github.com/TileDB-Inc/TileDB/pull/1926) # TileDB v2.1.2 Release Notes ## Bug fixes * Fix ArraySchema not write protecting fill values for only schema version 6 or newer [#1868](https://github.com/TileDB-Inc/TileDB/pull/1868) * Fix segfault that may occur in the VFS read-ahead cache [#1871](https://github.com/TileDB-Inc/TileDB/pull/1871) # TileDB v2.1.1 Release Notes ## Bug fixes * The result size estimatation routines will no longer return non-zero sizes that can not contain a single value. [#1849](https://github.com/TileDB-Inc/TileDB/pull/1849) * Fix serialization of dense writes that use ranges [#1860](https://github.com/TileDB-Inc/TileDB/pull/1860) * Fixed a crash from an unhandled SIGPIPE signal that may raise when using S3 [#1856](https://github.com/TileDB-Inc/TileDB/pull/1856) # TileDB v2.1.0 Release Notes ## Breaking behavior * Empty dense arrays now return cells with fill values. Also the result estimator is adjusted to work properly with this new behavior. ## New features * Added configuration option "sm.compute_concurrency_level" [#1766](https://github.com/TileDB-Inc/TileDB/pull/1766) * Added configuration option "sm.io_concurrency_level" [#1766](https://github.com/TileDB-Inc/TileDB/pull/1766) * Added configuration option "sm.sub_partitioner_memory_budget" [#1729](https://github.com/TileDB-Inc/TileDB/pull/1729) * Added configuration option "vfs.read_ahead_size" [#1785](https://github.com/TileDB-Inc/TileDB/pull/1785) * Added configuration option "vfs.read_ahead_cache_size" [#1785](https://github.com/TileDB-Inc/TileDB/pull/1785) * Added support for getting/setting Apache Arrow buffers from a Query [#1816](https://github.com/TileDB-Inc/TileDB/pull/1816) ## Improvements * Source built curl only need HTTP support [#1712](https://github.com/TileDB-Inc/TileDB/pull/1712) * AWS SDK version bumped to 1.8.6 [#1718](https://github.com/TileDB-Inc/TileDB/pull/1718) * Split posix permissions into files and folers permissions [#1719](https://github.com/TileDB-Inc/TileDB/pull/1719) * Support seeking for CURL to allow redirects for posting to REST [#1728](https://github.com/TileDB-Inc/TileDB/pull/1728) * Changed default setting for `vfs.s3.proxy_scheme` from `https` to `http` to match common usage needs [#1759](https://github.com/TileDB-Inc/TileDB/pull/1759) * Enabled parallelization with native system threads when TBB is disabled [#1760](https://github.com/TileDB-Inc/TileDB/pull/1760) * Subarray ranges will be automatically coalesced as they are added [#1755](https://github.com/TileDB-Inc/TileDB/pull/1755) * Update GCS SDK to v1.16.0 to fixes multiple bugs reported [#1768](https://github.com/TileDB-Inc/TileDB/pull/1768) * Read-ahead cache for cloud-storage backends [#1785](https://github.com/TileDB-Inc/TileDB/pull/1785) * Allow multiple empty values at the end of a variable-length write [#1805](https://github.com/TileDB-Inc/TileDB/pull/1805) * Build system will raise overridable error if important paths contain regex character [#1808](https://github.com/TileDB-Inc/TileDB/pull/1808) * Lazily create AWS ClientConfiguration to avoid slow context creations for non S3 usage after the AWS SDK version bump [#1821](https://github.com/TileDB-Inc/TileDB/pull/1821) * Moved `Status`, `ThreadPool`, and `Logger` classes from folder `tiledb/sm` to `tiledb/common` [#1843](https://github.com/TileDB-Inc/TileDB/pull/1843) ## Deprecations * Deprecated config option "sm.num_async_threads" [#1766](https://github.com/TileDB-Inc/TileDB/pull/1766) * Deprecated config option "sm.num_reader_threads" [#1766](https://github.com/TileDB-Inc/TileDB/pull/1766) * Deprecated config option "sm.num_writer_threads" [#1766](https://github.com/TileDB-Inc/TileDB/pull/1766) * Deprecated config option "vfs.num_threads" [#1766](https://github.com/TileDB-Inc/TileDB/pull/1766) * Support for MacOS older than 10.13 is being dropped when using the AWS SDK. Prebuilt Binaries now target 10.13 [#1753](https://github.com/TileDB-Inc/TileDB/pull/1753) * Use of Intel's Thread Building Blocks (TBB) will be discontinued in the future. It is now disabled by default [#1762](https://github.com/TileDB-Inc/TileDB/pull/1762) * No longer building release artifacts with Intel's Thread Building Blocks (TBB) enabled [#1825](https://github.com/TileDB-Inc/TileDB/pull/1825) ## Bug fixes * Fixed bug in setting a fill value for var-sized attributes. * Fixed a bug where the cpp headers would always produce compile-time warnings about using the deprecated c-api "tiledb_coords()" [#1765](https://github.com/TileDB-Inc/TileDB/pull/1765) * Only serialize the Array URI in the array schema client side. [#1806](https://github.com/TileDB-Inc/TileDB/pull/1806) * Fix C++ api `consolidate_metadata` function uses incorrect config [#1841](https://github.com/TileDB-Inc/TileDB/pull/1841) [#1844](https://github.com/TileDB-Inc/TileDB/pull/1844) ## API additions ### C API * Added functions `tiledb_attribute_{set,get}_fill_value` to get/set default fill values ### C++ API * Added functions `Attribute::{set,get}_fill_value` to get/set default fill values # TileDB v2.0.8 Release Notes ## Improvements * Lazy initialization for GCS backend [#1752](https://github.com/TileDB-Inc/TileDB/pull/1752) * Add additional release artifacts which include disabling TBB [#1753](https://github.com/TileDB-Inc/TileDB/pull/1753) ## Bug fixes * Fix crash during GCS backend initialization due to upstream bug. [#1752](https://github.com/TileDB-Inc/TileDB/pull/1752) # TileDB v2.0.7 Release Notes ## Improvements * Various performance optimizations in the read path. [#1689](https://github.com/TileDB-Inc/TileDB/pull/1689) [#1692](https://github.com/TileDB-Inc/TileDB/pull/1692) [#1693](https://github.com/TileDB-Inc/TileDB/pull/1693) [#1694](https://github.com/TileDB-Inc/TileDB/pull/1694) [#1695](https://github.com/TileDB-Inc/TileDB/pull/1695) * Google Cloud SDK bumped to 1.14. [#1687](https://github.com/TileDB-Inc/TileDB/pull/1687), [#1742](https://github.com/TileDB-Inc/TileDB/pull/1742) ## Bug fixes * Fixed error "Error: Out of bounds read to internal chunk buffer of size 65536" that may occur when writing var-sized attributes. [#1732](https://github.com/TileDB-Inc/TileDB/pull/1732) * Fixed error "Error: Chunk read error; chunk unallocated error" that may occur when reading arrays with more than one dimension. [#1736](https://github.com/TileDB-Inc/TileDB/pull/1736) * Fix Catch2 detection of system install [#1733](https://github.com/TileDB-Inc/TileDB/pull/1733) * Use libtiledb-detected certificate path for Google Cloud Storage, for better linux binary/wheel portability. [#1741](https://github.com/TileDB-Inc/TileDB/pull/1741) * Fixed a small memory leak when opening arrays. [#1690](https://github.com/TileDB-Inc/TileDB/pull/1690) * Fixed an overflow in the partioning path that may result in a hang or poor read performance. [#1725](https://github.com/TileDB-Inc/TileDB/pull/1725)[#1707](https://github.com/TileDB-Inc/TileDB/pull/1707) * Fix compilation on gcc 10.1 for blosc [#1740](https://github.com/TileDB-Inc/TileDB/pull/1740) * Fixed a rare hang in the usage of `load_tile_var_sizes`. [#1748](https://github.com/TileDB-Inc/TileDB/pull/1748) # TileDB v2.0.6 Release Notes ## Improvements * Add new config option `vfs.file.posix_permissions`. [#1710](https://github.com/TileDB-Inc/TileDB/pull/1710) ## Bug fixes * Return possible env config variables in config iter [#1714](https://github.com/TileDB-Inc/TileDB/pull/1714) # TileDB v2.0.5 Release Notes ## Improvements * Don't include curl's linking to libz, avoids build issue with double libz linkage [#1682](https://github.com/TileDB-Inc/TileDB/pull/1682) # TileDB v2.0.4 Release Notes ## Improvements * Fix typo in GCS cmake file for superbuild [#1665](https://github.com/TileDB-Inc/TileDB/pull/1665) * Don't error on GCS client init failure [#1667](https://github.com/TileDB-Inc/TileDB/pull/1667) * Don't include curl's linking to ssl, avoids build issue on fresh macos 10.14/10.15 installs [#1671](https://github.com/TileDB-Inc/TileDB/pull/1671) * Handle ubuntu's cap'n proto package not providing cmake targets [#1659](https://github.com/TileDB-Inc/TileDB/pull/1659) ## Bug fixes * The C++ Attribute::create API now correctly builds from an STL array [#1670](https://github.com/TileDB-Inc/TileDB/pull/1670) * Allow opening arrays with read-only permission on posix filesystems [#1676](https://github.com/TileDB-Inc/TileDB/pull/1676) * Fixed build issue caused by passing std::string to an Aws method [#1678](https://github.com/TileDB-Inc/TileDB/pull/1678) # TileDB v2.0.3 Release Notes ## Improvements * Add robust retries for S3 SLOW_DOWN errors [#1651](https://github.com/TileDB-Inc/TileDB/pull/1651) * Improve GCS build process [#1655](https://github.com/TileDB-Inc/TileDB/pull/1655) * Add generation of pkg-config file [#1656](https://github.com/TileDB-Inc/TileDB/pull/1656) * S3 should use HEADObject for file size [#1657](https://github.com/TileDB-Inc/TileDB/pull/1657) * Improvements to stats [#1652](https://github.com/TileDB-Inc/TileDB/pull/1652) * Add artifacts to releases from CI [#1663](https://github.com/TileDB-Inc/TileDB/pull/1663) ## Bug fixes * Remove to unneeded semicolons noticed by the -pedantic flag [#1653](https://github.com/TileDB-Inc/TileDB/pull/1653) * Fix cases were TILEDB_FORCE_ALL_DEPS picked up system builds [#1654](https://github.com/TileDB-Inc/TileDB/pull/1654) * Allow errors to be show in cmake super build [#1658](https://github.com/TileDB-Inc/TileDB/pull/1658) * Properly check vacuum files and limit fragment loading [#1661](https://github.com/TileDB-Inc/TileDB/pull/1661) * Fix edge case where consolidated but unvacuumed array can have coordinates report twice [#1662](https://github.com/TileDB-Inc/TileDB/pull/1662) ## API additions * Add c-api tiledb_stats_raw_dump[_str] function for raw stats dump [#1660](https://github.com/TileDB-Inc/TileDB/pull/1660) * Add c++-api Stats::raw_dump function for raw stats dump [#1660](https://github.com/TileDB-Inc/TileDB/pull/1660) # TileDB v2.0.2 Release Notes ## Bug fixes * Fix hang on open array v1.6 [#1645](https://github.com/TileDB-Inc/TileDB/pull/1645) ## Improvements * Allow empty values for variable length attributes [#1646](https://github.com/TileDB-Inc/TileDB/pull/1646) # TileDB v2.0.1 Release Notes ## Improvements * Remove deprecated max buffer size APIs from unit tests [#1625](https://github.com/TileDB-Inc/TileDB/pull/1625) * Remove deprecated max buffer API from examples [#1626](https://github.com/TileDB-Inc/TileDB/pull/1626) * Remove zipped coords from examples [#1632](https://github.com/TileDB-Inc/TileDB/pull/1632) * Allow AWSSDK_ROOT_DIR override [#1637](https://github.com/TileDB-Inc/TileDB/pull/1637) ## Deprecations ## Bug fixes * Allow setting zipped coords multiple times [#1627](https://github.com/TileDB-Inc/TileDB/pull/1627) * Fix overflow in check_tile_extent [#1635](https://github.com/TileDB-Inc/TileDB/pull/1635) * Fix C++ Dimension API `{tile_extent,domain}_to_str`. [#1638](https://github.com/TileDB-Inc/TileDB/pull/1638) * Remove xlock in FragmentMetadata::store [#1639](https://github.com/TileDB-Inc/TileDB/pull/1639) ## API additions # TileDB v2.0.0 Release Notes ## Disk Format * Removed file `__coords.tdb` that stored the zipped coordinates in sparse fragments * Now storing the coordinate tiles on each dimension in separate files * Changed fragment name format from `__t1_t2_uuid` to `__t1_t2_uuid_`. That was necessary for backwards compatibility ## Breaking C API changes * Changed `domain` input of `tiledb_dimension_get_domain` to `const void**` (from `void**`). * Changed `tile_extent` input of `tiledb_dimension_get_tile_extent` to `const void**` (from `void**`). * Anonymous attribute and dimensions (i.e., empty strings for attribute/dimension names) is no longer supported. This is because now the user can set separate dimension buffers to the query and, therefore, supporting anonymous attributes and dimensions creates ambiguity in the current API. ## Breaking behavior * Now the TileDB consolidation process does not clean up the fragments or array metadata it consolidates. This is (i) to avoid exclusively locking at any point during consolidation, and (ii) to enable fine-grained time traveling even in the presence of consolidated fragments or array metadata. Instead, we added a special vacuuming API which explicitly cleans up consolidated fragments or array metadata (with appropriate configuration parameters). The vacuuming functions briefly exclusively lock the array. ## New features * Added string dimension support (currently only `TILEDB_STRING_ASCII`). * The user can now set separate coordinate buffers to the query. Also any subset of the dimensions is supported. * The user can set separate filter lists per dimension, as well as the number of values per coordinate. ## Improvements * Added support for AWS Security Token Service session tokens via configuration option `vfs.s3.session_token`. [#1472](https://github.com/TileDB-Inc/TileDB/pull/1472) * Added support for indicating zero-value metadata by returning `value_num` == 1 from the `_get_metadatata` and `Array::get_metadata` APIs [#1438](https://github.com/TileDB-Inc/TileDB/pull/1438) (this is a non-breaking change, as the documented return of `value == nullptr` to indicate missing keys does not change)` * User can set coordinate buffers separately for write queries. * Added option to enable duplicate coordinates for sparse arrays [#1504](https://github.com/TileDB-Inc/TileDB/pull/1504) * Added support for writing at a timestamp by allowing opening an array at a timestamp (previously disabled). * Added special files with the same name as a fragment directory and an added suffix ".ok", to indicate a committed fragment. This improved the performance of opening an array on object stores significantly, as it avoids an extra REST request per fragment. * Added functionality to consolidation, which allows consolidating the fragment metadata footers in a single file by toggling a new config parameter. This leads to a huge performance boost when opening an array, as it avoids fetching a separate footer per fragment from storage. * Various reader parallelizations that boosted read performance significantly. * Configuration parameters can now be read from environmental variables. `vfs.s3.session_token` -> `TILEDB_VFS_S3_SESSION_TOKEN`. The prefix of `TILEDB_` is configurable via `config.env_var_prefix`. [#1600](https://github.com/TileDB-Inc/TileDB/pull/1600) ## Deprecations * The TileDB tiledb_array_consolidate_metadata and tiledb_array_consolidate_metadata_with_key C-API routines have been deprecated and will be [removed entirely](https://github.com/TileDB-Inc/TileDB/issues/1591) in a future release. The tiledb_array_consolidate and tiledb_array_consolidate_with_key routines achieve the same behavior when the "sm.consolidation.mode" parameter of the configuration argument is equivalent to "array_meta". * The TileDB Array::consolidate_metadata CPP-API routine has been deprecated and will be [removed entirely](https://github.com/TileDB-Inc/TileDB/issues/1591) in a future release. The Array::consolidate routine achieves the same behavior when the "sm.consolidation.mode" parameter of the configuration argument is equivalent to "array_meta". ## Bug fixes * Fixed bug in dense consolidation when the array domain is not divisible by the tile extents. ## API additions * Added C API function `tiledb_array_has_metadata_key` and C++ API function `Array::has_metadata_key` [#1439](https://github.com/TileDB-Inc/TileDB/pull/1439) * Added C API functions `tiledb_array_schema_{set,get}_allows_dups` and C++ API functions `Array::set_allows_dups` and `Array::allows_dups` * Added C API functions `tiledb_dimension_{set,get}_filter_list` and `tiledb_dimension_{set,get}_cell_val_num` * Added C API functions `tiledb_array_get_non_empty_domain_from_{index,name}` * Added C API function `tiledb_array_vacuum` * Added C API functions `tiledb_array_get_non_empty_domain_var_size_from_{index,name}` * Added C API functions `tiledb_array_get_non_empty_domain_var_from_{index,name}` * Added C API function `tiledb_array_add_range_var` * Added C API function `tiledb_array_get_range_var_size` * Added C API function `tiledb_array_get_range_var` * Added C++ API functions `Dimension::set_cell_val_num` and `Dimension::cell_val_num`. * Added C++ API functions `Dimension::set_filter_list` and `Dimension::filter_list`. * Added C++ API functions `Array::non_empty_domain(unsigned idx)` and `Array::non_empty_domain(const std::string& name)`. * Added C++ API functions `Domain::dimension(unsigned idx)` and `Domain::dimension(const std::string& name)`. * Added C++ API function `Array::load_schema(ctx, uri)` and `Array::load_schema(ctx, uri, key_type, key, key_len)`. * Added C++ API function `Array::vacuum`. * Added C++ API functions `Array::non_empty_domain_var` (from index and name). * Added C++ API function `add_range` with string inputs. * Added C++ API function `range` with string outputs. * Added C++ API functions `Array` and `Context` constructors which take a c_api object to wrap. [#1623](https://github.com/TileDB-Inc/TileDB/pull/1623) ## API removals # TileDB v1.7.7 Release Notes ## Bug fixes * Fix expanded domain consolidation [#1572](https://github.com/TileDB-Inc/TileDB/pull/1572) # TileDB v1.7.6 Release Notes ## New features * Add MD5 and SHA256 checksum filters [#1515](https://github.com/TileDB-Inc/TileDB/pull/1515) ## Improvements * Added support for AWS Security Token Service session tokens via configuration option `vfs.s3.session_token`. [#1472](https://github.com/TileDB-Inc/TileDB/pull/1472) ## Deprecations ## Bug fixes * Fix new SHA1 for intel TBB in superbuild due to change in repository name [#1551](https://github.com/TileDB-Inc/TileDB/pull/1551) ## API additions ## API removals # TileDB v1.7.5 Release Notes ## New features ## Improvements * Avoid useless serialization of Array Metadata on close [#1485](https://github.com/TileDB-Inc/TileDB/pull/1485) * Update CONTRIBUTING and Code of Conduct [#1487](https://github.com/TileDB-Inc/TileDB/pull/1487) ## Deprecations ## Bug fixes * Fix deadlock in writes of TileDB Cloud Arrays [#1486](https://github.com/TileDB-Inc/TileDB/pull/1486) ## API additions ## API removals # TileDB v1.7.4 Release Notes ## New features ## Improvements * REST requests now will use http compression if available [#1479](https://github.com/TileDB-Inc/TileDB/pull/1479) ## Deprecations ## Bug fixes ## API additions ## API removals # TileDB v1.7.3 Release Notes ## New features ## Improvements * Array metadata fetching is now lazy (fetch on use) to improve array open performance [#1466](https://github.com/TileDB-Inc/TileDB/pull/1466) * libtiledb on Linux will no longer re-export symbols from statically linked dependencies [#1461](https://github.com/TileDB-Inc/TileDB/pull/1461) ## Deprecations ## Bug fixes ## API additions ## API removals # TileDB v1.7.2 Release Notes TileDB 1.7.2 contains bug fixes and several internal optimizations. ## New features ## Improvements * Added support for getting/setting array metadata via REST. [#1449](https://github.com/TileDB-Inc/TileDB/pull/1449) ## Deprecations ## Bug fixes * Fixed several REST query and deserialization bugs. [#1433](https://github.com/TileDB-Inc/TileDB/pull/1433), [#1437](https://github.com/TileDB-Inc/TileDB/pull/1437), [#1440](https://github.com/TileDB-Inc/TileDB/pull/1440), [#1444](https://github.com/TileDB-Inc/TileDB/pull/1444) * Fixed bug in setting certificate path on Linux for the REST client. [#1452](https://github.com/TileDB-Inc/TileDB/pull/1452) ## API additions ## API removals # TileDB v1.7.1 Release Notes TileDB 1.7.1 contains build system and bug fixes, and one non-breaking API update. ## New features ## Improvements ## Deprecations ## Bug fixes * Fixed bug in dense consolidation when the array domain is not divisible by the tile extents. [#1442](https://github.com/TileDB-Inc/TileDB/pull/1442) ## API additions * Added C API function `tiledb_array_has_metadata_key` and C++ API function `Array::has_metadata_key` [#1439](https://github.com/TileDB-Inc/TileDB/pull/1439) * Added support for indicating zero-value metadata by returning `value_num` == 1 from the `_get_metadatata` and `Array::get_metadata` APIs [#1438](https://github.com/TileDB-Inc/TileDB/pull/1438) (this is a non-breaking change, as the documented return of `value == nullptr` to indicate missing keys does not change)` ## API removals # TileDB v1.7.0 Release Notes TileDB 1.7.0 contains the new feature of array metadata, and numerous bugfixes. ## New features * Added array metadata. [#1377](https://github.com/TileDB-Inc/TileDB/pull/1377) ## Improvements * Allow writes to older-versioned arrays. [#1417](https://github.com/TileDB-Inc/TileDB/pull/1417) * Added overseen optimization to check the fragment non-empty domain before loading the fragment R-Tree. [#1395](https://github.com/TileDB-Inc/TileDB/pull/1395) * Use `major.minor` for SOVERSION instead of full `major.minor.rev`. [#1398](https://github.com/TileDB-Inc/TileDB/pull/1398) ## Bug fixes * Numerous query serialization bugfixes and performance improvements. * Numerous tweaks to build strategy for libcurl dependency. * Fix crash in StorageManager destructor when GlobalState init fails. [#1393](https://github.com/TileDB-Inc/TileDB/pull/1393) * Fix Windows destructor crash due to missing unlock (mutex/refcount). [#1400](https://github.com/TileDB-Inc/TileDB/pull/1400) * Normalize attribute names in multi-range size estimation C API. [#1408](https://github.com/TileDB-Inc/TileDB/pull/1408) ## API additions * Added C API functions `tiledb_query_get_{fragment_num,fragment_uri,fragment_timestamp_range}`. [#1396](https://github.com/TileDB-Inc/TileDB/pull/1396) * Added C++ API functions `Query::{fragment_num,fragment_uri,fragment_timestamp_range}`. [#1396](https://github.com/TileDB-Inc/TileDB/pull/1396) * Added C API function `tiledb_ctx_set_tag` and C++ API `Context::set_tag()`. [#1406](https://github.com/TileDB-Inc/TileDB/pull/1406) * Add config support for S3 ca_path, ca_file, and verify_ssl options. [#1376](https://github.com/TileDB-Inc/TileDB/pull/1376) ## API removals * Removed key-value functionality, `tiledb_kv_*` functions from the C API and Map and MapSchema from the C++ API. [#1415](https://github.com/TileDB-Inc/TileDB/pull/1415) # TileDB v1.6.3 Release Notes ## Additions * Added config param `vfs.s3.logging_level`. [#1236](https://github.com/TileDB-Inc/TileDB/pull/1236) ## Bug fixes * Fixed FP slice point-query with small (eps) gap coordinates. [#1384](https://github.com/TileDB-Inc/TileDB/pull/1384) * Fixed several unused variable warnings in unit tests. [#1385](https://github.com/TileDB-Inc/TileDB/pull/1385) * Fixed missing include in `subarray.h`. [#1374](https://github.com/TileDB-Inc/TileDB/pull/1374) * Fixed missing virtual destructor in C++ API `schema.h`. [#1391](https://github.com/TileDB-Inc/TileDB/pull/1391) * Fixed C++ API build error with clang regarding deleted default constructors. [#1394](https://github.com/TileDB-Inc/TileDB/pull/1394) # TileDB v1.6.2 Release Notes ## Bug fixes * Fix incorrect version number listed in `tiledb_version.h` header file and doc page. * Fix issue with release notes from 1.6.0 release. [#1359](https://github.com/TileDB-Inc/TileDB/pull/1359) # TileDB v1.6.1 Release Notes ## Bug fixes * Bug fix in incomplete query behavior. [#1358](https://github.com/TileDB-Inc/TileDB/pull/1358) # TileDB v1.6.0 Release Notes The 1.6.0 release adds the major new feature of non-continuous range slicing, as well as a number of stability and usability improvements. Support is also introduced for datetime dimensions and attributes. ## New features * Added support for multi-range reads (non-continuous range slicing) for dense and sparse arrays. * Added support for datetime domains and attributes. ## Improvements * Removed fragment metadata caching. [#1197](https://github.com/TileDB-Inc/TileDB/pull/1197) * Removed array schema caching. [#1197](https://github.com/TileDB-Inc/TileDB/pull/1197) * The tile MBR in the in-memory fragment metadata are organized into an R-Tree, speeding up tile overlap operations during subarray reads. [#1197](https://github.com/TileDB-Inc/TileDB/pull/1197) * Improved encryption key validation process when opening already open arrays. Fixes issue with indefinite growing of the URI to encryption key mapping in `StorageManager` (the mapping is no longer needed). [#1197](https://github.com/TileDB-Inc/TileDB/pull/1197) * Improved dense write performance in some benchmarks. [#1229](https://github.com/TileDB-Inc/TileDB/pull/1229) * Support for direct writes without using the S3 multi-part API. Allows writing to Google Cloud Storage S3 compatibility mode. [#1219](https://github.com/TileDB-Inc/TileDB/pull/1219) * Removed 256-character length limit from URIs. [#1288](https://github.com/TileDB-Inc/TileDB/pull/1288) * Dense reads and writes now always require a subarray to be set, to avoid confusion. [#1320](https://github.com/TileDB-Inc/TileDB/pull/1320) * Added query and array schema serialization API. [#1262](https://github.com/TileDB-Inc/TileDB/pull/1262) ## Deprecations * The TileDB KV API has been deprecated and will be [removed entirely](https://github.com/TileDB-Inc/TileDB/issues/1258) in a future release. The KV mechanism will be removed when full support for string-valued dimensions has been added. ## Bug fixes * Bug fix with amplification factor in consolidation. [#1275](https://github.com/TileDB-Inc/TileDB/pull/1275) * Fixed thread safety issue in opening arrays. [#1252](https://github.com/TileDB-Inc/TileDB/pull/1252) * Fixed floating point exception when writing fixed-length attributes with a large cell value number. [#1289](https://github.com/TileDB-Inc/TileDB/pull/1289) * Fixed off-by-one limitation with floating point dimension tile extents. [#1314](https://github.com/TileDB-Inc/TileDB/pull/1314) ## API additions ### C API * Added functions `tiledb_query_{get_est_result_size, get_est_result_size_var, add_range, get_range_num, get_range}`. * Added function `tiledb_query_get_layout` * Added datatype `tiledb_buffer_t` and functions `tiledb_buffer_{alloc,free,get_type,set_type,get_data,set_data}`. * Added datatype `tiledb_buffer_list_t` and functions `tiledb_buffer_list_{alloc,free,get_num_buffers,get_total_size,get_buffer,flatten}`. * Added string conversion functions `tiledb_*_to_str()` and `tiledb_*_from_str()` for all public enum types. * Added config param `vfs.file.enable_filelocks` * Added datatypes `TILEDB_DATETIME_*` * Added function `tiledb_query_get_array` ### C++ API * Added functions `Query::{query_layout, add_range, range, range_num, array}`. ## Breaking changes ### C API * Removed ability to set `null` tile extents on dimensions. All dimensions must now have an explicit tile extent. ### C++ API * Removed cast operators of C++ API objects to their underlying C API objects. This helps prevent inadvertent memory issues such as double-frees. * Removed ability to set `null` tile extents on dimensions. All dimensions must now have an explicit tile extent. * Changed argument `config` in `Array::consolidate()` from a const-ref to a pointer. * Removed default includes of `Map` and `MapSchema`. To use the deprecated KV API temporarily, include `` explicitly. # TileDB v1.5.1 Release Notes ## Improvements * Better handling of `{C,CXX}FLAGS` during the build. [#1209](https://github.com/TileDB-Inc/TileDB/pull/1209) * Update libcurl dependency to v7.64.1 for S3 builds. [#1240](https://github.com/TileDB-Inc/TileDB/pull/1240) ## Bug fixes * S3 SDK build error fix. [#1201](https://github.com/TileDB-Inc/TileDB/pull/1201) * Fixed thread safety issue with ZStd compressor. [#1208](https://github.com/TileDB-Inc/TileDB/pull/1208) * Fixed crash in consolidation due to accessing invalid entry [#1213](https://github.com/TileDB-Inc/TileDB/pull/1213) * Fixed memory leak in C++ KV API. [#1247](https://github.com/TileDB-Inc/TileDB/pull/1247) * Fixed minor bug when writing in global order with empty buffers. [#1248](https://github.com/TileDB-Inc/TileDB/pull/1248) # TileDB v1.5.0 Release Notes The 1.5.0 release focuses on stability, performance, and usability improvements, as well a new consolidation algorithm. ## New features * Added an advanced, tunable consolidation algorithm. [#1101](https://github.com/TileDB-Inc/TileDB/pull/1101) ## Improvements * Small tiles are now batched for larger VFS read operations, improving read performance in some cases. [#1093](https://github.com/TileDB-Inc/TileDB/pull/1093) * POSIX error messages are included in log messages. [#1076](https://github.com/TileDB-Inc/TileDB/pull/1076) * Added `tiledb` command-line tool with several supported actions. [#1081](https://github.com/TileDB-Inc/TileDB/pull/1081) * Added build flag to disable internal statistics. [#1111](https://github.com/TileDB-Inc/TileDB/pull/1111) * Improved memory overhead slightly by lazily allocating memory before checking the tile cache. [#1141](https://github.com/TileDB-Inc/TileDB/pull/1141) * Improved tile cache utilization by removing erroneous use of cache for metadata. [#1151](https://github.com/TileDB-Inc/TileDB/pull/1151) * S3 multi-part uploads are aborted on error. [#1166](https://github.com/TileDB-Inc/TileDB/pull/1166) ## Bug fixes * Bug fix when reading from a sparse array with real domain. Also added some checks on NaN and INF. [#1100](https://github.com/TileDB-Inc/TileDB/pull/1100) * Fixed C++ API functions `group_by_cell` and `ungroup_var_buffer` to treat offsets in units of bytes. [#1047](https://github.com/TileDB-Inc/TileDB/pull/1047) * Several HDFS test build errors fixed. [#1092](https://github.com/TileDB-Inc/TileDB/pull/1092) * Fixed incorrect indexing in `parallel_for`. [#1105](https://github.com/TileDB-Inc/TileDB/pull/1105) * Fixed incorrect filter statistics counters. [#1112](https://github.com/TileDB-Inc/TileDB/pull/1112) * Preserve anonymous attributes in `ArraySchema` copy constructor. [#1144](https://github.com/TileDB-Inc/TileDB/pull/1144) * Fix non-virtual destructors in C++ API. [#1153](https://github.com/TileDB-Inc/TileDB/pull/1153) * Added zlib dependency to AWS SDK EP. [#1165](https://github.com/TileDB-Inc/TileDB/pull/1165) * Fixed a hang in the 'S3::ls()'. [#1183](https://github.com/TileDB-Inc/TileDB/pull/1182) * Many other small and miscellaneous bug fixes. ## API additions ### C API * Added function `tiledb_vfs_dir_size`. * Added function `tiledb_vfs_ls`. * Added config params `vfs.max_batch_read_size` and `vfs.max_batch_read_amplification`. * Added functions `tiledb_{array,kv}_encryption_type`. * Added functions `tiledb_stats_{dump,free}_str`. * Added function `tiledb_{array,kv}_schema_has_attribute`. * Added function `tiledb_domain_has_dimension`. ### C++ API * `{Array,Map}::consolidate{_with_key}` now takes a `Config` as an optional argument. * Added function `VFS::dir_size`. * Added function `VFS::ls`. * Added `{Array,Map}::encryption_type()`. * Added `{ArraySchema,MapSchema}::has_attribute()` * Added `Domain::has_dimension()` * Added constructor overloads for `Array` and `Map` to take a `std::string` encryption key. * Added overloads for `{Array,Map}::{open,create,consolidate}` to take a `std::string` encryption key. * Added untyped overloads for `Query::set_buffer()`. ## Breaking changes ### C API * Deprecated `tiledb_compressor_t` APIs from v1.3.x have been removed, replaced by the `tiledb_filter_list` API. [#1128](https://github.com/TileDB-Inc/TileDB/pull/1128) * `tiledb_{array,kv}_consolidate{_with_key}` now takes a `tiledb_config_t*` as argument. ### C++ API * Deprecated `tiledb::Compressor` APIs from v1.3.x have been removed, replaced by the `FilterList` API. [#1128](https://github.com/TileDB-Inc/TileDB/pull/1128) # TileDB v1.4.2 Release Notes ## Bug fixes * Fixed support for config parameter values `sm.num_reader_threads` and `sm.num_writer_threads. User-specified values had been ignored for these parameters. [#1096](https://github.com/TileDB-Inc/TileDB/pull/1096) * Fixed GCC 7 linker errors. [#1091](https://github.com/TileDB-Inc/TileDB/pull/1091) * Bug fix in the case of dense reads in the presence of both dense and sparse fragments. [#1079](https://github.com/TileDB-Inc/TileDB/pull/1074) * Fixed double-delta decompression bug on reads for uncompressible chunks. [#1074](https://github.com/TileDB-Inc/TileDB/pull/1074) * Fixed unnecessary linking of shared zlib when using TileDB superbuild. [#1125](https://github.com/TileDB-Inc/TileDB/pull/1125) ## Improvements * Added lazy creation of S3 client instance on first request. [#1084](https://github.com/TileDB-Inc/TileDB/pull/1084) * Added config params `vfs.s3.aws_access_key_id` and `vfs.s3.aws_secret_access_key` for configure s3 access at runtime. [#1036](https://github.com/TileDB-Inc/TileDB/pull/1036) * Added missing check if coordinates obey the global order in global order sparse writes. [#1039](https://github.com/TileDB-Inc/TileDB/pull/1039) # TileDB v1.4.1 Release Notes ## Bug fixes * Fixed bug in incomplete queries, which should always return partial results. An incomplete status with 0 returned results must always mean that the buffers cannot even fit a single cell value. [#1056](https://github.com/TileDB-Inc/TileDB/pull/1056) * Fixed performance bug during global order write finalization. [#1065](https://github.com/TileDB-Inc/TileDB/pull/1065) * Fixed error in linking against static TileDB on Windows. [#1058](https://github.com/TileDB-Inc/TileDB/pull/1058) * Fixed build error when building without TBB. [#1051](https://github.com/TileDB-Inc/TileDB/pull/1051) ## Improvements * Set LZ4, Zlib and Zstd compressors to build in release mode. [#1034](https://github.com/TileDB-Inc/TileDB/pull/1034) * Changed coordinates to always be split before filtering. [#1054](https://github.com/TileDB-Inc/TileDB/pull/1054) * Added type-safe filter option methods to C++ API. [#1062](https://github.com/TileDB-Inc/TileDB/pull/1062) # TileDB v1.4.0 Release Notes The 1.4.0 release brings two new major features, attribute filter lists and at-rest array encryption, along with bugfixes and performance improvements. **Note:** TileDB v1.4.0 changes the on-disk array format. Existing arrays should be re-written using TileDB v1.4.0 before use. Starting from v1.4.0 and on, backwards compatibility for reading old-versioned arrays will be fully supported. ## New features * All array data can now be encrypted at rest using AES-256-GCM symmetric encryption. [#968](https://github.com/TileDB-Inc/TileDB/pull/968) * Negative and real-valued domain types are now fully supported. [#885](https://github.com/TileDB-Inc/TileDB/pull/885) * New filter API for transforming attribute data with an ordered list of filters. [#912](https://github.com/TileDB-Inc/TileDB/pull/912) * Current filters include: previous compressors, bit width reduction, bitshuffle, byteshuffle, and positive-delta encoding. * The bitshuffle filter uses an implementation by [Kiyoshi Masui](https://github.com/kiyo-masui/bitshuffle). * The byteshuffle filter uses an implementation by [Francesc Alted](https://github.com/Blosc/c-blosc) (from the Blosc project). * Arrays can now be opened at specific timestamps. [#984](https://github.com/TileDB-Inc/TileDB/pull/984) ## Deprecations * The C and C++ APIs for compression have been deprecated. The corresponding filter API should be used instead. The compression API will be removed in a future TileDB version. [#1008](https://github.com/TileDB-Inc/TileDB/pull/1008) * Removed Blosc compressors (obviated by byteshuffle -> compressor filter list). ## Bug fixes * Fix issue where performing a read query with empty result could cause future reads to return empty [#882](https://github.com/TileDB-Inc/TileDB/pull/882) * Fix TBB initialization bug with multiple contexts [#898](https://github.com/TileDB-Inc/TileDB/pull/898) * Fix bug in max buffer sizes estimation [#903](https://github.com/TileDB-Inc/TileDB/pull/903) * Fix Buffer allocation size being incorrectly set on realloc [#911](https://github.com/TileDB-Inc/TileDB/pull/911) ## Improvements * Added check if the coordinates fall out-of-bounds (i.e., outside the array domain) during sparse writes, and added config param `sm.check_coord_oob` to enable/disable the check (enabled by default). [#996](https://github.com/TileDB-Inc/TileDB/pull/996) * Add config params `sm.num_reader_threads` and `sm.num_writer_threads` for separately controlling I/O parallelism from compression parallelism. * Added contribution guidelines [#899](https://github.com/TileDB-Inc/TileDB/pull/899) * Enable building TileDB in Cygwin environment on Windows [#890](https://github.com/TileDB-Inc/TileDB/pull/890) * Added a simple benchmarking script and several benchmark programs [#889](https://github.com/TileDB-Inc/TileDB/pull/889) * Changed C API and disk format integer types to have explicit bit widths. [#981](https://github.com/TileDB-Inc/TileDB/pull/981) ## API additions ### C API * Added `tiledb_{array,kv}_open_at`, `tiledb_{array,kv}_open_at_with_key` and `tiledb_{array,kv}_reopen_at`. * Added `tiledb_{array,kv}_get_timestamp()`. * Added `tiledb_kv_is_open` * Added `tiledb_filter_t` `tiledb_filter_type_t`, `tiledb_filter_option_t`, and `tiledb_filter_list_t` types * Added `tiledb_filter_*` and `tiledb_filter_list_*` functions. * Added `tiledb_attribute_{set,get}_filter_list`, `tiledb_array_schema_{set,get}_coords_filter_list`, `tiledb_array_schema_{set,get}_offsets_filter_list` functions. * Added `tiledb_query_get_buffer` and `tiledb_query_get_buffer_var`. * Added `tiledb_array_get_uri` * Added `tiledb_encryption_type_t` * Added `tiledb_array_create_with_key`, `tiledb_array_open_with_key`, `tiledb_array_schema_load_with_key`, `tiledb_array_consolidate_with_key` * Added `tiledb_kv_create_with_key`, `tiledb_kv_open_with_key`, `tiledb_kv_schema_load_with_key`, `tiledb_kv_consolidate_with_key` ### C++ API * Added encryption overloads for `Array()`, `Array::open()`, `Array::create()`, `ArraySchema()`, `Map()`, `Map::open()`, `Map::create()` and `MapSchema()`. * Added `Array::timestamp()` and `Array::reopen_at()` methods. * Added `Filter` and `FilterList` classes * Added `Attribute::filter_list()`, `Attribute::set_filter_list()`, `ArraySchema::coords_filter_list()`, `ArraySchema::set_coords_filter_list()`, `ArraySchema::offsets_filter_list()`, `ArraySchema::set_offsets_filter_list()` functions. * Added overloads for `Array()`, `Array::open()`, `Map()`, `Map::open()` for handling timestamps. ## Breaking changes ### C API * Removed Blosc compressors. * Removed `tiledb_kv_set_max_buffered_items`. * Modified `tiledb_kv_open` to not take an attribute subselection, but instead take as input the query type (similar to arrays). This makes the key-value store behave similarly to arrays, which means that the key-value store does not support interleaved reads/writes any more (an opened key-value store is used either for reads or writes, but not both). * `tiledb_kv_close` does not flush the written items. Instead, `tiledb_kv_flush` must be invoked explicitly. ### C++ API * Removed Blosc compressors. * Removed `Map::set_max_buffered_items`. * Modified `Map::Map` and `Map::open` to not take an attribute subselection, but instead take as input the query type (similar to arrays). This makes the key-value store behave similarly to arrays, which means that the key-value store does not support interleaved reads/writes any more (an opened key-value store is used either for reads or writes, but not both). * `Map::close` does not flush the written items. Instead, `Map::flush` must be invoked explicitly. # TileDB v1.3.2 Release Notes ## Bug fixes * Fix read query bug from multiple fragments when query layout differs from array layout [#869](https://github.com/TileDB-Inc/TileDB/pull/869) * Fix error when consolidating empty arrays [#861](https://github.com/TileDB-Inc/TileDB/pull/861) * Fix bzip2 external project URL [#875](https://github.com/TileDB-Inc/TileDB/pull/875) * Invalidate cached buffer sizes when query subarray changes [#882](https://github.com/TileDB-Inc/TileDB/pull/882) ## Improvements * Add check to ensure tile extent greater than zero [#866](https://github.com/TileDB-Inc/TileDB/pull/866) * Add `TILEDB_INSTALL_LIBDIR` CMake option [#858](https://github.com/TileDB-Inc/TileDB/pull/858) * Remove `TILEDB_USE_STATIC_*` CMake variables from build [#871](https://github.com/TileDB-Inc/TileDB/pull/871) * Allow HDFS init to succeed even if libhdfs is not found [#873](https://github.com/TileDB-Inc/TileDB/pull/873) # TileDB v1.3.1 Release Notes ## Bug fixes * Add missing checks when setting subarray for sparse writes [#843](https://github.com/TileDB-Inc/TileDB/pull/843) * Fix dl linking build issue for C/C++ examples on Linux [#844](https://github.com/TileDB-Inc/TileDB/pull/844) * Add missing type checks for C++ api Query object [#845](https://github.com/TileDB-Inc/TileDB/pull/845) * Add missing check that coordinates are provided for sparse writes [#846](https://github.com/TileDB-Inc/TileDB/pull/846) ## Improvements * Fixes to compile on llvm v3.5 [#831](https://github.com/TileDB-Inc/TileDB/pull/831) * Add option disable building unittests [#836](https://github.com/TileDB-Inc/TileDB/pull/836) # TileDB v1.3.0 Release Notes Version 1.3.0 focused on performance, stability, documentation and API improvements/enhancements. ## New features * New guided tutorial series added to documentation. * Query times improved dramatically with internal parallelization using TBB (multiple PRs) * Optional deduplication pass on writes can be enabled [#636](https://github.com/TileDB-Inc/TileDB/pull/636) * New internal statistics reporting system to aid in performance optimization [#736](https://github.com/TileDB-Inc/TileDB/pull/736) * Added string type support: ASCII, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4 [#415](https://github.com/TileDB-Inc/TileDB/pull/415) * Added `TILEDB_ANY` datatype [#446](https://github.com/TileDB-Inc/TileDB/pull/446) * Added parallelized VFS read operations, enabled by default [#499](https://github.com/TileDB-Inc/TileDB/pull/499) * SIGINT signals will cancel in-progress queries [#578](https://github.com/TileDB-Inc/TileDB/pull/578) ## Improvements * Arrays must now be open and closed before issuing queries, which clarifies the TileDB consistency model. * Improved handling of incomplete queries and variable-length attribute data. * Added parallel S3, POSIX, and Win32 reads and writes, enabled by default. * Query performance improvements with parallelism (using TBB as a dependency). * Got rid of special S3 "directory objects." * Refactored sparse reads, making them simpler and more amenable to parallelization. * Refactored dense reads, making them simpler and more amenable to parallelization. * Refactored dense ordered writes, making them simpler and more amenable to parallelization. * Refactored unordered writes, making them simpler and more amenable to parallelization. * Refactored global writes, making them simpler and more amenable to parallelization. * Added ability to cancel pending background/async tasks. SIGINT signals now cancel pending tasks. * Async queries now use a configurable number of background threads (default number of threads is 1). * Added checks for duplicate coordinates and option for coordinate deduplication. * Map usage via the C++ API `operator[]` is faster, similar to the `MapItem` path. ## Bug Fixes * Fixed bugs with reads/writes of variable-sized attributes. * Fixed file locking issue with simultaneous queries. * Fixed S3 issues with simultaneous queries within the same context. ## API additions ### C API * Added `tiledb_array_alloc` * Added `tiledb_array_{open, close, free}` * Added `tiledb_array_reopen` * Added `tiledb_array_is_open` * Added `tiledb_array_get_query_type` * Added `tiledb_array_get_schema` * Added `tiledb_array_max_buffer_size` and `tiledb_array_max_buffer_size_var` * Added `tiledb_query_finalize` function. * Added `tiledb_ctx_cancel_tasks` function. * Added `tiledb_query_set_buffer` and `tiledb_query_set_buffer_var` which sets a single attribute buffer * Added `tiledb_query_get_type` * Added `tiledb_query_has_results` * Added `tiledb_vfs_get_config` function. * Added `tiledb_stats_{enable,disable,reset,dump}` functions. * Added `tiledb_kv_alloc` * Added `tiledb_kv_reopen` * Added `tiledb_kv_has_key` to check if a key exists in the key-value store. * Added `tiledb_kv_free`. * Added `tiledb_kv_iter_alloc` which takes as input a kv object * Added `tiledb_kv_schema_{set,get}_capacity`. * Added `tiledb_kv_is_dirty` * Added `tiledb_kv_iter_reset` * Added `sm.num_async_threads`, `sm.num_tbb_threads`, and `sm.enable_signal_handlers` config parameters. * Added `sm.check_dedup_coords` and `sm.dedup_coords` config parameters. * Added `vfs.num_threads` and `vfs.min_parallel_size` config parameters. * Added `vfs.{s3,file}.max_parallel_ops` config parameters. * Added `vfs.s3.multipart_part_size` config parameter. * Added `vfs.s3.proxy_{scheme,host,port,username,password}` config parameters. ### C++ API * Added `Array::{open, close}` * Added `Array::reopen` * Added `Array::is_open` * Added `Array::query_type` * Added `Context::cancel_tasks()` function. * Added `Query::finalize()` function. * Added `Query::query_type` * Added `Query::has_results` * Changed the return type of the `Query` setters to return the object reference. * Added an extra `Query` constructor that omits the query type (this is inherited from the input array). * Added `Map::{open, close}` * Added `Map::reopen` * Added `Map::is_dirty` * Added `Map::has_key` to check for key presence. * A `tiledb::Map` defined with only one attribute will allow implicit usage, e.x. `map[key] = val` instead of `map[key][attr] = val`. * Added optional attributes argument in `Map::Map` and `Map::open` * `MapIter` can be used to create iterators for a map. * Added `MapIter::reset` * Added `MapSchema::set_capacity` and `MapSchema::capacity` * Support for trivially copyable objects, such as a custom data struct, was added. They will be backed by an `sizeof(T)` sized `char` attribute. * `Attribute::create` can now be used with compound `T`, such as `std::string` and `std::vector`, and other objects such as a simple data struct. * Added a `Dimension::create` factory function that does not take tile extent, which sets the tile extent to `NULL`. * `tiledb::Attribute` can now be constructed with an enumerated type (e.x. `TILEDB_CHAR`). * Added `Stats` class (wraps C API `tiledb_stats_*` functions) * Added `Config::save_to_file` ## Breaking changes ### C API * `tiledb_query_finalize` must **always** be called before `tiledb_query_free` after global-order writes. * Removed `tiledb_vfs_move` and added `tiledb_vfs_move_file` and `tiledb_vfs_move_dir` instead. * Removed `force` argument from `tiledb_vfs_move_*` and `tiledb_object_move`. * Removed `vfs.s3.file_buffer_size` config parameter. * Removed `tiledb_query_get_attribute_status`. * All `tiledb_*_free` functions now return `void` and do not take `ctx` as input (except for `tiledb_ctx_free`). * Changed signature of `tiledb_kv_close` to take a `tiledb_kv_t*` argument instead of `tiledb_kv_t**`. * Renamed `tiledb_domain_get_rank` to `tiledb_domain_get_ndim` to avoid confusion with matrix def of rank. * Changed signature of `tiledb_array_get_non_empty_domain`. * Removed `tiledb_array_compute_max_read_buffer_sizes`. * Changed signature of `tiledb_{array,kv}_open`. * Removed `tiledb_kv_iter_create` * Renamed all C API functions that create TileDB objects from `tiledb_*_create` to `tiledb_*_alloc`. * Removed `tiledb_query_set_buffers` * Removed `tiledb_query_reset_buffers` * Added query type argument to `tiledb_array_open` * Changed argument order in `tiledb_config_iter_alloc`, `tiledb_ctx_alloc`, `tiledb_attribute_alloc`, `tiledb_dimension_alloc`, `tiledb_array_schema_alloc`, `tiledb_kv_schema_load`, `tiledb_kv_get_item`, `tiledb_vfs_alloc` ### C++ API * Fixes with `Array::max_buffer_elements` and `Query::result_buffer_elements` to comply with the API docs. `pair.first` is the number of elements of the offsets buffer. If `pair.first` is 0, it is a fixed-sized attribute or coordinates. * `std::array` is backed by a `char` tiledb attribute since the size is not guaranteed. * Headers have the `tiledb_cpp_api_` prefix removed. For example, the include is now `#include ` * Removed `VFS::move` and added `VFS::move_file` and `VFS::move_dir` instead. * Removed `force` argument from `VFS::move_*` and `Object::move`. * Removed `vfs.s3.file_buffer_size` config parameter. * `Query::finalize` must **always** be called before going out of scope after global-order writes. * Removed `Query::attribute_status`. * The API was made header only to improve cross-platform compatibility. `config_iter.h`, `filebuf.h`, `map_item.h`, `map_iter.h`, and `map_proxy.h` are no longer available, but grouped into the headers of the objects they support. * Previously a `tiledb::Map` could be created from a `std::map`, an anonymous attribute name was defined. This must now be explicitly defined: `tiledb::Map::create(tiledb::Context, std::string uri, std::map, std::string attr_name)` * Removed `tiledb::Query::reset_buffers`. Any previous usages can safely be removed. * `Map::begin` refers to the same iterator object. For multiple concurrent iterators, a `MapIter` should be manually constructed instead of using `Map::begin()` more than once. * Renamed `Domain::rank` to `Domain::ndim` to avoid confusion with matrix def of rank. * Added query type argument to `Array` constructor * Removed iterator functionality from `Map`. * Removed `Array::parition_subarray`. # TileDB v1.2.2 Release Notes ## Bug fixes * Fix I/O bug on POSIX systems with large reads/writes ([#467](https://github.com/TileDB-Inc/TileDB/pull/467)) * Memory overflow error handling (moved from constructors to init functions) ([#472](https://github.com/TileDB-Inc/TileDB/pull/472)) * Memory leaks with realloc in case of error ([#472](https://github.com/TileDB-Inc/TileDB/pull/472)) * Handle non-existent config param in C++ API ([#475](https://github.com/TileDB-Inc/TileDB/pull/475)) * Read query overflow handling ([#485](https://github.com/TileDB-Inc/TileDB/pull/485)) ## Improvements * Changed S3 default config so that AWS S3 just works ([#455](https://github.com/TileDB-Inc/TileDB/pull/455)) * Minor S3 optimizations and error message fixes ([#462](https://github.com/TileDB-Inc/TileDB/pull/462)) * Documentation additions including S3 usage ([#456](https://github.com/TileDB-Inc/TileDB/pull/456), [#458](https://github.com/TileDB-Inc/TileDB/pull/458), [#459](https://github.com/TileDB-Inc/TileDB/pull/459)) * Various CI improvements ([#449](https://github.com/TileDB-Inc/TileDB/pull/449)) # TileDB v1.2.1 Release Notes ## Bug fixes * Fixed TileDB header includes for all examples ([#409](https://github.com/TileDB-Inc/TileDB/pull/409)) * Fixed TileDB library dynamic linking problem for C++ API ([#412](https://github.com/TileDB-Inc/TileDB/pull/412)) * Fixed VS2015 build errors ([#424](https://github.com/TileDB-Inc/TileDB/pull/424)) * Bug fix in the sparse case ([#434](https://github.com/TileDB-Inc/TileDB/pull/434)) * Bug fix for 1D vector query layout ([#438](https://github.com/TileDB-Inc/TileDB/pull/438)) ## Improvements * Added documentation to API and examples ([#410](https://github.com/TileDB-Inc/TileDB/pull/410), [#414](https://github.com/TileDB-Inc/TileDB/pull/414)) * Migrated docs to Readthedocs ([#418](https://github.com/TileDB-Inc/TileDB/pull/418), [#420](https://github.com/TileDB-Inc/TileDB/pull/420), [#422](https://github.com/TileDB-Inc/TileDB/pull/422), [#423](https://github.com/TileDB-Inc/TileDB/pull/423), [#425](https://github.com/TileDB-Inc/TileDB/pull/425)) * Added dimension domain/tile extent checks ([#429](https://github.com/TileDB-Inc/TileDB/pull/429)) # TileDB v1.2.0 Release Notes The 1.2.0 release of TileDB includes many new features, improvements in stability and performance, and two new language interfaces (Python and C++). There are also several breaking changes in the C API and on-disk format, documented below. **Important Note**: due to several improvements and changes in the underlying array storage mechanism, you will need to recreate any existing arrays in order to use them with TileDB v1.2.0. ## New features * Windows support. TileDB is now fully supported on Windows systems (64-bit Windows 7 and newer). * Python API. We are very excited to announce the initial release of a Python API for TileDB. The Python API makes TileDB accessible to a much broader audience, allowing seamless integration with existing Python libraries such as NumPy, Pandas and the scientific Python ecosystem. * C++ API. We've included a C++ API, which allows TileDB to integrate into modern C++ applications without having to write code towards the C API. The C++ API is more concise and provides additional compile time type safety. * S3 object store support. You can now easily store, query, and manipulate your TileDB arrays on S3 API compatibile object stores, including Amazon's AWS S3 service. * Virtual filesystem interface. The TileDB API now exposes a virtual filesystem (or VFS) interface, allowing you to perform tasks such as file creation, deletion, reads, and appends without worrying about whether your files are stored on S3, HDFS, a POSIX or Windows filesystem, etc. * Key-value store. TileDB now provides a key-value (meta) data storage abstraction. Its implementation is built upon TileDB's sparse arrays and inherits all the properties of TileDB sparse arrays. ## Improvements * Homebrew formula added for easier installation on macOS. Homebrew is now the perferred method for installing TileDB and its dependencies on macOS. * Docker images updated to include stable/unstable/dev options, and easy configuration of additional components (e.g. S3 support). * Tile cache implemented, which will greatly speed up repeated queries on overlapping regions of the same array. * Ability to pass runtime configuration arguments to TileDB/VFS backends. * Unnamed (or "anonymous") dimensions are now supported; having a single anonymous attribute is also supported. * Concurrency bugfixes for several compressors. * Correctness issue fixed in double-delta compressor for some datatypes. * Better build behavior on systems with older GCC or CMake versions. * Several memory leaks and overruns fixed with help of sanitizers. * Many improved error condition checks and messages for easier debugging. * Many other small bugs and API inconsistencies fixed. ## C API additions * `tiledb_config_*`: Types and functions related to the new configuration object and functionality. * `tiledb_config_iter_*`: Iteration functionality for retieving parameters/values from the new configuration object. * `tiledb_ctx_get_config()`: Function to get a configuration from a context. * `tiledb_filesystem_t`: Filesystem type enum. * `tiledb_ctx_is_supported_fs()`: Function to check for support for a given filesystem backend. * `tiledb_error_t`, `tiledb_error_message()` and `tiledb_error_free()`: Type and functions for TileDB error messages. * `tiledb_ctx_get_last_error()`: Function to get last error from context. * `tiledb_domain_get_rank()`: Function to retrieve number of dimensions in a domain. * `tiledb_domain_get_dimension_from_index()` and `tiledb_domain_get_dimension_from_name()`: Replaces dimension iterators. * `tiledb_dimension_{create,free,get_name,get_type,get_domain,get_tile_extent}()`: Functions related to creation and manipulation of `tiledb_dimension_t` objects. * `tiledb_array_schema_set_coords_compressor()`: Function to set the coordinates compressor. * `tiledb_array_schema_set_offsets_compressor()`: Function to set the offsets compressor. * `tiledb_array_schema_get_attribute_{num,from_index,from_name}()`: Replaces attribute iterators. * `tiledb_query_create()`: Replaced many arguments with new `tiledb_query_set_*()` setter functions. * `tiledb_array_get_non_empty_domain()`: Function to retrieve the non-empty domain from an array. * `tiledb_array_compute_max_read_buffer_sizes()`: Function to compute an upper bound on the buffer sizes required for a read query. * `tiledb_object_ls()`: Function to visit the children of a path. * `tiledb_uri_to_path()`: Function to convert a file:// URI to a platform-native path. * `TILEDB_MAX_PATH` and `tiledb_max_path()`: The maximum length for tiledb resource paths. * `tiledb_kv_*`: Types and functions related to the new key-value store functionality. * `tiledb_vfs_*`: Types and functions related to the new virtual filesystem (VFS) functionality. ## Breaking changes ### C API * Rename `tiledb_array_metadata_t` -> `tiledb_array_schema_t`, and associated `tiledb_array_metadata_*` functions to `tiledb_array_schema_*`. * Remove `tiledb_attribute_iter_t`. * Remove `tiledb_dimension_iter_t`. * Rename `tiledb_delete()`, `tiledb_move()`, `tiledb_walk()` to `tiledb_object_{delete,move,walk}()`. * `tiledb_ctx_create`: Config argument added. * `tiledb_domain_create`: Datatype argument removed. * `tiledb_domain_add_dimension`: Name, domain and tile extent arguments replaced with single `tiledb_dimension_t` argument. * `tiledb_query_create()`: Replaced many arguments with new `tiledb_query_set_*()` setter functions. * `tiledb_array_create()`: Added array URI argument. * `tiledb_*_free()`: All free functions now take a pointer to the object pointer instead of simply object pointer. * The include files are now installed into a `tiledb` folder. The correct path is now `#include ` (or `#include ` for the C++ API). ### Resource Management * Support for moving resources across previous VFS backends (local fs <-> HDFS) has been removed. A more generic implementation for this functionality with improved performance is planned for the next version of TileDB. TileDB-2.6.2/LICENSE000066400000000000000000000021521417424417000136350ustar00rootroot00000000000000The MIT License (MIT) Copyright (c) 2017-2021 TileDB, Inc. Copyright (c) 2016 MIT and Intel Corporation Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. TileDB-2.6.2/README.md000066400000000000000000000105161417424417000141120ustar00rootroot00000000000000TileDB logo [![Azure Pipelines](https://dev.azure.com/TileDB-Inc/CI/_apis/build/status/TileDB-Inc.TileDB?branchName=dev)](https://dev.azure.com/TileDB-Inc/CI/_build/latest?definitionId=2&branchName=dev) ![](doc/anaconda.svg)[![Anaconda download count badge](https://anaconda.org/conda-forge/TileDB/badges/downloads.svg)](https://anaconda.org/conda-forge/TileDB) # The Universal Storage Engine TileDB is a powerful engine for storing and accessing **dense and sparse multi-dimensional arrays**, which can help you model any complex data efficiently. It is an embeddable C++ library that works on Linux, macOS, and Windows. It is open-sourced under the permissive MIT License, developed and maintained by [TileDB, Inc](https://tiledb.com/). To distinguish this project from other TileDB offerings, we often refer to it as *TileDB Embedded*. TileDB includes the following features: * Support for both **dense** and **sparse arrays** * Support for **dataframes** and **key-value stores** (via sparse arrays) * **Cloud storage** (AWS S3, Google Cloud Storage, Azure Blob Storage) * **Chunked** (tiled) arrays * Multiple **compression**, **encryption** and **checksum** filters * Fully **multi-threaded** implementation * **Parallel IO** * **Data versioning** (rapid updates, time traveling) * Array **metadata** * Array **groups** * Numerous **APIs** on top of the C++ library * Numerous **integrations** (Spark, Dask, MariaDB, GDAL, etc.) You can use TileDB to store data in a variety of applications, such as Genomics, Geospatial, Finance and more. The power of TileDB stems from the fact that any data can be modeled efficiently as either a dense or a sparse multi-dimensional array, which is the format used internally by most data science tooling. By storing your data and metadata in TileDB arrays, you abstract all the data storage and management pains, while efficiently accessing the data with your favorite data science tool. ## Quickstart You can install the TileDB library as follows: ```bash # Homebrew (macOS): $ brew update $ brew install tiledb-inc/stable/tiledb # Or Conda (macOS, Linux, Windows): $ conda install -c conda-forge tiledb ``` Alternatively, you can use the Docker image we provide: ```bash $ docker pull tiledb/tiledb $ docker run -it tiledb/tiledb ``` We include several [examples](https://github.com/TileDB-Inc/TileDB/tree/dev/examples). You can start with the following: * [Dense array example](https://github.com/TileDB-Inc/TileDB/blob/dev/examples/cpp_api/quickstart_dense.cc) * [Sparse array example](https://github.com/TileDB-Inc/TileDB/blob/dev/examples/cpp_api/quickstart_sparse.cc) ## Documentation You can find the detailed TileDB documentation at [https://docs.tiledb.com](https://docs.tiledb.com). ## Building from source Please see [building from source](https://docs.tiledb.com/main/solutions/tiledb-embedded/installation/building-from-source) in the documentation. ## Format Specification The TileDB data format is open-source and can be found [here](format_spec/FORMAT_SPEC.md). ## APIs The TileDB team maintains a variety of APIs built on top of the C++ library: * [Python](https://github.com/TileDB-Inc/TileDB-Py) * [R](https://github.com/TileDB-Inc/TileDB-R) * [Java](https://github.com/TileDB-Inc/TileDB-Java) * [Go](https://github.com/TileDB-Inc/TileDB-Go) ## Integrations TileDB is also integrated with several popular databases and data science tools: * [Spark](https://docs.tiledb.com/spark/) * [Dask](https://docs.tiledb.com/dask/) * [MariaDB](https://docs.tiledb.com/mariadb/) * [PrestoDB](https://docs.tiledb.com/prestodb/) * [Geospatial](https://docs.tiledb.com/geospatial/) (GDAL, PDAL, Rasterio) * [Genomics](https://docs.tiledb.com/genomics/) (gVCF) ## Get involved TileDB Embedded is an open-source project and welcomes all forms of contributions. Contributors to the project should read over the [contribution docs](https://github.com/TileDB-Inc/TileDB/blob/dev/CONTRIBUTING.md) for more information. We'd love to hear from you. Drop us a line at [hello@tiledb.com](mailto:hello@tiledb.com), visit our [forum](https://forum.tiledb.com/) or [contact form](https://tiledb.com/contact), or [follow us on Twitter](https://twitter.com/tiledb) to stay informed of updates and news. TileDB-2.6.2/azure-pipelines.yml000066400000000000000000000125641417424417000164770ustar00rootroot00000000000000trigger: branches: include: - dev - release-* - refs/tags/* pr: branches: include: - '*' # must quote since "*" is a YAML reserved character; we want a string variables: - name: manylinuxImage value: quay.io/pypa/manylinux2010_x86_64:2021-06-07-00faba2 stages: - stage: CI condition: and(not(startsWith(variables['Build.SourceBranch'], 'refs/tags')), not(startsWith(variables['Build.SourceBranchName'], 'build-'))) variables: BACKWARDS_COMPATIBILITY_ARRAYS: OFF jobs: - job: timeoutInMinutes: 90 strategy: matrix: macOS_azure: imageName: 'macOS-10.15' TILEDB_AZURE: ON TILEDB_SERIALIZATION: ON CXX: clang++ ARTIFACT_OS: macOS_azure linux_asan: imageName: 'ubuntu-20.04' TILEDB_CI_ASAN: ON TILEDB_SERIALIZATION: ON CXX: g++ CC: gcc pool: vmImage: $(imageName) steps: - template: scripts/azure-linux_mac.yml - job: linux_manylinux pool: { vmImage: $(imageName) } container: ${{ variables.manylinuxImage }} variables: imageName: 'ubuntu-20.04' TILEDB_SERIALIZATION: ON CXX: g++ CC: gcc CXXFLAGS: "-lrt" CFLAGS: "-lrt" USE_MANYLINUX: ON steps: - template: scripts/azure-linux_mac.yml - job: Windows timeoutInMinutes: 90 strategy: matrix: VS2017: imageName: 'vs2017-win2016' TILEDB_S3: ON TILEDB_ARROW_TESTS: ON VS2017_azure: imageName: 'vs2017-win2016' TILEDB_AZURE: ON TILEDB_ARROW_TESTS: ON VS2017_serialization: imageName: 'vs2017-win2016' TILEDB_SERIALIZATION: ON pool: vmImage: $(imageName) steps: - template: scripts/azure-windows.yml - stage: Build_Release condition: or(or(or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), eq(variables['Build.SourceBranchName'], 'dev')), startsWith(variables['Build.SourceBranchName'], 'release-')), startsWith(variables['Build.SourceBranchName'], 'build-')) variables: TILEDB_S3: ON TILEDB_AZURE: ON TILEDB_GCS: ON TILEDB_HDFS: ON TILEDB_STATIC: OFF TILEDB_SERIALIZATION: ON TILEDB_FORCE_BUILD_DEPS: ON MACOSX_DEPLOYMENT_TARGET: 10.14 SUDO: 'sudo' jobs: - job: timeoutInMinutes: 90 strategy: matrix: macOS: imageName: 'macOS-10.15' CXX: clang++ ARTIFACT_OS: 'macos' ARTIFACT_ARCH: 'x86_64' CMAKE_OSX_ARCHITECTURES: "x86_64" macOS_arm64: imageName: 'macOS-10.15' CXX: clang++ ARTIFACT_OS: 'macos' ARTIFACT_ARCH: 'arm64' TILEDB_GCS: OFF TILEDB_WERROR: OFF CMAKE_OSX_ARCHITECTURES: "arm64" MACOSX_DEPLOYMENT_TARGET: 11 pool: vmImage: $(imageName) steps: - template: scripts/azure-linux_mac-release.yml - job: linux_manylinux pool: { vmImage: 'ubuntu-20.04' } container: ${{ variables.manylinuxImage }} strategy: matrix: standard: CXX: g++ CFLAGS: "-lrt" CXXFLAGS: "-lrt" ARTIFACT_OS: 'linux' ARTIFACT_ARCH: "x86_64" TILEDB_AVX2: ON SUDO: '' noavx2: CXX: g++ CFLAGS: "-lrt" CXXFLAGS: "-lrt" ARTIFACT_OS: 'linux' ARTIFACT_ARCH: "x86_64-noavx2" TILEDB_AVX2: OFF SUDO: '' steps: - template: scripts/azure-linux_mac-release.yml - job: Windows strategy: matrix: VS2017: imageName: 'vs2017-win2016' # Only S3 variable is currently supported in boostrap powershell TILEDB_GCS: OFF TILEDB_HDFS: OFF ARTIFACT_OS: 'windows' ARTIFACT_ARCH: 'x86_64' pool: vmImage: $(imageName) steps: - template: scripts/azure-windows-release.yml # NOTE: this section cannot be conditional because `Build.Repository.Name` is an agent-scoped variable. - stage: Github_Release condition: startsWith(variables['Build.SourceBranch'], 'refs/tags') pool: vmImage: 'ubuntu-latest' jobs: - job: steps: # First download artifacts - task: DownloadBuildArtifacts@0 inputs: downloadType: 'specific' - script: | echo $sourceVersion commitHash=${sourceVersion:0:7} echo $commitHash echo "##vso[task.setvariable variable=commitHash]$commitHash" ## Set variable for using in other tasks. env: { sourceVersion: $(Build.SourceVersion) } displayName: Git Hash 7-digit - task: GithubRelease@0 condition: succeeded() # only run this job if the build step succeeded displayName: 'Add artifacts to GitHub Release' inputs: gitHubConnection: TileDB-Inc-Release repositoryName: $(Build.Repository.Name) addChangeLog: false action: edit tag: $(Build.SourceBranchName) assets: | $(Build.ArtifactStagingDirectory)/built-libs/* TileDB-2.6.2/bootstrap000077500000000000000000000155771417424417000146120ustar00rootroot00000000000000#!/bin/bash # Adapted from Pivotals libhdfs3 native c++ hdfs client project # https://github.com/Pivotal-Data-Attic/pivotalrd-libhdfs3 die() { echo "$@" 1>&2 ; exit 1 } arg() { echo "$1" | sed "s/^${2-[^=]*=}//" | sed "s/:/;/g" } # Detect directory information. source_dir=`cd "\`dirname \"$0\"\`";pwd` binary_dir=`pwd` # Choose the default install prefix. default_prefix="${source_dir}/dist" # Choose the default dependency install prefix default_dependency=${DEPENDENCY_INSTALL_PREFIX} if [ x"${default_dependency}" = x"" ]; then default_dependency="/opt/dependency" fi # Display bootstrap usage usage() { echo ' Usage: '"$0"' [] Options: [defaults in brackets after descriptions] Configuration: --help print this message --prefix=PREFIX install files in tree rooted at PREFIX ['"${default_prefix}"'] --dependency=DIRs specify the dependencies at DIRs, separated by colon ['"${default_dependency}"'] --force-build-all-deps force building of all dependencies, even those already installed at system-level --disable-werror disables use of -Werror during build --disable-cpp-api disables building of the TileDB C++ API --disable-tests disables building the TileDB tests --disable-stats disables internal TileDB statistics --disable-avx2 disables use of AVX2 instructions --enable-static-tiledb enables building TileDB as a static library --enable-sanitizer=SAN enable sanitizer (clang only) (address|memory|leak|thread|undefined) --enable-debug enable debug build --enable-release-symbols enable create symbols for release build --enable-coverage enable build with code coverage support --enable-verbose enable verbose status messages --enable-hdfs enables the hdfs storage backend --enable-s3 enables the s3 storage backend --enable-azure enables the azure storage backend --enable-gcs enables the gcs storage backend --enable-serialization enables query serialization support --enable-tools enables TileDB CLI tools (experimental) --enable-ccache enables use of ccache (if present) --enable-arrow-tests enables the compilation of the arrow adapter unit tests --enable=arg1,arg2... same as "--enable-arg1 --enable-arg2 ..." Dependencies: c/c++ compiler GNU make cmake http://www.cmake.org/ Example: mkdir build cd build ../bootstrap --prefix=/path/to/install --dependency=/path/to/dep1:path/to/dep2... make make install ' exit 10 } # Parse arguments prefix_dirs="${default_prefix}" dependency_dir="${default_dependency}" sanitizer="" build_type="Release" tiledb_verbose="OFF" tiledb_hdfs="OFF" tiledb_s3="OFF" tiledb_azure="OFF" tiledb_gcs="OFF" tiledb_werror="ON" tiledb_tests="ON" tiledb_cpp_api="ON" tiledb_force_all_deps="OFF" tiledb_stats="ON" tiledb_static="OFF" tiledb_disable_avx2="" tiledb_serialization="OFF" tiledb_tools="OFF" tiledb_ccache="OFF" tiledb_arrow_tests="OFF" enable_multiple="" while test $# != 0; do case "$1" in --prefix=*) dir=`arg "$1"` prefix_dirs="$dir";; --dependency=*) dir=`arg "$1"` dependency_dir="$dir";; --force-build-all-deps) tiledb_force_all_deps="ON";; --disable-werror) tiledb_werror="OFF";; --disable-tests) tiledb_tests="OFF";; --disable-cpp-api) tiledb_cpp_api="OFF";; --disable-stats) tiledb_stats="OFF";; --disable-avx2) tiledb_disable_avx2="-DCOMPILER_SUPPORTS_AVX2=FALSE";; --enable-static-tiledb) tiledb_static="ON";; --enable-sanitizer=*) san=`arg "$1"` sanitizer="$san";; --enable-debug) build_type="Debug";; --enable-release-symbols) build_type="RelWithDebInfo";; --enable-coverage) build_type="Coverage";; --enable-verbose) tiledb_verbose="ON";; --enable-hdfs) tiledb_hdfs="ON";; --enable-s3) tiledb_s3="ON";; --enable-azure) tiledb_azure="ON";; --enable-gcs) tiledb_gcs="ON";; --enable-serialization) tiledb_serialization="ON";; --enable-tools) tiledb_tools="ON";; --enable-ccache) tiledb_ccache="ON";; --enable-arrow-tests) tiledb_arrow_tests="ON";; --enable=*) s=`arg "$1"` enable_multiple="$s";; --help) usage ;; *) die "Unknown option: $1" ;; esac shift done # Parse the comma-separated list of enables. IFS=',' read -ra enables <<< "$enable_multiple" for en in "${enables[@]}"; do case "$en" in debug) build_type="Debug";; release-symbols) build_type="RelWithDebInfo";; coverage) build_type="Coverage";; verbose) tiledb_verbose="ON";; s3) tiledb_s3="ON";; azure) tiledb_azure="ON";; gcs) tiledb_gcs="ON";; serialization) tiledb_serialization="ON";; tools) tiledb_tools="ON";; ccache) tiledb_ccache="ON";; arrow-tests) tiledb_arrow_tests="ON";; hdfs) tiledb_hdfs="ON";; static-tiledb) tiledb_static="ON";; *) die "Unknown option: --enable-$en" ;; esac done if [ "${source_dir}" = "${binary_dir}" ]; then die "cannot build the project in the source directory! Out-of-source build is enforced!" fi # Check clang compiler if [[ x"${CC}" = x"" ]]; then CC=gcc fi if [[ x"${CXX}" = x"" ]]; then CXX=g++ fi c_compiler=`which ${CC}` cxx_compiler=`which ${CXX}` cmake=`which cmake` if [[ ! -x ${c_compiler} ]]; then die "cannot find c compiler" fi if [[ ! -x ${cxx_compiler} ]]; then die "cannot find cplusplus compiler" fi if [[ ! -x ${cmake} ]]; then die "cannot find cmake" fi # Configure ${cmake} -DCMAKE_BUILD_TYPE=${build_type} \ -DCMAKE_INSTALL_PREFIX="${prefix_dirs}" \ -DCMAKE_C_COMPILER="${c_compiler}" \ -DCMAKE_CXX_COMPILER="${cxx_compiler}" \ -DCMAKE_PREFIX_PATH="${dependency_dir}" \ -DTILEDB_VERBOSE=${tiledb_verbose} \ -DTILEDB_HDFS=${tiledb_hdfs} \ -DTILEDB_S3=${tiledb_s3} \ -DTILEDB_AZURE=${tiledb_azure} \ -DTILEDB_GCS=${tiledb_gcs} \ -DTILEDB_SERIALIZATION=${tiledb_serialization} \ -DTILEDB_TOOLS=${tiledb_tools} \ -DTILEDB_WERROR=${tiledb_werror} \ -DTILEDB_CPP_API=${tiledb_cpp_api} \ -DTILEDB_STATS=${tiledb_stats} \ -DTILEDB_STATIC=${tiledb_static} \ -DTILEDB_TESTS=${tiledb_tests} \ -DTILEDB_CCACHE=${tiledb_ccache} \ -DTILEDB_ARROW_TESTS=${tiledb_arrow_tests} \ -DTILEDB_FORCE_ALL_DEPS=${tiledb_force_all_deps} \ -DSANITIZER="${sanitizer}" \ ${tiledb_disable_avx2} \ "${source_dir}" || die "failed to configure the project" echo 'bootstrap success. Run "make" to build, "make check" to test, or "make -C tiledb install" to install.' TileDB-2.6.2/bootstrap.ps1000066400000000000000000000131571417424417000153010ustar00rootroot00000000000000# PowerShell script for performing TileDB bootstrapping process on # Windows. <# .SYNOPSIS This is a Powershell script to bootstrap a TileDB build on Windows. .DESCRIPTION This script will check dependencies, and run the CMake build generator to generate a Visual Studio solution file that can be used to build or develop TileDB. .PARAMETER Prefix Installs files in tree rooted at PREFIX (defaults to TileDB\dist). .PARAMETER Dependency Semicolon separated list to binary dependencies. .PARAMETER CMakeGenerator Optionally specify the CMake generator string, e.g. "Visual Studio 15 2017". Check 'cmake --help' for a list of supported generators. .PARAMETER EnableDebug Enable Debug build. .PARAMETER EnableReleaseSymbols Enable symbols with Release build. .PARAMETER EnableCoverage Enable build with code coverage support. .PARAMETER EnableVerbose Enable verbose status messages. .PARAMETER EnableAzure Enables building with the Azure storage backend. .PARAMETER EnableS3 Enables building with the S3 storage backend. .PARAMETER EnableSerialization Enables building with serialization support. .PARAMETER EnableStaticTileDB Enables building TileDB as a static library. .PARAMETER EnableBuildDeps Enables building TileDB dependencies from source (superbuild) .PARAMETER EnableTools Enables building TileDB CLI tools (experimental) .Parameter DisableWerror Disable use of warnings-as-errors (/WX) during build. .Parameter DisableCppApi Disable building the TileDB C++ API. .PARAMETER BuildProcesses Number of parallel compile jobs. .LINK https://github.com/TileDB-Inc/TileDB .EXAMPLE ..\bootstrap.ps1 -Prefix "\path\to\install" -Dependency "\path\to\dep1;\path\to\dep2" #> # Note -Debug and -Verbose are included in the PowerShell # CommonParameters list, so we don't duplicate them here. # TODO: that means they don't appear in the -? usage message. [CmdletBinding()] Param( [string]$Prefix, [string]$Dependency, [string]$CMakeGenerator, [switch]$EnableDebug, [switch]$EnableReleaseSymbols, [switch]$EnableCoverage, [switch]$EnableVerbose, [switch]$EnableAzure, [switch]$EnableS3, [switch]$EnableSerialization, [switch]$EnableStaticTileDB, [switch]$EnableTools, [switch]$EnableBuildDeps, [switch]$DisableWerror, [switch]$DisableCppApi, [switch]$DisableTests, [switch]$DisableStats, [Alias('J')] [int] $BuildProcesses = $env:NUMBER_OF_PROCESSORS ) # Return the directory containing this script file. function Get-ScriptDirectory { Split-Path -Parent $PSCommandPath } # Absolute path of TileDB directories. $SourceDirectory = Get-ScriptDirectory $BinaryDirectory = (Get-Item -Path ".\" -Verbose).FullName # Choose the default install prefix. $DefaultPrefix = Join-Path $SourceDirectory "dist" # Choose the default dependency install prefix. $DefaultDependency = $DefaultPrefix # Set TileDB build type $BuildType = "Release" if ($EnableDebug.IsPresent) { $BuildType = "Debug" } if ($EnableReleaseSymbols.IsPresent) { $BuildType = "RelWithDebInfo" } if ($EnableCoverage.IsPresent) { $BuildType = "Coverage" } # Set TileDB verbosity $Verbosity = "OFF" if ($EnableVerbose.IsPresent) { $Verbosity = "ON" } # Set TileDB Azure flag $UseAzure = "OFF" if ($EnableAzure.IsPresent) { $UseAzure = "ON" } # Set TileDB S3 flag $UseS3 = "OFF" if ($EnableS3.IsPresent) { $UseS3 = "ON" } $UseSerialization = "OFF" if ($EnableSerialization.IsPresent) { $UseSerialization = "ON" } $Werror = "ON" if ($DisableWerror.IsPresent) { $Werror = "OFF" } $CppApi = "ON" if ($DisableCppApi.IsPresent) { $CppApi = "OFF" } $Tests = "ON" if ($DisableTests.IsPresent) { $Tests = "OFF" } $Stats = "ON" if ($DisableStats.IsPresent) { $Stats = "OFF" } $TileDBStatic = "OFF"; if ($EnableStaticTileDB.IsPresent) { $TileDBStatic = "ON" } $TileDBTools = "OFF"; if ($EnableTools.IsPresent) { $TileDBTools = "ON" } $TileDBBuildDeps = "OFF"; if ($EnableBuildDeps.IsPresent) { $TileDBBuildDeps = "ON" } # Set TileDB prefix $InstallPrefix = $DefaultPrefix if (![string]::IsNullOrEmpty($Prefix)) { $InstallPrefix = $Prefix } # Set TileDB dependency directory string $DependencyDir = $DefaultDependency if (![string]::IsNullOrEmpty($Dependency)) { $DependencyDir = $Dependency } # Set CMake generator type. $GeneratorFlag = "" if ($PSBoundParameters.ContainsKey("CMakeGenerator")) { $GeneratorFlag = "-G""$CMakeGenerator""" } # Enforce out-of-source build if ($SourceDirectory -eq $BinaryDirectory) { Throw "Cannot build the project in the source directory! Out-of-source build is enforced!" } # Check cmake binary if ((Get-Command "cmake.exe" -ErrorAction SilentlyContinue) -eq $null) { Throw "Unable to find cmake.exe in your PATH." } if ($CMakeGenerator -eq $null) { Throw "Could not identify a generator for CMake. Do you have Visual Studio installed?" } # Run CMake. # We use Invoke-Expression so we can echo the command to the user. $CommandString = "cmake -A X64 -DCMAKE_BUILD_TYPE=$BuildType -DCMAKE_INSTALL_PREFIX=""$InstallPrefix"" -DCMAKE_PREFIX_PATH=""$DependencyDir"" -DMSVC_MP_FLAG=""/MP$BuildProcesses"" -DTILEDB_VERBOSE=$Verbosity -DTILEDB_AZURE=$UseAzure -DTILEDB_S3=$UseS3 -DTILEDB_SERIALIZATION=$UseSerialization -DTILEDB_WERROR=$Werror -DTILEDB_CPP_API=$CppApi -DTILEDB_TESTS=$Tests -DTILEDB_STATS=$Stats -DTILEDB_STATIC=$TileDBStatic -DTILEDB_FORCE_ALL_DEPS=$TileDBBuildDeps -DTILEDB_TOOLS=$TileDBTools $GeneratorFlag ""$SourceDirectory""" Write-Host $CommandString Write-Host Invoke-Expression "$CommandString" Write-Host "Bootstrap success. Run 'cmake --build . --config $BuildType' to build and 'cmake --build . --target check --config $BuildType' to test." TileDB-2.6.2/cmake/000077500000000000000000000000001417424417000137105ustar00rootroot00000000000000TileDB-2.6.2/cmake/Modules/000077500000000000000000000000001417424417000153205ustar00rootroot00000000000000TileDB-2.6.2/cmake/Modules/CheckAVX2Support.cmake000066400000000000000000000055151417424417000214030ustar00rootroot00000000000000# # CheckAVX2Support.cmake # # # The MIT License # # Copyright (c) 2018-2021 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # This file defines a function to detect toolchain support for AVX2. # include(CheckCXXSourceRuns) include(CMakePushCheckState) # # Tries to build and run an AVX2 program with the given compiler flag. # If successful, sets cache variable HAVE_AVX2 to 1. # function (CheckAVX2Flag FLAG) cmake_push_check_state() set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${FLAG}") unset(HAVE_AVX2 CACHE) check_cxx_source_runs(" #include int main() { __m256i packed = _mm256_set_epi32(-1, -2, -3, -4, -5, -6, -7, -8); __m256i absolute_values = _mm256_abs_epi32(packed); return 0; }" HAVE_AVX2 ) cmake_pop_check_state() endfunction() # # Determines if AVX2 is available. # # This function sets two variables in the cache: # COMPILER_SUPPORTS_AVX2 - Set to true if the compiler supports AVX2. # COMPILER_AVX2_FLAG - Set to the appropriate flag to enable AVX2. # function (CheckAVX2Support) # If defined to a false value other than "", return without checking for avx2 support if (DEFINED COMPILER_SUPPORTS_AVX2 AND NOT COMPILER_SUPPORTS_AVX2 STREQUAL "" AND NOT COMPILER_SUPPORTS_AVX2) message("AVX2 compiler support disabled by COMPILER_SUPPORTS_AVX2=${COMPILER_SUPPORTS_AVX2}") return() endif() if (MSVC) CheckAVX2Flag(/arch:AVX2) if (HAVE_AVX2) set(COMPILER_AVX2_FLAG "/arch:AVX2" CACHE STRING "Compiler flag for AVX2 support.") endif() else() CheckAVX2Flag(-mavx2) if (HAVE_AVX2) set(COMPILER_AVX2_FLAG "-mavx2" CACHE STRING "Compiler flag for AVX2 support.") endif() endif() set(COMPILER_SUPPORTS_AVX2 "${HAVE_AVX2}" CACHE BOOL "True if the compiler supports AVX2." FORCE) unset(HAVE_AVX2 CACHE) endfunction()TileDB-2.6.2/cmake/Modules/FindAWSSDK_EP.cmake000066400000000000000000000164551417424417000205160ustar00rootroot00000000000000# # FindAWSSDK_EP.cmake # # # The MIT License # # Copyright (c) 2018-2021 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # This module finds the AWS C++ SDK, installing it with an ExternalProject if # necessary. It then defines the imported targets AWSSDK::, e.g. # AWSSDK::aws-cpp-sdk-s3 or AWSSDK::aws-cpp-sdk-core. # Include some common helper functions. include(TileDBCommon) # If the EP was built, it will install the AWSSDKConfig.cmake file, which we # can use with find_package. CMake uses CMAKE_PREFIX_PATH to locate find # modules. set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${TILEDB_EP_INSTALL_PREFIX}") if(DEFINED ENV{AWSSDK_ROOT_DIR}) set(AWSSDK_ROOT_DIR $ENV{AWSSDK_ROOT_DIR}) else() set(AWSSDK_ROOT_DIR "${TILEDB_EP_INSTALL_PREFIX}") endif() # Check to see if the SDK is installed (which provides the find module). # This will either use the system-installed AWSSDK find module (if present), # or the superbuild-installed find module. if (TILEDB_SUPERBUILD) # Don't use find_package in superbuild if we are forcing all deps. # That's because the AWSSDK config file hard-codes a search of /usr, # /usr/local, etc. if (NOT TILEDB_FORCE_ALL_DEPS) find_package(AWSSDK CONFIG) endif() else() find_package(AWSSDK CONFIG) endif() if (NOT AWSSDK_FOUND) if (TILEDB_SUPERBUILD) message(STATUS "Could NOT find AWSSDK") message(STATUS "Adding AWSSDK as an external project") set(DEPENDS) if (TARGET ep_curl) list(APPEND DEPENDS ep_curl) endif() if (TARGET ep_openssl) list(APPEND DEPENDS ep_openssl) endif() if (TARGET ep_zlib) list(APPEND DEPENDS ep_zlib) endif() # Set AWS cmake build to use specified build type except for gcc # For aws sdk and gcc we must always build in release mode # See https://github.com/TileDB-Inc/TileDB/issues/1351 and # https://github.com/awslabs/aws-checksums/issues/8 set(AWS_CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}) if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(AWS_CMAKE_BUILD_TYPE "Release") endif() # Work around for: https://github.com/aws/aws-sdk-cpp/pull/1187 # AWS SDK builds it's "aws-common" dependencies using `execute_process` to run cmake directly, # and does not pass the CMAKE_GENERATOR PLATFORM, so those projects default to Win32 builds, # causing linkage errors. if (CMAKE_GENERATOR MATCHES "Visual Studio 14.*" OR CMAKE_GENERATOR MATCHES "Visual Studio 15.*" AND NOT CMAKE_GENERATOR MATCHES ".*Win64") set(_CMKGEN_OLD "${CMAKE_GENERATOR}") set(_CMKPLT_OLD "${CMAKE_GENERATOR_PLATFORM}") set(CMAKE_GENERATOR "${CMAKE_GENERATOR} Win64") set(CMAKE_GENERATOR_PLATFORM "") endif() if (WIN32) find_package(Git REQUIRED) set(CONDITIONAL_PATCH cd ${CMAKE_SOURCE_DIR} && ${GIT_EXECUTABLE} apply --ignore-whitespace -p1 --unsafe-paths --verbose --directory=${TILEDB_EP_SOURCE_DIR}/ep_awssdk < ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_awssdk/awsccommon.patch && ${GIT_EXECUTABLE} apply --ignore-whitespace -p1 --unsafe-paths --verbose --directory=${TILEDB_EP_SOURCE_DIR}/ep_awssdk < ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_awssdk/awsconfig_cmake_3.22.patch) else() set(CONDITIONAL_PATCH patch -N -p1 < ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_awssdk/awsccommon.patch && patch -N -p1 < ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_awssdk/awsconfig_cmake_3.22.patch) endif() ExternalProject_Add(ep_awssdk PREFIX "externals" # Set download name to avoid collisions with only the version number in the filename DOWNLOAD_NAME ep_awssdk.zip URL "https://github.com/aws/aws-sdk-cpp/archive/1.8.84.zip" URL_HASH SHA1=e32a53a01c75ca7fdfe9feed9c5bbcedd98708e3 PATCH_COMMAND ${CONDITIONAL_PATCH} CMAKE_ARGS -DCMAKE_BUILD_TYPE=${AWS_CMAKE_BUILD_TYPE} -DENABLE_TESTING=OFF -DBUILD_ONLY=s3\\$core\\$identity-management\\$sts -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_BINDIR=lib -DENABLE_UNITY_BUILD=ON -DCUSTOM_MEMORY_MANAGEMENT=0 -DCMAKE_PREFIX_PATH=${TILEDB_EP_INSTALL_PREFIX} -DCMAKE_INSTALL_PREFIX=${TILEDB_EP_INSTALL_PREFIX} -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT} UPDATE_COMMAND "" LOG_DOWNLOAD TRUE LOG_CONFIGURE TRUE LOG_BUILD TRUE LOG_INSTALL TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} DEPENDS ${DEPENDS} ) # restore cached values if (DEFINED _CMKGEN_OLD) set(CMAKE_GENERATOR "${_CMKGEN_OLD}") set(CMAKE_GENERATOR_PLATFORM "${_CMKPLT_OLD}") endif() list(APPEND TILEDB_EXTERNAL_PROJECTS ep_awssdk) list(APPEND FORWARD_EP_CMAKE_ARGS -DTILEDB_AWSSDK_EP_BUILT=TRUE ) else () message(FATAL_ERROR "Could not find AWSSDK (required).") endif () endif () if (AWSSDK_FOUND) set(AWS_SERVICES s3) AWSSDK_DETERMINE_LIBS_TO_LINK(AWS_SERVICES AWS_LINKED_LIBS) list(APPEND AWS_LINKED_LIBS aws-c-common aws-c-event-stream aws-checksums aws-cpp-sdk-sts aws-cpp-sdk-identity-management) foreach (LIB ${AWS_LINKED_LIBS}) if (NOT ${LIB} MATCHES "aws-*") continue() endif() find_library("AWS_FOUND_${LIB}" NAMES ${LIB} PATHS ${AWSSDK_LIB_DIR} ${TILEDB_DEPS_NO_DEFAULT_PATH} ) message(STATUS "Found AWS lib: ${LIB} (${AWS_FOUND_${LIB}})") if (NOT TARGET AWSSDK::${LIB}) add_library(AWSSDK::${LIB} UNKNOWN IMPORTED) set_target_properties(AWSSDK::${LIB} PROPERTIES IMPORTED_LOCATION "${AWS_FOUND_${LIB}}" INTERFACE_INCLUDE_DIRECTORIES "${AWSSDK_INCLUDE_DIR}" ) endif() # If we built a static EP, install it if required. if (TILEDB_AWSSDK_EP_BUILT AND TILEDB_INSTALL_STATIC_DEPS) install_target_libs(AWSSDK::${LIB}) endif() endforeach () # the AWSSDK does not include links to some transitive dependencies # ref: githubcom/awsaws-sdk-cpp/issues/1074#issuecomment-466252911 if (WIN32) list(APPEND AWS_EXTRA_LIBS userenv ws2_32 wininet winhttp bcrypt version) endif() endif () TileDB-2.6.2/cmake/Modules/FindAzureSDK_EP.cmake000066400000000000000000000157621417424417000211520ustar00rootroot00000000000000# # FindAzureSDK_EP.cmake # # # The MIT License # # Copyright (c) 2018-2021 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # This module finds the Azure C++ SDK, installing it with an ExternalProject if # necessary. It then defines the imported target AzureSDK::AzureSDK. # Include some common helper functions. include(TileDBCommon) # This is the install subdirectory for azure headers and libs, to avoid pollution set(TILEDB_EP_AZURE_INSTALL_PREFIX "${TILEDB_EP_INSTALL_PREFIX}/azurecpplite") # First check for a static version in the EP prefix. find_library(AZURESDK_LIBRARIES NAMES libazure-storage-lite${CMAKE_STATIC_LIBRARY_SUFFIX} azure-storage-lite${CMAKE_STATIC_LIBRARY_SUFFIX} PATHS "${TILEDB_EP_AZURE_INSTALL_PREFIX}" PATH_SUFFIXES lib NO_DEFAULT_PATH ) #on win32... '.lib' also used for lib ref'ing .dll!!! #So, if perchance, in some environments, a .lib existed along with its corresponding .dll, #then we could be incorrectly assuming/attempting a static build and probably will fail to #appropriately include/package the .dll, since the code is (incorrectly) assuming .lib is indicative of a #static library being used. if (AZURESDK_LIBRARIES) set(AZURESDK_STATIC_EP_FOUND TRUE) find_path(AZURESDK_INCLUDE_DIR NAMES get_blob_request_base.h PATHS "${TILEDB_EP_AZURE_INSTALL_PREFIX}" PATH_SUFFIXES include NO_DEFAULT_PATH ) elseif(NOT TILEDB_FORCE_ALL_DEPS) set(AZURESDK_STATIC_EP_FOUND FALSE) # Static EP not found, search in system paths. find_library(AZURESDK_LIBRARIES NAMES libazure-storage-lite #*nix name azure-storage-lite #windows name PATH_SUFFIXES lib bin ${TILEDB_DEPS_NO_DEFAULT_PATH} ) find_path(AZURESDK_INCLUDE_DIR NAMES get_blob_request_base.h PATH_SUFFIXES include ${TILEDB_DEPS_NO_DEFAULT_PATH} ) endif() include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(AzureSDK REQUIRED_VARS AZURESDK_LIBRARIES AZURESDK_INCLUDE_DIR ) if (NOT AZURESDK_FOUND) if (TILEDB_SUPERBUILD) set(DEPENDS) if (TARGET ep_curl) list(APPEND DEPENDS ep_curl) endif() if (TARGET ep_openssl) list(APPEND DEPENDS ep_openssl) endif() if (TARGET ep_zlib) list(APPEND DEPENDS ep_zlib) endif() if (WIN32) # needed for applying patches on windows find_package(Git REQUIRED) #see comment on this answer - https://stackoverflow.com/a/45698220 #and this - https://stackoverflow.com/a/62967602 (same thread, different answer/comment) else() set(PATCH patch -N -p1) endif() # NOTE: # - CURL_NO_CURL_CMAKE (CMake 3.17+) is used because azure-cpp-lite only uses # CURL_LIBRARIES/CURL_INCLUDE_DIRS, not `curl::curl` target. # In CMake 3.17+, CMake's built-in FindCURL defers to the curl-installed # CMake config file, which *does not* set `CURL_*` variables. if(WIN32) ExternalProject_Add(ep_azuresdk PREFIX "externals" URL "https://github.com/Azure/azure-storage-cpplite/archive/v0.3.0.zip" URL_HASH SHA1=ce865daac9e540455c2d942d954bdbd3f293dcca DOWNLOAD_NAME azure-storage-lite-v0.3.0.zip CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF -DBUILD_SAMPLES=OFF -DCURL_NO_CURL_CMAKE=ON -DCMAKE_PREFIX_PATH=${TILEDB_EP_INSTALL_PREFIX} -DCMAKE_INSTALL_PREFIX=${TILEDB_EP_AZURE_INSTALL_PREFIX} -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} PATCH_COMMAND cd ${CMAKE_SOURCE_DIR} && ${GIT_EXECUTABLE} apply --ignore-whitespace -p1 --unsafe-paths --verbose --directory=${TILEDB_EP_SOURCE_DIR}/ep_azuresdk < ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_azuresdk/v0.3.0-patchset.patch && ${CMAKE_COMMAND} -E copy ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_azuresdk/v0.3.0.CMakeLists.txt.md5mitigation ${TILEDB_EP_SOURCE_DIR}/ep_azuresdk/CMakeLists.txt LOG_DOWNLOAD TRUE LOG_CONFIGURE TRUE LOG_BUILD TRUE LOG_INSTALL TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} DEPENDS ${DEPENDS} ) else() ExternalProject_Add(ep_azuresdk PREFIX "externals" URL "https://github.com/Azure/azure-storage-cpplite/archive/v0.3.0.zip" URL_HASH SHA1=ce865daac9e540455c2d942d954bdbd3f293dcca DOWNLOAD_NAME azure-storage-lite-v0.3.0.zip CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DBUILD_SHARED_LIBS=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_TESTS=OFF -DBUILD_SAMPLES=OFF -DCURL_NO_CURL_CMAKE=ON -DCMAKE_PREFIX_PATH=${TILEDB_EP_INSTALL_PREFIX} -DCMAKE_INSTALL_PREFIX=${TILEDB_EP_AZURE_INSTALL_PREFIX} -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} PATCH_COMMAND echo starting patching for azure && ${PATCH} < ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_azuresdk/v0.3.0-patchset.patch && ${CMAKE_COMMAND} -E copy ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_azuresdk/v0.3.0.CMakeLists.txt.md5mitigation ${TILEDB_EP_SOURCE_DIR}/ep_azuresdk/CMakeLists.txt && echo done patches for azure LOG_DOWNLOAD TRUE LOG_CONFIGURE TRUE LOG_BUILD TRUE LOG_INSTALL TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} DEPENDS ${DEPENDS} ) endif() list(APPEND TILEDB_EXTERNAL_PROJECTS ep_azuresdk) list(APPEND FORWARD_EP_CMAKE_ARGS -DTILEDB_AZURESDK_EP_BUILT=TRUE ) else () message(FATAL_ERROR "Could not find AZURESDK (required).") endif () endif () if (AZURESDK_FOUND AND NOT TARGET AzureSDK::AzureSDK) add_library(AzureSDK::AzureSDK UNKNOWN IMPORTED) set_target_properties(AzureSDK::AzureSDK PROPERTIES IMPORTED_LOCATION "${AZURESDK_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${AZURESDK_INCLUDE_DIR}" ) endif() # If we built a static EP, install it if required. if (AZURESDK_STATIC_EP_FOUND AND TILEDB_INSTALL_STATIC_DEPS) install_target_libs(AzureSDK::AzureSDK) endif() TileDB-2.6.2/cmake/Modules/FindBzip2_EP.cmake000066400000000000000000000114451417424417000205020ustar00rootroot00000000000000# # FindBzip2_EP.cmake # # # The MIT License # # Copyright (c) 2018-2021 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # Finds the Bzip2 library, installing with an ExternalProject as necessary. # This module defines: # - BZIP2_INCLUDE_DIR, directory containing headers # - BZIP2_LIBRARIES, the Bzip2 library path # - BZIP2_FOUND, whether Bzip2 has been found # - The Bzip2::Bzip2 imported target # Include some common helper functions. include(TileDBCommon) # First check for a static version in the EP prefix. find_library(BZIP2_LIBRARIES NAMES libbz2static${CMAKE_STATIC_LIBRARY_SUFFIX} libbz2${CMAKE_STATIC_LIBRARY_SUFFIX} PATHS ${TILEDB_EP_INSTALL_PREFIX} PATH_SUFFIXES lib NO_DEFAULT_PATH ) if (BZIP2_LIBRARIES) set(BZIP2_STATIC_EP_FOUND TRUE) find_path(BZIP2_INCLUDE_DIR NAMES bzlib.h PATHS ${TILEDB_EP_INSTALL_PREFIX} PATH_SUFFIXES include NO_DEFAULT_PATH ) elseif(NOT TILEDB_FORCE_ALL_DEPS) set(BZIP2_STATIC_EP_FOUND FALSE) # Static EP not found, search in system paths. find_library(BZIP2_LIBRARIES NAMES bz2 libbz2 PATH_SUFFIXES lib bin ${TILEDB_DEPS_NO_DEFAULT_PATH} ) find_path(BZIP2_INCLUDE_DIR NAMES bzlib.h PATH_SUFFIXES include ${TILEDB_DEPS_NO_DEFAULT_PATH} ) endif() include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Bzip2 REQUIRED_VARS BZIP2_LIBRARIES BZIP2_INCLUDE_DIR ) if (NOT BZIP2_FOUND) if (TILEDB_SUPERBUILD) message(STATUS "Adding Bzip2 as an external project") if (WIN32) ExternalProject_Add(ep_bzip2 PREFIX "externals" URL "https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz" URL_HASH SHA1=bf7badf7e248e0ecf465d33c2f5aeec774209227 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${TILEDB_EP_INSTALL_PREFIX} UPDATE_COMMAND "" PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_bzip2/CMakeLists.txt ${CMAKE_CURRENT_BINARY_DIR}/externals/src/ep_bzip2 LOG_DOWNLOAD TRUE LOG_CONFIGURE TRUE LOG_BUILD TRUE LOG_INSTALL TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} ) else() if (CMAKE_OSX_ARCHITECTURES STREQUAL arm64) set(BZIP2_CFLAGS "-fPIC -target arm64-apple-darwin") elseif(CMAKE_OSX_ARCHITECTURES STREQUAL x86_64) set(BZIP2_CFLAGS "-fPIC -target x86_64-apple-darwin") else() set(BZIP2_CFLAGS "-fPIC") endif() # We build bzip2 with -fPIC on non-Windows platforms so that we can link the static library # to the shared TileDB library. This allows us to avoid having to install the bzip2 libraries # alongside TileDB. ExternalProject_Add(ep_bzip2 PREFIX "externals" URL "https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz" URL_HASH SHA1=bf7badf7e248e0ecf465d33c2f5aeec774209227 CONFIGURE_COMMAND "" BUILD_IN_SOURCE TRUE BUILD_COMMAND "" INSTALL_COMMAND $(MAKE) CFLAGS=${BZIP2_CFLAGS} PREFIX=${TILEDB_EP_INSTALL_PREFIX} install UPDATE_COMMAND "" LOG_DOWNLOAD TRUE LOG_CONFIGURE TRUE LOG_BUILD TRUE LOG_INSTALL TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} ) endif() list(APPEND FORWARD_EP_CMAKE_ARGS -DTILEDB_BZIP2_EP_BUILT=TRUE ) list(APPEND TILEDB_EXTERNAL_PROJECTS ep_bzip2) else() message(FATAL_ERROR "Unable to find Bzip2") endif() endif() if (BZIP2_FOUND AND NOT TARGET Bzip2::Bzip2) add_library(Bzip2::Bzip2 UNKNOWN IMPORTED) set_target_properties(Bzip2::Bzip2 PROPERTIES IMPORTED_LOCATION "${BZIP2_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${BZIP2_INCLUDE_DIR}" ) endif() # If we built a static EP, install it if required. if (BZIP2_STATIC_EP_FOUND AND TILEDB_INSTALL_STATIC_DEPS) install_target_libs(Bzip2::Bzip2) endif() TileDB-2.6.2/cmake/Modules/FindCapnp_EP.cmake000066400000000000000000000135301417424417000205520ustar00rootroot00000000000000# # FindCapnp_EP.cmake # # # The MIT License # # Copyright (c) 2018-2021 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # Finds the Capnp library, installing with an ExternalProject as necessary. # This module defines: # - CAPNP_FOUND, whether Capnp has been found # - The CapnProto::{capnp,kj,capnp-json} imported targets # Include some common helper functions. include(TileDBCommon) # If the EP was built, it will install the CapnProtoConfig.cmake file, which we # can use with find_package. set(TILEDB_CAPNPROTO_VERSION 0.8.0) set(TILEDB_CAPNPROTO_GITTAG "v0.8.0") set(TILEDB_CAPNPROTO_HASH_SPEC "SHA1=6910b8872602c46c8b0e9692dc2889c1808a5950") set(TILEDB_CAPNPROTO_URL "https://github.com/capnproto/capnproto/archive/v0.8.0.tar.gz") # First try the CMake find module. if (NOT TILEDB_FORCE_ALL_DEPS OR TILEDB_CAPNP_EP_BUILT) if (TILEDB_CAPNP_EP_BUILT) # If we built it from the source always force no default path SET(TILEDB_CAPNP_NO_DEFAULT_PATH NO_DEFAULT_PATH) else() SET(TILEDB_CAPNP_NO_DEFAULT_PATH ${TILEDB_DEPS_NO_DEFAULT_PATH}) endif() find_package(CapnProto ${TILEDB_CAPNPROTO_VERSION} EXACT PATHS ${TILEDB_EP_INSTALL_PREFIX} ${TILEDB_CAPNP_NO_DEFAULT_PATH} ) set(CAPNP_FOUND ${CapnProto_FOUND}) endif() # If not found, add it as an external project if (NOT CAPNP_FOUND) message(STATUS "Cap'n Proto was not found") if (TILEDB_SUPERBUILD) message(STATUS "Adding Capnp as an external project") if (WIN32) find_package(Git REQUIRED) set(CONDITIONAL_PATCH cd ${CMAKE_SOURCE_DIR} && ${GIT_EXECUTABLE} apply --ignore-whitespace -p1 --unsafe-paths --verbose --directory=${TILEDB_EP_SOURCE_DIR}/ep_capnp < ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_capnp/capnp_CMakeLists.txt.patch) else() set(CONDITIONAL_PATCH "") endif() ExternalProject_Add(ep_capnp PREFIX "externals" DOWNLOAD_NAME ep_capnp.${TILEDB_CAPNPROTO_VERSION}.tar.gz URL ${TILEDB_CAPNPROTO_URL} URL_HASH ${TILEDB_CAPNPROTO_HASH_SPEC} CMAKE_ARGS -DCMAKE_PREFIX_PATH=${TILEDB_EP_INSTALL_PREFIX} -DCMAKE_INSTALL_PREFIX=${TILEDB_EP_INSTALL_PREFIX} -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} PATCH_COMMAND ${CONDITIONAL_PATCH} LOG_DOWNLOAD TRUE LOG_CONFIGURE TRUE LOG_BUILD TRUE LOG_INSTALL TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} ) list(APPEND TILEDB_EXTERNAL_PROJECTS ep_capnp) list(APPEND FORWARD_EP_CMAKE_ARGS -DTILEDB_CAPNP_EP_BUILT=TRUE ) else() message(FATAL_ERROR "Unable to find Capnp") endif() else() add_definitions(${CAPNP_DEFINITIONS}) endif() if(WIN32) if(TILEDB_CAPNP_EP_BUILT AND TILEDB_INSTALL_STATIC_DEPS) install_target_libs(CapnProto::capnp) install_target_libs(CapnProto::kj) install_target_libs(CapnProto::capnp-json) endif() elseif(CAPNP_FOUND AND NOT WIN32) # We handle the found case first because ubuntu's install of capnproto is missing libcapnp-json # so we must first make sure the found case has all the appropriate libs, else we will build from source # List of all required Capnp libraries. set(CAPNP_LIB_NAMES capnp kj capnp-json) foreach(LIB ${CAPNP_LIB_NAMES}) if (NOT TARGET CapnProto::${LIB} AND NOT CAPNP_LIBRARIES) message(FATAL_ERROR "Required target CapnProto::${LIB} not defined") elseif (TARGET CapnProto::${LIB}) message(STATUS "Found CapnProto lib: ${LIB}") # If we built a static EP, install it if required. if (TILEDB_CAPNP_EP_BUILT AND TILEDB_INSTALL_STATIC_DEPS) message(STATUS "Adding CapnProto lib: ${LIB} to install target") install_target_libs(CapnProto::${LIB}) endif() elseif (NOT TARGET CapnProto::${LIB}) message(STATUS "NOT Found Target for CapnProto lib: ${LIB}") set(SHOULD_CAPNP_LIBRARIES 1) endif() endforeach() if (SHOULD_CAPNP_LIBRARIES) message(STATUS "Checking libraries in ${CAPNP_LIBRARIES}") foreach(NEEDED_LIB ${CAPNP_LIB_NAMES}) foreach(LIB ${CAPNP_LIBRARIES}) if (LIB MATCHES "lib${NEEDED_LIB}.") set(FOUND_${NEEDED_LIB} 1) if (NOT TARGET CapnProto::${NEEDED_LIB}) message(STATUS "Adding target for CapnProto::${NEEDED_LIB} from CAPNP_LIBRARIES") add_library(CapnProto::${NEEDED_LIB} UNKNOWN IMPORTED) set_target_properties(CapnProto::${NEEDED_LIB} PROPERTIES IMPORTED_LOCATION "${LIB}" INTERFACE_INCLUDE_DIRECTORIES "${CAPNP_INCLUDE_DIR}" ) endif() endif() endforeach() if (NOT FOUND_${NEEDED_LIB}) message("Cap'n Proto ${NEEDED_LIB} not found on system, reverting to external project") unset(CAPNP_FOUND) endif() endforeach() endif() endif() TileDB-2.6.2/cmake/Modules/FindCatch_EP.cmake000066400000000000000000000055001417424417000205310ustar00rootroot00000000000000# # FindCatch_EP.cmake # # # The MIT License # # Copyright (c) 2018-2021 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # Finds the Catch library, installing with an ExternalProject as necessary. # This module defines: # - CATCH_INCLUDE_DIR, directory containing headers # - CATCH2_FOUND, whether Catch has been found # - The Catch::Catch imported target # Include some common helper functions. include(TileDBCommon) # Search the path set during the superbuild for the EP. message(STATUS "searching for catch in ${TILEDB_EP_SOURCE_DIR}") set(CATCH_PATHS ${TILEDB_EP_SOURCE_DIR}/ep_catch/single_include) if (NOT TILEDB_FORCE_ALL_DEPS OR TILEDB_CATCH_EP_BUILT) find_path(CATCH_INCLUDE_DIR NAMES catch.hpp PATHS ${CATCH_PATHS} PATH_SUFFIXES "catch2" ${TILEDB_DEPS_NO_DEFAULT_PATH} ) endif() include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Catch2 REQUIRED_VARS CATCH_INCLUDE_DIR ) if (NOT CATCH2_FOUND AND TILEDB_SUPERBUILD) message(STATUS "Adding Catch as an external project") ExternalProject_Add(ep_catch PREFIX "externals" # Set download name to avoid collisions with only the version number in the filename DOWNLOAD_NAME ep_catch.zip URL "https://github.com/catchorg/Catch2/archive/v2.13.4.zip" URL_HASH SHA1=344f5803a12e7f0bafc6572b62c6c463244ee602 CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" UPDATE_COMMAND "" LOG_DOWNLOAD TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} ) list(APPEND TILEDB_EXTERNAL_PROJECTS ep_catch) list(APPEND FORWARD_EP_CMAKE_ARGS -DTILEDB_CATCH_EP_BUILT=TRUE ) endif() if (CATCH2_FOUND AND NOT TARGET Catch2::Catch2) add_library(Catch2::Catch2 INTERFACE IMPORTED) set_target_properties(Catch2::Catch2 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CATCH_INCLUDE_DIR}" ) endif() TileDB-2.6.2/cmake/Modules/FindCcache.cmake000066400000000000000000000014251417424417000202730ustar00rootroot00000000000000## cf https://stackoverflow.com/questions/1815688/how-to-use-ccache-with-cmake ## leading to https://invent.kde.org/kde/konsole/merge_requests/26/diffs find_program(CCACHE_FOUND "ccache") set(CCACHE_SUPPORT ON CACHE BOOL "Enable ccache support") if (CCACHE_FOUND AND CCACHE_SUPPORT) if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" # GNU is GNU GCC OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") # without this compiler messages in `make` backend would be uncolored set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=auto") endif() set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "ccache") set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "ccache") message(STATUS "Found ccache: ${CCACHE_FOUND}") else() message(FATAL_ERROR "Unable to find ccache") endif() TileDB-2.6.2/cmake/Modules/FindClangTools.cmake000066400000000000000000000043271417424417000211760ustar00rootroot00000000000000# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Tries to find the clang-tidy and clang-format modules # # Usage of this module as follows: # # find_package(ClangTools) # # Variables used by this module, they can change the default behaviour and need # to be set before calling find_package: # # ClangToolsBin_HOME - # When set, this path is inspected instead of standard library binary locations # to find clang-tidy and clang-format # # This module defines # CLANG_TIDY_BIN, The path to the clang tidy binary # CLANG_TIDY_FOUND, Whether clang tidy was found # CLANG_FORMAT_BIN, The path to the clang format binary # CLANG_TIDY_FOUND, Whether clang format was found find_program(CLANG_TIDY_BIN NAMES clang-tidy-5.0 clang-tidy-4.0 clang-tidy-3.9 clang-tidy-3.8 clang-tidy-3.7 clang-tidy-3.6 clang-tidy PATHS ${ClangTools_PATH} $ENV{CLANG_TOOLS_PATH} /usr/local/bin /usr/bin NO_DEFAULT_PATH ) if ( "${CLANG_TIDY_BIN}" STREQUAL "CLANG_TIDY_BIN-NOTFOUND" ) set(CLANG_TIDY_FOUND 0) message(STATUS "Not found clang-tidy") else() set(CLANG_TIDY_FOUND 1) message(STATUS "Found clang-tidy: ${CLANG_TIDY_BIN}") endif() find_program(CLANG_FORMAT_BIN NAMES clang-format-11 clang-format-10 clang-format-9 clang-format-8 clang-format-7 clang-format-6 clang-format-5.0 clang-format-4.0 clang-format-3.9 clang-format-3.8 clang-format-3.7 clang-format-3.6 clang-format PATHS ${ClangTools_PATH} $ENV{CLANG_TOOLS_PATH} /usr/local/bin /usr/bin NO_DEFAULT_PATH ) if ( "${CLANG_FORMAT_BIN}" STREQUAL "CLANG_FORMAT_BIN-NOTFOUND" ) set(CLANG_FORMAT_FOUND 0) message(STATUS "Not found clang-format") else() set(CLANG_FORMAT_FOUND 1) message(STATUS "Found clang-format: ${CLANG_FORMAT_BIN}") endif() TileDB-2.6.2/cmake/Modules/FindClipp_EP.cmake000066400000000000000000000061551417424417000205650ustar00rootroot00000000000000# # FindClipp_EP.cmake # # # The MIT License # # Copyright (c) 2018-2021 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # Finds the Clipp library, installing with an ExternalProject as necessary. # # This module defines: # - CLIPP_INCLUDE_DIR, directory containing headers # - CLIPP_FOUND, whether Clipp has been found # - The Clipp::Clipp imported target # Search the path set during the superbuild for the EP. set(CLIPP_PATHS ${TILEDB_EP_INSTALL_PREFIX}) if (NOT TILEDB_FORCE_ALL_DEPS OR TILEDB_CLIPP_EP_BUILT) find_path(CLIPP_INCLUDE_DIR NAMES clipp.h PATHS ${CLIPP_PATHS} PATH_SUFFIXES include ${TILEDB_DEPS_NO_DEFAULT_PATH} ) endif() include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Clipp REQUIRED_VARS CLIPP_INCLUDE_DIR ) if (NOT CLIPP_FOUND) if (TILEDB_SUPERBUILD) message(STATUS "Adding Clipp as an external project") ExternalProject_Add(ep_clipp PREFIX "externals" # Set download name to avoid collisions with only the version number in the filename DOWNLOAD_NAME ep_clipp.zip URL "https://github.com/muellan/clipp/archive/v1.2.3.zip" URL_HASH SHA1=5cb4255d29e1b47b5d5abf7481befe659ffc3ee1 UPDATE_COMMAND "" CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${TILEDB_EP_INSTALL_PREFIX}/include COMMAND ${CMAKE_COMMAND} -E copy_if_different ${TILEDB_EP_BASE}/src/ep_clipp/include/clipp.h ${TILEDB_EP_INSTALL_PREFIX}/include/ LOG_DOWNLOAD TRUE LOG_CONFIGURE TRUE LOG_BUILD TRUE LOG_INSTALL TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} ) list(APPEND TILEDB_EXTERNAL_PROJECTS ep_clipp) list(APPEND FORWARD_EP_CMAKE_ARGS -DTILEDB_CLIPP_EP_BUILT=TRUE ) else() message(FATAL_ERROR "Unable to find Clipp") endif() endif() # Create the imported target for Clipp if (CLIPP_FOUND AND NOT TARGET Clipp::Clipp) add_library(Clipp::Clipp INTERFACE IMPORTED) set_target_properties(Clipp::Clipp PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CLIPP_INCLUDE_DIR}" ) endif() TileDB-2.6.2/cmake/Modules/FindCurl_EP.cmake000066400000000000000000000175701417424417000204260ustar00rootroot00000000000000# # FindCurl_EP.cmake # # # The MIT License # # Copyright (c) 2018-2021 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # Finds the Curl library, installing with an ExternalProject as necessary. # This module defines: # - CURL_INCLUDE_DIR, directory containing headers # - CURL_LIBRARIES, the Curl library path # - CURL_FOUND, whether Curl has been found # - The Curl::Curl imported target # Include some common helper functions. include(TileDBCommon) # Search the path set during the superbuild for the EP. set(CURL_PATHS ${TILEDB_EP_INSTALL_PREFIX}) # If the EP was built, it will install the CURLConfig.cmake file, which we # can use with find_package. # First try the CMake-provided find script. if (NOT TILEDB_FORCE_ALL_DEPS) find_package(CURL ${TILEDB_DEPS_NO_DEFAULT_PATH}) endif() # Next try finding the superbuild external project if (NOT CURL_FOUND) find_path(CURL_INCLUDE_DIR NAMES curl/curl.h PATHS ${CURL_PATHS} PATH_SUFFIXES include ${TILEDB_DEPS_NO_DEFAULT_PATH}) # Link statically if installed with the EP. find_library(CURL_LIBRARIES NAMES libcurl${CMAKE_STATIC_LIBRARY_SUFFIX} libcurl-d${CMAKE_STATIC_LIBRARY_SUFFIX} PATHS ${CURL_PATHS} PATH_SUFFIXES lib ${TILEDB_DEPS_NO_DEFAULT_PATH} ) include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Curl REQUIRED_VARS CURL_LIBRARIES CURL_INCLUDE_DIR ) endif() if (NOT CURL_FOUND AND TILEDB_SUPERBUILD) message(STATUS "Adding Curl as an external project") if (WIN32) set(WITH_SSL "-DCMAKE_USE_SCHANNEL=ON") ExternalProject_Add(ep_curl PREFIX "externals" # Set download name to avoid collisions with only the version number in the filename DOWNLOAD_NAME ep_curl.tar.gz URL "https://curl.se/download/curl-7.74.0.tar.gz" URL_HASH SHA1=cd7239cf9223b39ade86a14eb37fe68f5656eae9 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${TILEDB_EP_INSTALL_PREFIX} -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON -DCURL_STATICLIB=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DHTTP_ONLY=ON "${WITH_SSL}" "-DCMAKE_C_FLAGS=${CFLAGS_DEF}" UPDATE_COMMAND "" LOG_DOWNLOAD TRUE LOG_CONFIGURE TRUE LOG_BUILD TRUE LOG_INSTALL TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} ) else() set(DEPENDS) if (TARGET ep_openssl) # This branch specifically intends that curl will find our OpenSSL # via pkg-config. Ensure it exists to avoid confusing errors. find_package(PkgConfig REQUIRED) list(APPEND DEPENDS ep_openssl) set(WITH_SSL "--with-ssl") set(SSL_PKG_CONFIG_PATH "${TILEDB_EP_INSTALL_PREFIX}/lib/pkgconfig:${TILEDB_EP_INSTALL_PREFIX}/lib64/pkgconfig") elseif (TILEDB_OPENSSL_DIR) # ensure that curl links against the same libSSL set(WITH_SSL "--with-ssl=${TILEDB_OPENSSL_DIR}") else() message(WARNING "TileDB FindOpenSSL_EP did not set TILEDB_OPENSSL_DIR. Falling back to autotools detection.") # ensure that curl config errors out if SSL not available set(WITH_SSL "--with-ssl") endif() if (TARGET ep_zlib) list(APPEND DEPENDS ep_zlib) set(WITH_ZLIB "--with-zlib=${TILEDB_EP_INSTALL_PREFIX}") elseif (TILEDB_ZLIB_DIR) # ensure that curl links against the same libz set(WITH_ZLIB "--with-zlib=${TILEDB_ZLIB_DIR}") else() message(WARNING "TileDB FindZlib_EP did not set TILEDB_ZLIB_DIR. Falling back to autotools detection.") # ensure that curl config errors out if SSL not available set(WITH_ZLIB "--with-zlib") endif() # Support cross compilation of MacOS if (CMAKE_OSX_ARCHITECTURES STREQUAL arm64) set(CURL_CROSS_COMPILATION_FLAGS "CFLAGS=${CFLAGS} -arch arm64" "LDFLAGS=${LDFLAGS} -arch arm64" --host=aarch64-apple-darwin) elseif(CMAKE_OSX_ARCHITECTURES STREQUAL x86_64) set(CURL_CROSS_COMPILATION_FLAGS "CFLAGS=${CFLAGS} -arch x86_64" "LDFLAGS=${LDFLAGS} -arch x86_64" --host=x86_64-apple-darwin) endif() ExternalProject_Add(ep_curl PREFIX "externals" URL "https://curl.se/download/curl-7.74.0.tar.gz" URL_HASH SHA1=cd7239cf9223b39ade86a14eb37fe68f5656eae9 CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env PKG_CONFIG_PATH=${SSL_PKG_CONFIG_PATH} ${TILEDB_EP_BASE}/src/ep_curl/configure --prefix=${TILEDB_EP_INSTALL_PREFIX} --enable-http --enable-optimize --enable-shared=no --with-pic=yes --without-brotli --without-bearssl --without-cyassl --without-wolfssl --without-polarssl --without-mbedtls --without-gnutls --without-gssapi --without-idn2 --without-libmetalink --without-libssh2 --without-librtmp --without-nghttp2 --without-zstd --disable-ares --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-mqtt --disable-ldap --disable-ldaps --disable-pop3 --disable-rtmp --disable-rtsp --disable-scp --disable-sftp --disable-smb --disable-smtp --disable-telnet --disable-tftp ${WITH_SSL} ${WITH_ZLIB} ${CURL_CROSS_COMPILATION_FLAGS} BUILD_IN_SOURCE TRUE BUILD_COMMAND $(MAKE) INSTALL_COMMAND $(MAKE) install DEPENDS ${DEPENDS} LOG_DOWNLOAD TRUE LOG_CONFIGURE TRUE LOG_BUILD TRUE LOG_INSTALL TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} ) endif() list(APPEND TILEDB_EXTERNAL_PROJECTS ep_curl) list(APPEND FORWARD_EP_CMAKE_ARGS -DTILEDB_CURL_EP_BUILT=TRUE ) endif() if (CURL_FOUND) message(STATUS "Found CURL: '${CURL_LIBRARIES}' (found version \"${CURL_VERSION}\")") # If the libcurl target is missing this is an older version of curl found, don't attempt to use cmake target if (NOT TARGET CURL::libcurl) add_library(CURL::libcurl UNKNOWN IMPORTED) set_target_properties(CURL::libcurl PROPERTIES IMPORTED_LOCATION "${CURL_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${CURL_INCLUDE_DIR};${CURL_INCLUDE_DIRS}" ) # If the CURL::libcurl target exists this is new enough curl version to rely on the cmake target properties else() get_target_property(LIBCURL_TYPE CURL::libcurl TYPE) # CURL_STATICLIB is missing for curl versions <7.61.1 if(CURL_VERSION VERSION_LESS 7.61.1 AND LIBCURL_TYPE STREQUAL "STATIC_LIBRARY") set_target_properties(CURL::libcurl PROPERTIES INTERFACE_COMPILE_DEFINITIONS CURL_STATICLIB) endif() endif() endif() # If we built a static EP, install it if required. if (TILEDB_CURL_EP_BUILT AND TILEDB_INSTALL_STATIC_DEPS) install_target_libs(CURL::libcurl) endif() TileDB-2.6.2/cmake/Modules/FindGCSSDK_EP.cmake000066400000000000000000000145021417424417000204670ustar00rootroot00000000000000# # FindGCSSDK_EP.cmake # # # The MIT License # # Copyright (c) 2018-2021 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # This module finds the GCS C++ SDK, installing it with an ExternalProject if # necessary. It then defines the imported targets GCSSDK::, e.g. # GCSSDK::storage-client or GCSSDK::google_cloud_cpp_common. # Include some common helper functions. include(TileDBCommon) # If the EP was built, it will install the storage_client-config.cmake file, # which we can use with find_package. CMake uses CMAKE_PREFIX_PATH to locate find # modules. set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${TILEDB_EP_INSTALL_PREFIX}") # Try searching for the SDK in the EP prefix. set(GCSSDK_DIR "${TILEDB_EP_INSTALL_PREFIX}") # First check for a static version in the EP prefix. # The storage client is installed as the cmake package storage_client # TODO: This should be replaced with proper find_package as google installs cmake targets for the subprojects if (NOT TILEDB_FORCE_ALL_DEPS OR TILEDB_GCSSDK_EP_BUILT) find_package(storage_client PATHS ${TILEDB_EP_INSTALL_PREFIX} ${TILEDB_DEPS_NO_DEFAULT_PATH} ) set(GCSSDK_FOUND ${storage_client_FOUND}) endif() if (NOT GCSSDK_FOUND) if (TILEDB_SUPERBUILD) message(STATUS "Could NOT find GCSSDK") message(STATUS "Adding GCSSDK as an external project") set(DEPENDS) if (TARGET ep_curl) list(APPEND DEPENDS ep_curl) endif() if (TARGET ep_openssl) list(APPEND DEPENDS ep_openssl) endif() if (TARGET ep_zlib) list(APPEND DEPENDS ep_zlib) endif() # Fetch the number of CPUs on the this sytem. include(ProcessorCount) processorcount(NCPU) ExternalProject_Add(ep_gcssdk PREFIX "externals" # Set download name to avoid collisions with only the version number in the filename DOWNLOAD_NAME ep_gcssdk.zip URL "https://github.com/googleapis/google-cloud-cpp/archive/v1.22.0.zip" URL_HASH SHA1=d4e14faef4095289b06f5ffe57d33a14574a7055 BUILD_IN_SOURCE 1 PATCH_COMMAND patch -N -p1 < ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_gcssdk/build.patch && patch -N -p1 < ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_gcssdk/disable_tests.patch && patch -N -p1 < ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_gcssdk/disable_examples.patch && #The following patch is on top of a patch already done in build.patch above, application order is important! #does add_compile_options() hoping for #"These options are used when compiling targets from the current directory and below." patch -N -p1 < ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_gcssdk/v1.22.0.CMakelists.txt.openssl3md5deprecationmitigation.patch CONFIGURE_COMMAND ${CMAKE_COMMAND} -Hsuper -Bcmake-out -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DBUILD_SHARED_LIBS=OFF -DBUILD_SAMPLES=OFF -DCMAKE_PREFIX_PATH=${TILEDB_EP_INSTALL_PREFIX} -DOPENSSL_ROOT_DIR=${TILEDB_OPENSSL_DIR} -DCMAKE_INSTALL_PREFIX=${TILEDB_EP_INSTALL_PREFIX} -DGOOGLE_CLOUD_CPP_ENABLE_MACOS_OPENSSL_CHECK=OFF # Disable unused api features to speed up build -DGOOGLE_CLOUD_CPP_ENABLE_BIGQUERY=OFF -DGOOGLE_CLOUD_CPP_ENABLE_BIGTABLE=OFF -DGOOGLE_CLOUD_CPP_ENABLE_SPANNER=OFF -DGOOGLE_CLOUD_CPP_ENABLE_FIRESTORE=OFF -DGOOGLE_CLOUD_CPP_ENABLE_STORAGE=ON -DGOOGLE_CLOUD_CPP_ENABLE_PUBSUB=OFF -DBUILD_TESTING=OFF # Google uses their own variable instead of CMAKE_INSTALL_PREFIX -DGOOGLE_CLOUD_CPP_EXTERNAL_PREFIX=${TILEDB_EP_INSTALL_PREFIX} -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} BUILD_COMMAND ${CMAKE_COMMAND} --build cmake-out -- -j${NCPU} # There is no install command, the build process installs the libraries INSTALL_COMMAND "" LOG_DOWNLOAD TRUE LOG_CONFIGURE TRUE LOG_BUILD TRUE LOG_INSTALL TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} DEPENDS ${DEPENDS} ) list(APPEND TILEDB_EXTERNAL_PROJECTS ep_gcssdk) list(APPEND FORWARD_EP_CMAKE_ARGS -DTILEDB_GCSSDK_EP_BUILT=TRUE ) else() message(FATAL_ERROR "Unable to find GCSSDK") endif() endif() # If we found the SDK but it didn't have a cmake target build them if (GCSSDK_FOUND AND NOT TARGET storage_client) # Build a list of all GCS libraries to link with. list(APPEND GCSSDK_LINKED_LIBS "storage_client" "google_cloud_cpp_common" "crc32c") foreach (LIB ${GCSSDK_LINKED_LIBS}) find_library(GCS_FOUND_${LIB} NAMES lib${LIB}${CMAKE_STATIC_LIBRARY_SUFFIX} PATHS ${TILEDB_EP_INSTALL_PREFIX} PATH_SUFFIXES lib lib64 ${TILEDB_DEPS_NO_DEFAULT_PATH} ) message(STATUS "Found GCS lib: ${LIB} (${GCS_FOUND_${LIB}})") # If we built a static EP, install it if required. if (GCSSDK_STATIC_EP_FOUND AND TILEDB_INSTALL_STATIC_DEPS) install_target_libs(GCSSDK::${LIB}) endif() endforeach () if (NOT TARGET storage_client) add_library(storage_client UNKNOWN IMPORTED) set_target_properties(storage_client PROPERTIES IMPORTED_LOCATION "${GCS_FOUND_storage_client};${GCS_FOUND_google_cloud_cpp_common};${GCS_FOUND_crc32c}" INTERFACE_INCLUDE_DIRECTORIES ${TILEDB_EP_INSTALL_PREFIX}/include ) endif() endif() TileDB-2.6.2/cmake/Modules/FindLIBJVM.cmake000066400000000000000000000253341417424417000201150ustar00rootroot00000000000000# # FindLIBJVM.cmake # The MIT License # # Copyright (c) 2017-2021 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # Adapted from KitWare's FindJNI.cmake file # Distributed under the OSI-approved BSD 3-Clause License. # See https://cmake.org/licensing for details. # # Finds and links the libjsig and libjvm shared libraries: This module defines: # - LIBJVM_LIBRARIES the library path # - LIBJVM_FOUND if the libjvm and libjsig libraries were found # - LibJVM::libjvm import target # - LibJVM::libjsig import target # Expand {libarch} occurences to java_libarch subdirectory(-ies) and set ${_var} if(NOT LIBHDFS_FOUND) macro(java_append_library_directories _var) # Determine java arch-specific library subdir # Mostly based on openjdk/jdk/make/common/shared/Platform.gmk as of openjdk # 1.6.0_18 + icedtea patches. However, it would be much better to base the # guess on the first part of the GNU config.guess platform triplet. if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") if(CMAKE_LIBRARY_ARCHITECTURE STREQUAL "x86_64-linux-gnux32") set(_java_libarch "x32" "amd64" "i386") else() set(_java_libarch "amd64" "i386") endif() elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$") set(_java_libarch "i386") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^alpha") set(_java_libarch "alpha") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") # Subdir is "arm" for both big-endian (arm) and little-endian (armel). set(_java_libarch "arm" "aarch32") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^mips") # mips* machines are bi-endian mostly so processor does not tell # endianess of the underlying system. set(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}" "mips" "mipsel" "mipseb" "mips64" "mips64el" "mipsn32" "mipsn32el") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64le") set(_java_libarch "ppc64" "ppc64le") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64") set(_java_libarch "ppc64" "ppc") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)") set(_java_libarch "ppc" "ppc64") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^sparc") # Both flavours can run on the same processor set(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}" "sparc" "sparcv9") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(parisc|hppa)") set(_java_libarch "parisc" "parisc64") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^s390") # s390 binaries can run on s390x machines set(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}" "s390" "s390x") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^sh") set(_java_libarch "sh") else() set(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}") endif() # Append default list architectures if CMAKE_SYSTEM_PROCESSOR was empty or # system is non-Linux (where the code above has not been well tested) if(NOT _java_libarch OR NOT (CMAKE_SYSTEM_NAME MATCHES "Linux")) list(APPEND _java_libarch "i386" "amd64" "ppc") endif() # Sometimes ${CMAKE_SYSTEM_PROCESSOR} is added to the list to prefer # current value to a hardcoded list. Remove possible duplicates. list(REMOVE_DUPLICATES _java_libarch) foreach(_path ${ARGN}) if(_path MATCHES "{libarch}") foreach(_libarch ${_java_libarch}) string(REPLACE "{libarch}" "${_libarch}" _newpath "${_path}") if(EXISTS ${_newpath}) list(APPEND ${_var} "${_newpath}") endif() endforeach() else() if(EXISTS ${_path}) list(APPEND ${_var} "${_path}") endif() endif() endforeach() endmacro() # Find Java set(_JAVA_HOME "") if(JAVA_HOME AND IS_DIRECTORY "${JAVA_HOME}") set(_JAVA_HOME "${JAVA_HOME}") set(_JAVA_HOME_EXPLICIT 1) else() set(_ENV_JAVA_HOME "") if(DEFINED ENV{JAVA_HOME}) file(TO_CMAKE_PATH "$ENV{JAVA_HOME}" _ENV_JAVA_HOME) endif() if(_ENV_JAVA_HOME AND IS_DIRECTORY "${_ENV_JAVA_HOME}") set(_JAVA_HOME "${_ENV_JAVA_HOME}") set(_JAVA_HOME_EXPLICIT 1) else() set(_CMD_JAVA_HOME "") if(APPLE AND EXISTS /usr/libexec/java_home) execute_process(COMMAND /usr/libexec/java_home OUTPUT_VARIABLE _CMD_JAVA_HOME OUTPUT_STRIP_TRAILING_WHITESPACE) endif() if(_CMD_JAVA_HOME AND IS_DIRECTORY "${_CMD_JAVA_HOME}") set(_JAVA_HOME "${_CMD_JAVA_HOME}") set(_JAVA_HOME_EXPLICIT 0) endif() unset(_CMD_JAVA_HOME) endif() unset(_ENV_JAVA_HOME) endif() # Save CMAKE_FIND_FRAMEWORK if(DEFINED CMAKE_FIND_FRAMEWORK) set(_JNI_CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK}) else() unset(_JNI_CMAKE_FIND_FRAMEWORK) endif() if(_JAVA_HOME_EXPLICIT) set(CMAKE_FIND_FRAMEWORK NEVER) endif() set(JAVA_JSIG_LIBRARY_DIRECTORIES) if(_JAVA_HOME) JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_JSIG_LIBRARY_DIRECTORIES ${_JAVA_HOME}/jre/lib/{libarch} ${_JAVA_HOME}/jre/lib ${_JAVA_HOME}/lib/{libarch} ${_JAVA_HOME}/lib ${_JAVA_HOME} ) endif() get_filename_component(java_install_version "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit;CurrentVersion]" NAME) list(APPEND JAVA_JSIG_LIBRARY_DIRECTORIES "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/lib" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/lib" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/lib" ) JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_JSIG_LIBRARY_DIRECTORIES /usr/lib /usr/local/lib /usr/lib/jvm/java/lib /usr/lib/java/jre/lib/{libarch} /usr/lib/jvm/jre/lib/{libarch} /usr/local/lib/java/jre/lib/{libarch} /usr/local/share/java/jre/lib/{libarch} /usr/lib/j2sdk1.4-sun/jre/lib/{libarch} /usr/lib/j2sdk1.5-sun/jre/lib/{libarch} /opt/sun-jdk-1.5.0.04/jre/lib/{libarch} /usr/lib/jvm/java-6-sun/jre/lib/{libarch} /usr/lib/jvm/java-1.5.0-sun/jre/lib/{libarch} /usr/lib/jvm/java-6-sun-1.6.0.00/jre/lib/{libarch} # can this one be removed according to #8821 ? Alex /usr/lib/jvm/java-6-openjdk/jre/lib/{libarch} /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/{libarch} # fedora # Debian specific paths for default JVM /usr/lib/jvm/default-java/jre/lib/{libarch} /usr/lib/jvm/default-java/jre/lib /usr/lib/jvm/default-java/lib # Arch Linux specific paths for default JVM /usr/lib/jvm/default/jre/lib/{libarch} /usr/lib/jvm/default/lib/{libarch} # Ubuntu specific paths for default JVM /usr/lib/jvm/java-8-openjdk-{libarch}/jre/lib/{libarch} # Ubuntu 15.10 /usr/lib/jvm/java-7-openjdk-{libarch}/jre/lib/{libarch} # Ubuntu 15.10 /usr/lib/jvm/java-6-openjdk-{libarch}/jre/lib/{libarch} # Ubuntu 15.10 # OpenBSD specific paths for default JVM /usr/local/jdk-1.7.0/jre/lib/{libarch} /usr/local/jre-1.7.0/lib/{libarch} /usr/local/jdk-1.6.0/jre/lib/{libarch} /usr/local/jre-1.6.0/lib/{libarch} # SuSE specific paths for default JVM /usr/lib64/jvm/java/jre/lib/{libarch} /usr/lib64/jvm/jre/lib/{libarch} ) set(JAVA_JVM_LIBRARY_DIRECTORIES) foreach(dir ${JAVA_JSIG_LIBRARY_DIRECTORIES}) list(APPEND JAVA_JVM_LIBRARY_DIRECTORIES "${dir}" "${dir}/client" "${dir}/server" # IBM SDK, Java Technology Edition, specific paths "${dir}/j9vm" "${dir}/default" ) endforeach() if(APPLE) if(CMAKE_FIND_FRAMEWORK STREQUAL "ONLY") set(_JNI_SEARCHES FRAMEWORK) elseif(CMAKE_FIND_FRAMEWORK STREQUAL "NEVER") set(_JNI_SEARCHES NORMAL) elseif(CMAKE_FIND_FRAMEWORK STREQUAL "LAST") set(_JNI_SEARCHES NORMAL FRAMEWORK) else() set(_JNI_SEARCHES FRAMEWORK NORMAL) endif() set(_JNI_FRAMEWORK_JVM NAMES JavaVM) set(_JNI_FRAMEWORK_JSIG "${_JNI_FRAMEWORK_JVM}") else() set(_JNI_SEARCHES NORMAL) endif() set(_JNI_NORMAL_JVM NAMES jvm PATHS ${JAVA_JVM_LIBRARY_DIRECTORIES} ) set(_JNI_NORMAL_JSIG NAMES jsig PATHS ${JAVA_JSIG_LIBRARY_DIRECTORIES} ) foreach(search ${_JNI_SEARCHES}) find_library(JAVA_JVM_LIBRARY ${_JNI_${search}_JVM}) find_library(JAVA_JSIG_LIBRARY ${_JNI_${search}_JSIG}) if(JAVA_JVM_LIBRARY) break() endif() endforeach() unset(_JNI_SEARCHES) unset(_JNI_FRAMEWORK_JVM) unset(_JNI_FRAMEWORK_JSIG) unset(_JNI_NORMAL_JVM) unset(_JNI_NORMAL_JSIG) # Find headers matching the library. if("${JAVA_JVM_LIBRARY};" MATCHES "(/JavaVM.framework|-framework JavaVM);") set(CMAKE_FIND_FRAMEWORK ONLY) else() set(CMAKE_FIND_FRAMEWORK NEVER) endif() # Restore CMAKE_FIND_FRAMEWORK if(DEFINED _JNI_CMAKE_FIND_FRAMEWORK) set(CMAKE_FIND_FRAMEWORK ${_JNI_CMAKE_FIND_FRAMEWORK}) unset(_JNI_CMAKE_FIND_FRAMEWORK) else() unset(CMAKE_FIND_FRAMEWORK) endif() mark_as_advanced(JAVA_JVM_LIBRARY JAVA_JSIG_LIBRARY) set(LIBJVM_LIBRARIES ${JAVA_JSIG_LIBRARY} ${JAVA_JVM_LIBRARY}) if(JAVA_JSIG_LIBRARY AND JAVA_JVM_LIBRARY) set(LIBJVM_FOUND TRUE) else() set(LIBJVM_FOUND FALSE) endif() endif() if (LIBJVM_FOUND AND NOT TARGET LibJVM::libjsig) message(STATUS "Found libjsig library: ${JAVA_JSIG_LIBRARY}") add_library(LibJVM::libjsig UNKNOWN IMPORTED) set_target_properties(LibJVM::libjsig PROPERTIES IMPORTED_LOCATION "${JAVA_JSIG_LIBRARY}") endif() if (LIBJVM_FOUND AND NOT TARGET LibJVM::libjvm) message(STATUS "Found libjvm library: ${JAVA_JVM_LIBRARY}") add_library(LibJVM::libjvm UNKNOWN IMPORTED) set_target_properties(LibJVM::libjvm PROPERTIES IMPORTED_LOCATION "${JAVA_JVM_LIBRARY}") endif() TileDB-2.6.2/cmake/Modules/FindLZ4_EP.cmake000066400000000000000000000101211417424417000201130ustar00rootroot00000000000000# # FindLZ4_EP.cmake # # # The MIT License # # Copyright (c) 2018-2021 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # Finds the LZ4 library, installing with an ExternalProject as necessary. # This module defines: # - LZ4_INCLUDE_DIR, directory containing headers # - LZ4_LIBRARIES, the LZ4 library path # - LZ4_FOUND, whether LZ4 has been found # - The LZ4::LZ4 imported target # Include some common helper functions. include(TileDBCommon) # First check for a static version in the EP prefix. find_library(LZ4_LIBRARIES NAMES liblz4${CMAKE_STATIC_LIBRARY_SUFFIX} liblz4_static${CMAKE_STATIC_LIBRARY_SUFFIX} lz4${CMAKE_STATIC_LIBRARY_SUFFIX} PATHS ${TILEDB_EP_INSTALL_PREFIX} PATH_SUFFIXES lib NO_DEFAULT_PATH ) if (LZ4_LIBRARIES) set(LZ4_STATIC_EP_FOUND TRUE) find_path(LZ4_INCLUDE_DIR NAMES lz4.h PATHS ${TILEDB_EP_INSTALL_PREFIX} PATH_SUFFIXES include NO_DEFAULT_PATH ) elseif(NOT TILEDB_FORCE_ALL_DEPS) set(LZ4_STATIC_EP_FOUND FALSE) # Static EP not found, search in system paths. find_library(LZ4_LIBRARIES NAMES lz4 liblz4 PATH_SUFFIXES lib bin ${TILEDB_DEPS_NO_DEFAULT_PATH} ) find_path(LZ4_INCLUDE_DIR NAMES lz4.h PATH_SUFFIXES include ${TILEDB_DEPS_NO_DEFAULT_PATH} ) endif() include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZ4 REQUIRED_VARS LZ4_LIBRARIES LZ4_INCLUDE_DIR ) if (NOT LZ4_FOUND) if (TILEDB_SUPERBUILD) message(STATUS "Adding LZ4 as an external project") if (WIN32) set(ARCH_SPEC -A X64) endif() set(LZ4_CMAKE_DIR "${TILEDB_EP_SOURCE_DIR}/ep_lz4/build/cmake/") ExternalProject_Add(ep_lz4 PREFIX "externals" # Set download name to avoid collisions with only the version number in the filename DOWNLOAD_NAME ep_lz4.zip URL "https://github.com/lz4/lz4/archive/v1.9.3.zip" URL_HASH SHA1=3e28f6691ee45c468b5aba3943bf26528b030a55 CONFIGURE_COMMAND ${CMAKE_COMMAND} ${ARCH_SPEC} -DLZ4_BUILD_LEGACY_LZ4C=OFF -DLZ4_POSITION_INDEPENDENT_LIB=ON -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${TILEDB_EP_INSTALL_PREFIX} -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} ${LZ4_CMAKE_DIR} UPDATE_COMMAND "" LOG_DOWNLOAD TRUE LOG_CONFIGURE TRUE LOG_BUILD TRUE LOG_INSTALL TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} ) list(APPEND TILEDB_EXTERNAL_PROJECTS ep_lz4) list(APPEND FORWARD_EP_CMAKE_ARGS -DTILEDB_LZ4_EP_BUILT=TRUE ) else() message(FATAL_ERROR "Unable to find LZ4") endif() endif() set(ignoreUnusedWarning "${TILEDB_LZ4_EP_BUILT}") if (LZ4_FOUND AND NOT TARGET LZ4::LZ4) add_library(LZ4::LZ4 UNKNOWN IMPORTED) set_target_properties(LZ4::LZ4 PROPERTIES IMPORTED_LOCATION "${LZ4_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${LZ4_INCLUDE_DIR}" ) endif() # If we built a static EP, install it if required. if (LZ4_STATIC_EP_FOUND AND TILEDB_INSTALL_STATIC_DEPS) install_target_libs(LZ4::LZ4) endif() TileDB-2.6.2/cmake/Modules/FindOpenSSL_EP.cmake000066400000000000000000000127131417424417000207760ustar00rootroot00000000000000# # FindOpenSSL_EP.cmake # # # The MIT License # # Copyright (c) 2018-2021 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # Finds the OpenSSL library, installing with an ExternalProject as necessary. # This module defines: # - OPENSSL_INCLUDE_DIR, directory containing headers # - OPENSSL_LIBRARIES, the OpenSSL library path # - OPENSSL_FOUND, whether OpenSSL has been found # - The OpenSSL::SSL and OpenSSL::Crypto imported targets # Include some common helper functions. include(TileDBCommon) # Search the path set during the superbuild for the EP. set(OPENSSL_PATHS ${TILEDB_EP_INSTALL_PREFIX}) # Add /usr/local/opt, as Homebrew sometimes installs it there. set (HOMEBREW_BASE "/usr/local/opt/openssl") if (NOT TILEDB_DEPS_NO_DEFAULT_PATH) list(APPEND OPENSSL_PATHS ${HOMEBREW_BASE}) endif() # First try the CMake-provided find script. # NOTE: must use OPENSSL_ROOT_DIR. HINTS does not work. set(OPENSSL_ROOT_DIR ${OPENSSL_PATHS}) if (NOT TILEDB_FORCE_ALL_DEPS) find_package(OpenSSL 1.1.0 ${TILEDB_DEPS_NO_DEFAULT_PATH}) endif() # Next try finding the superbuild external project if (NOT OPENSSL_FOUND AND TILEDB_FORCE_ALL_DEPS) find_path(OPENSSL_INCLUDE_DIR NAMES openssl/ssl.h PATHS ${OPENSSL_PATHS} PATH_SUFFIXES include ${TILEDB_DEPS_NO_DEFAULT_PATH} ) # Link statically if installed with the EP. find_library(OPENSSL_SSL_LIBRARY NAMES libssl${CMAKE_STATIC_LIBRARY_SUFFIX} PATHS ${OPENSSL_PATHS} PATH_SUFFIXES lib ${TILEDB_DEPS_NO_DEFAULT_PATH} ) find_library(OPENSSL_CRYPTO_LIBRARY NAMES libcrypto${CMAKE_STATIC_LIBRARY_SUFFIX} PATHS ${OPENSSL_PATHS} PATH_SUFFIXES lib ${TILEDB_DEPS_NO_DEFAULT_PATH} ) include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenSSL REQUIRED_VARS OPENSSL_SSL_LIBRARY OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR ) endif() if (NOT OPENSSL_FOUND AND TILEDB_SUPERBUILD) message(STATUS "Adding OpenSSL as an external project") if (WIN32) message(FATAL_ERROR "OpenSSL external project unimplemented on Windows.") endif() # Support cross compilation of MacOS if (CMAKE_OSX_ARCHITECTURES STREQUAL arm64) set(OPENSSL_CONFIG_CMD ${CMAKE_COMMAND} -E env "ARCHFLAGS=\\\\-arch arm64" ${TILEDB_EP_BASE}/src/ep_openssl/Configure darwin64-arm64-cc --prefix=${TILEDB_EP_INSTALL_PREFIX} no-shared -fPIC) elseif(CMAKE_OSX_ARCHITECTURES STREQUAL x86_64) set(OPENSSL_CONFIG_CMD ${CMAKE_COMMAND} -E env "ARCHFLAGS=\\\\-arch x86_64" ${TILEDB_EP_BASE}/src/ep_openssl/Configure darwin64-x86_64-cc --prefix=${TILEDB_EP_INSTALL_PREFIX} no-shared -fPIC) else() set(OPENSSL_CONFIG_CMD ${TILEDB_EP_BASE}/src/ep_openssl/config --prefix=${TILEDB_EP_INSTALL_PREFIX} no-shared -fPIC) endif() ExternalProject_Add(ep_openssl PREFIX "externals" URL "https://github.com/openssl/openssl/archive/OpenSSL_1_1_1i.zip" URL_HASH SHA1=627938302f681dfac186a9225b65368516b4f484 CONFIGURE_COMMAND ${OPENSSL_CONFIG_CMD} BUILD_IN_SOURCE TRUE BUILD_COMMAND $(MAKE) INSTALL_COMMAND $(MAKE) install UPDATE_COMMAND "" LOG_DOWNLOAD TRUE LOG_CONFIGURE TRUE LOG_BUILD TRUE LOG_INSTALL TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} ) set(TILEDB_OPENSSL_DIR "${TILEDB_EP_INSTALL_PREFIX}") list(APPEND TILEDB_EXTERNAL_PROJECTS ep_openssl) list(APPEND FORWARD_EP_CMAKE_ARGS -DTILEDB_OPENSSL_EP_BUILT=TRUE ) endif() if (OPENSSL_FOUND) message(STATUS "Found OpenSSL: ${OPENSSL_SSL_LIBRARY} -- OpenSSL crypto: ${OPENSSL_CRYPTO_LIBRARY} -- root: ${OPENSSL_ROOT_DIR}") if (DEFINED OPENSSL_INCLUDE_DIR AND "${OPENSSL_INCLUDE_DIR}" MATCHES "${HOMEBREW_BASE}.*") # define TILEDB_OPENSSL_DIR so we can ensure curl links the homebrew version set(TILEDB_OPENSSL_DIR "${HOMEBREW_BASE}") endif() if (NOT TARGET OpenSSL::SSL) add_library(OpenSSL::SSL UNKNOWN IMPORTED) set_target_properties(OpenSSL::SSL PROPERTIES IMPORTED_LOCATION "${OPENSSL_SSL_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}" ) endif() if (NOT TARGET OpenSSL::Crypto) add_library(OpenSSL::Crypto UNKNOWN IMPORTED) set_target_properties(OpenSSL::Crypto PROPERTIES IMPORTED_LOCATION "${OPENSSL_CRYPTO_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}" ) endif() endif() # If we built a static EP, install it if required. if (TILEDB_OPENSSL_EP_BUILT AND TILEDB_INSTALL_STATIC_DEPS) install_target_libs(OpenSSL::SSL) install_target_libs(OpenSSL::Crypto) endif() TileDB-2.6.2/cmake/Modules/FindSpdlog_EP.cmake000066400000000000000000000113051417424417000207370ustar00rootroot00000000000000# # FindSpdlog_EP.cmake # # # The MIT License # # Copyright (c) 2018-2021 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # Finds the Spdlog library, installing with an ExternalProject as necessary. # This module defines: # - SPDLOG_INCLUDE_DIR, directory containing headers # - SPDLOG_FOUND, whether Spdlog has been found # - The spdlog::spdlog imported target # Include some common helper functions. include(TileDBCommon) # If the EP was built, it will install the storage_client-config.cmake file, # which we can use with find_package. CMake uses CMAKE_PREFIX_PATH to locate find # modules. set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${TILEDB_EP_INSTALL_PREFIX}") # First try the CMake find module. if (NOT TILEDB_FORCE_ALL_DEPS OR TILEDB_SPDLOG_EP_BUILT) if (TILEDB_SPDLOG_EP_BUILT) # If we built it from the source always force no default path SET(TILEDB_SPDLOG_NO_DEFAULT_PATH NO_DEFAULT_PATH) else() SET(TILEDB_SPDLOG_NO_DEFAULT_PATH ${TILEDB_DEPS_NO_DEFAULT_PATH}) endif() find_package(spdlog PATHS ${TILEDB_EP_INSTALL_PREFIX} ${TILEDB_SPDLOG_NO_DEFAULT_PATH} ) set(SPDLOG_FOUND ${spdlog_FOUND}) endif() if (NOT SPDLOG_FOUND) if(TILEDB_SUPERBUILD) if (WIN32) find_package(Git REQUIRED) set(CONDITIONAL_PATCH cd ${CMAKE_SOURCE_DIR} && ${GIT_EXECUTABLE} apply --ignore-whitespace -p1 --unsafe-paths --verbose --directory=${TILEDB_EP_SOURCE_DIR}/ep_spdlog < ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_spdlog/spdlog.patch) else() set(CONDITIONAL_PATCH patch -N -p1 < ${TILEDB_CMAKE_INPUTS_DIR}/patches/ep_spdlog/spdlog.patch) endif() message(STATUS "Adding spdlog as an external project") ExternalProject_Add(ep_spdlog PREFIX "externals" # Set download name to avoid collisions with only the version number in the filename DOWNLOAD_NAME ep_spdlog.zip URL "https://github.com/gabime/spdlog/archive/v1.9.0.zip" URL_HASH SHA1=6259d1b6c5b9b565aa3ba5a6315d49f76d90ec0a PATCH_COMMAND ${CONDITIONAL_PATCH} CMAKE_ARGS -DCMAKE_PREFIX_PATH=${TILEDB_EP_INSTALL_PREFIX} -DCMAKE_INSTALL_PREFIX=${TILEDB_EP_INSTALL_PREFIX} -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DSPDLOG_BUILD_SHARED=OFF LOG_DOWNLOAD TRUE LOG_CONFIGURE TRUE LOG_BUILD TRUE LOG_INSTALL TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} ) list(APPEND TILEDB_EXTERNAL_PROJECTS ep_spdlog) list(APPEND FORWARD_EP_CMAKE_ARGS -DTILEDB_SPDLOG_EP_BUILT=TRUE ) else() message(FATAL_ERROR "Unable to find spdlog") endif() endif() if (spdlog_FOUND AND NOT TARGET spdlog::spdlog) add_library(spdlog::spdlog INTERFACE IMPORTED) find_package(fmt QUIET) if (${fmt_FOUND}) target_link_libraries(spdlog::spdlog INTERFACE fmt::fmt) endif() set_target_properties(spdlog::spdlog PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${SPDLOG_INCLUDE_DIR}" ) # If the target is defined we need to handle external fmt build types elseif(TARGET spdlog::spdlog) if (SPDLOG_FMT_EXTERNAL) # Since we are using header only we need to define this add_definitions("-DSPDLOG_FMT_EXTERNAL=1") find_package(fmt REQUIRED) if (${fmt_FOUND}) target_link_libraries(spdlog::spdlog INTERFACE fmt::fmt) endif() endif() endif() # If we built a static EP, install it if required. if (TILEDB_SPDLOG_EP_BUILT AND TILEDB_INSTALL_STATIC_DEPS) install_target_libs(spdlog::spdlog) endif() TileDB-2.6.2/cmake/Modules/FindZlib_EP.cmake000066400000000000000000000101511417424417000204050ustar00rootroot00000000000000# # FindZlib_EP.cmake # # The MIT License # # Copyright (c) 2018-2021 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # Finds the Zlib library, installing with an ExternalProject as necessary. # This module defines: # - ZLIB_INCLUDE_DIR, directory containing headers # - ZLIB_LIBRARIES, the Zlib library path # - ZLIB_FOUND, whether Zlib has been found # - The Zlib::Zlib imported target # Include some common helper functions. include(TileDBCommon) # Search the path set during the superbuild for the EP. set(ZLIB_PATHS ${TILEDB_EP_INSTALL_PREFIX}) # Try the builtin find module unless built w/ EP superbuild # Built-in module only supports shared zlib, so using it # w/in superbuild we end up linking zlib.dll. # https://gitlab.kitware.com/cmake/cmake/issues/18029) if ((NOT TILEDB_FORCE_ALL_DEPS) AND (NOT TILEDB_ZLIB_EP_BUILT)) find_package(ZLIB ${TILEDB_DEPS_NO_DEFAULT_PATH}) endif() # Next try finding the superbuild external project if (NOT ZLIB_FOUND) find_path(ZLIB_INCLUDE_DIR NAMES zlib.h PATHS ${ZLIB_PATHS} PATH_SUFFIXES include ${TILEDB_DEPS_NO_DEFAULT_PATH} ) # Link statically if installed with the EP. find_library(ZLIB_LIBRARIES NAMES libz${CMAKE_STATIC_LIBRARY_SUFFIX} zlibstatic${CMAKE_STATIC_LIBRARY_SUFFIX} zlibstaticd${CMAKE_STATIC_LIBRARY_SUFFIX} PATHS ${ZLIB_PATHS} PATH_SUFFIXES lib ${TILEDB_DEPS_NO_DEFAULT_PATH} ) include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Zlib REQUIRED_VARS ZLIB_LIBRARIES ZLIB_INCLUDE_DIR ) endif() # If not found, add it as an external project if (NOT ZLIB_FOUND) if (TILEDB_SUPERBUILD) message(STATUS "Adding Zlib as an external project") if (WIN32) set(CFLAGS_DEF "") else() set(CFLAGS_DEF "${CMAKE_C_FLAGS} -fPIC") endif() ExternalProject_Add(ep_zlib PREFIX "externals" URL "http://prdownloads.sourceforge.net/libpng/zlib1211.zip?download" URL_HASH SHA1=bccd93ad3cee39c3d08eee68d45b3e11910299f2 DOWNLOAD_NAME "zlib1211.zip" CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${TILEDB_EP_INSTALL_PREFIX} -DCMAKE_BUILD_TYPE=Release "-DCMAKE_C_FLAGS=${CFLAGS_DEF}" -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} UPDATE_COMMAND "" LOG_DOWNLOAD TRUE LOG_CONFIGURE TRUE LOG_BUILD TRUE LOG_INSTALL TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} ) list(APPEND TILEDB_EXTERNAL_PROJECTS ep_zlib) list(APPEND FORWARD_EP_CMAKE_ARGS -DTILEDB_ZLIB_EP_BUILT=TRUE ) set(TILEDB_ZLIB_DIR "${TILEDB_EP_INSTALL_PREFIX}") else() message(FATAL_ERROR "Unable to find Zlib") endif() endif() if (ZLIB_FOUND AND NOT TARGET Zlib::Zlib) message(STATUS "Found Zlib, adding imported target: ${ZLIB_LIBRARIES}") add_library(Zlib::Zlib UNKNOWN IMPORTED) set_target_properties(Zlib::Zlib PROPERTIES IMPORTED_LOCATION "${ZLIB_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${ZLIB_INCLUDE_DIR}" ) endif() # If we built a static EP, install it if required. if (TILEDB_ZLIB_EP_BUILT AND TILEDB_INSTALL_STATIC_DEPS) install_target_libs(Zlib::Zlib) endif() TileDB-2.6.2/cmake/Modules/FindZstd_EP.cmake000066400000000000000000000076721417424417000204470ustar00rootroot00000000000000# # FindZstd_EP.cmake # # # The MIT License # # Copyright (c) 2017-2021 TileDB, Inc. # Copyright (c) 2016 MIT and Intel Corporation # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # Finds the Zstd library, installing with an ExternalProject as necessary. # This module defines: # - ZSTD_INCLUDE_DIR, directory containing headers # - ZSTD_LIBRARIES, the Zstd library path # - ZSTD_FOUND, whether Zstd has been found # - The Zstd::Zstd imported target # Include some common helper functions. include(TileDBCommon) # First check for a static version in the EP prefix. find_library(ZSTD_LIBRARIES NAMES libzstd${CMAKE_STATIC_LIBRARY_SUFFIX} zstd_static${CMAKE_STATIC_LIBRARY_SUFFIX} PATHS ${TILEDB_EP_INSTALL_PREFIX} PATH_SUFFIXES lib NO_DEFAULT_PATH ) if (ZSTD_LIBRARIES) set(ZSTD_STATIC_EP_FOUND TRUE) find_path(ZSTD_INCLUDE_DIR NAMES zstd.h PATHS ${TILEDB_EP_INSTALL_PREFIX} PATH_SUFFIXES include NO_DEFAULT_PATH ) elseif(NOT TILEDB_FORCE_ALL_DEPS) set(ZSTD_STATIC_EP_FOUND FALSE) # Static EP not found, search in system paths. find_library(ZSTD_LIBRARIES NAMES zstd libzstd PATH_SUFFIXES lib bin ${TILEDB_DEPS_NO_DEFAULT_PATH} ) find_path(ZSTD_INCLUDE_DIR NAMES zstd.h PATH_SUFFIXES include ${TILEDB_DEPS_NO_DEFAULT_PATH} ) endif() include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Zstd REQUIRED_VARS ZSTD_LIBRARIES ZSTD_INCLUDE_DIR ) if (NOT ZSTD_FOUND) if (TILEDB_SUPERBUILD) message(STATUS "Adding Zstd as an external project") if (WIN32) set(ARCH_SPEC -A X64) set(CFLAGS_DEF "") else() set(CFLAGS_DEF "${CMAKE_C_FLAGS} -fPIC") endif() ExternalProject_Add(ep_zstd PREFIX "externals" # Set download name to avoid collisions with only the version number in the filename DOWNLOAD_NAME ep_zstd.zip URL "https://github.com/facebook/zstd/archive/v1.4.8.zip" URL_HASH SHA1=8323c212a779ada25f5d587349326e84b047b536 CONFIGURE_COMMAND ${CMAKE_COMMAND} ${ARCH_SPEC} "-DCMAKE_C_FLAGS=${CFLAGS_DEF}" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${TILEDB_EP_INSTALL_PREFIX} -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} ${TILEDB_EP_BASE}/src/ep_zstd/build/cmake UPDATE_COMMAND "" LOG_DOWNLOAD TRUE LOG_CONFIGURE TRUE LOG_BUILD TRUE LOG_INSTALL TRUE LOG_OUTPUT_ON_FAILURE ${TILEDB_LOG_OUTPUT_ON_FAILURE} ) list(APPEND TILEDB_EXTERNAL_PROJECTS ep_zstd) else() message(FATAL_ERROR "Unable to find Zstd") endif() endif() if (ZSTD_FOUND AND NOT TARGET Zstd::Zstd) add_library(Zstd::Zstd UNKNOWN IMPORTED) set_target_properties(Zstd::Zstd PROPERTIES IMPORTED_LOCATION "${ZSTD_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${ZSTD_INCLUDE_DIR}" ) endif() # If we built a static EP, install it if required. if (ZSTD_STATIC_EP_FOUND AND TILEDB_INSTALL_STATIC_DEPS) install_target_libs(Zstd::Zstd) endif() TileDB-2.6.2/cmake/Modules/TileDBCommon.cmake000066400000000000000000000075761417424417000206150ustar00rootroot00000000000000# # TileDBCommon.cmake # # # The MIT License # # Copyright (c) 2018-2021 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # This file defines some common helper functions used by the external projects. # # Get library directory for multiarch linux distros include(GNUInstallDirs) # # Stores the IMPORTED_LOCATION* target property of LIB_TARGET in RESULT_VAR. # On Windows, preferentially tries the IMPORTED_IMPLIB* target property instead. # function(get_imported_location RESULT_VAR LIB_TARGET) if (WIN32) # Try several methods to find the imported location. get_target_property(TMP ${LIB_TARGET} IMPORTED_IMPLIB) if (TMP MATCHES "NOTFOUND") get_target_property(TMP ${LIB_TARGET} IMPORTED_IMPLIB_RELWITHDEBINFO) endif() if (TMP MATCHES "NOTFOUND") get_target_property(TMP ${LIB_TARGET} IMPORTED_IMPLIB_RELEASE) endif() if (TMP MATCHES "NOTFOUND") get_target_property(TMP ${LIB_TARGET} IMPORTED_IMPLIB_DEBUG) endif() endif() # Try several methods to find the imported location. if (TMP MATCHES "NOTFOUND" OR NOT WIN32) get_target_property(TMP ${LIB_TARGET} IMPORTED_LOCATION) endif() if (TMP MATCHES "NOTFOUND") get_target_property(TMP ${LIB_TARGET} IMPORTED_LOCATION_RELWITHDEBINFO) endif() if (TMP MATCHES "NOTFOUND") get_target_property(TMP ${LIB_TARGET} IMPORTED_LOCATION_RELEASE) endif() if (TMP MATCHES "NOTFOUND") get_target_property(TMP ${LIB_TARGET} IMPORTED_LOCATION_DEBUG) endif() set(${RESULT_VAR} "${TMP}" PARENT_SCOPE) endfunction() # # Concatenates the library name of the given imported target to the installation # prefix and stores the result in RESULT_VAR. If the given library does not reside # in the external projects build directory (i.e. it was not built by an EP), then # just return the imported location. # function(get_installed_location RESULT_VAR LIB_TARGET) get_imported_location(IMP_LOC ${LIB_TARGET}) if ("${IMP_LOC}" MATCHES "^${TILEDB_EP_BASE}") get_filename_component(LIB_NAME "${IMP_LOC}" NAME) set(INSTALLED_PATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/${LIB_NAME}") else() set(INSTALLED_PATH "${IMP_LOC}") endif() set(${RESULT_VAR} "${INSTALLED_PATH}" PARENT_SCOPE) endfunction() # # Adds imported libraries from the given target to the TileDB installation # manifest. # function(install_target_libs LIB_TARGET) get_imported_location(TARGET_LIBRARIES ${LIB_TARGET}) if (TARGET_LIBRARIES MATCHES "NOTFOUND") message(FATAL_ERROR "Could not determine library location for ${LIB_TARGET}") endif() if (WIN32 AND ${TARGET_LIBRARIES} MATCHES "${CMAKE_SHARED_LIBRARY_SUFFIX}$") install(FILES ${TARGET_LIBRARIES} DESTINATION ${CMAKE_INSTALL_BINDIR}) else() install(FILES ${TARGET_LIBRARIES} DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() endfunction() # Suppress warnings from find_package_handle_standard_args usage w/ *_EP targets set(FPHSA_NAME_MISMATCHED TRUE) TileDB-2.6.2/cmake/TileDB-Superbuild.cmake000066400000000000000000000172371417424417000201430ustar00rootroot00000000000000include (ExternalProject) ############################################################ # Common variables ############################################################ # Build paths for external projects set(TILEDB_EP_BASE "${CMAKE_CURRENT_BINARY_DIR}/externals") set(TILEDB_EP_SOURCE_DIR "${TILEDB_EP_BASE}/src") set(TILEDB_EP_INSTALL_PREFIX "${TILEDB_EP_BASE}/install") # A variable that will hold the paths to all the dependencies that are built # during the superbuild. These paths are passed to the regular non-superbuild # build process as CMake arguments. set(FORWARD_EP_CMAKE_ARGS) # Variable that will hold a list of all the external projects added # as a part of the superbuild. set(TILEDB_EXTERNAL_PROJECTS) # Forward any additional CMake args to the non-superbuild. set(INHERITED_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -DCOMPILER_SUPPORTS_AVX2=${COMPILER_SUPPORTS_AVX2} -DTILEDB_VERBOSE=${TILEDB_VERBOSE} -DTILEDB_S3=${TILEDB_S3} -DTILEDB_AZURE=${TILEDB_AZURE} -DTILEDB_GCS=${TILEDB_GCS} -DTILEDB_HDFS=${TILEDB_HDFS} -DTILEDB_WERROR=${TILEDB_WERROR} -DTILEDB_CPP_API=${TILEDB_CPP_API} -DTILEDB_FORCE_ALL_DEPS=${TILEDB_FORCE_ALL_DEPS} -DSANITIZER=${SANITIZER} -DTILEDB_EP_BASE=${TILEDB_EP_BASE} -DTILEDB_STATS=${TILEDB_STATS} -DTILEDB_STATIC=${TILEDB_STATIC} -DTILEDB_TESTS=${TILEDB_TESTS} -DTILEDB_TOOLS=${TILEDB_TOOLS} -DTILEDB_SERIALIZATION=${TILEDB_SERIALIZATION} -DTILEDB_ARROW_TESTS=${TILEDB_ARROW_TESTS} -DTILEDB_INSTALL_LIBDIR=${TILEDB_INSTALL_LIBDIR} -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} ) if (TILEDB_TESTS) list(APPEND INHERITED_CMAKE_ARGS -DTILEDB_TESTS_AWS_S3_CONFIG=${TILEDB_TESTS_AWS_S3_CONFIG} -DTILEDB_TESTS_ENABLE_REST=${TILEDB_TESTS_ENABLE_REST} ) endif() if (WIN32) list(APPEND INHERITED_CMAKE_ARGS -DMSVC_MP_FLAG=${MSVC_MP_FLAG} ) endif() if (TILEDB_CCACHE) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/FindCcache.cmake) list(APPEND INHERITED_CMAKE_ARGS -DCMAKE_CXX_COMPILER_LAUNCHER=${CCACHE_FOUND} ) endif() ############################################################ # Set up external projects for dependencies ############################################################ if (TILEDB_FORCE_ALL_DEPS) message(STATUS "Forcing superbuild to build all dependencies as ExternalProjects.") endif() # These includes modify the TILEDB_EXTERNAL_PROJECTS and FORWARD_EP_CMAKE_ARGS # variables. include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/FindBzip2_EP.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/FindLZ4_EP.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/FindSpdlog_EP.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/FindZlib_EP.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/FindZstd_EP.cmake) if (TILEDB_SERIALIZATION) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/FindCapnp_EP.cmake) endif() if (NOT WIN32) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/FindOpenSSL_EP.cmake) endif() if (TILEDB_S3 OR TILEDB_AZURE OR TILEDB_GCS OR TILEDB_SERIALIZATION) # Need libcurl either with S3 or serialization support. include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/FindCurl_EP.cmake) endif() if (TILEDB_S3) # Note on Win32: AWS SDK uses builtin WinHTTP instead of libcurl, # and builtin BCrypt instead of OpenSSL. include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/FindAWSSDK_EP.cmake) endif() if (TILEDB_AZURE) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/FindAzureSDK_EP.cmake) endif() if (TILEDB_GCS) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/FindGCSSDK_EP.cmake) endif() if (TILEDB_TESTS) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/FindCatch_EP.cmake) endif() if (TILEDB_TOOLS) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/FindClipp_EP.cmake) endif() ############################################################ # Set up the regular build (i.e. non-superbuild). ############################################################ ExternalProject_Add(tiledb SOURCE_DIR ${PROJECT_SOURCE_DIR} CMAKE_ARGS -DTILEDB_SUPERBUILD=OFF ${INHERITED_CMAKE_ARGS} ${FORWARD_EP_CMAKE_ARGS} INSTALL_COMMAND "" BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/tiledb DEPENDS ${TILEDB_EXTERNAL_PROJECTS} ) ############################################################ # Convenience superbuild targets that invoke TileDB targets ############################################################ # make install-tiledb add_custom_target(install-tiledb COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/tiledb ) # make examples add_custom_target(examples COMMAND ${CMAKE_COMMAND} --build . --target examples --config ${CMAKE_BUILD_TYPE} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/tiledb ) # make check if (TILEDB_TESTS) add_custom_target(check COMMAND ${CMAKE_COMMAND} --build . --target check --config ${CMAKE_BUILD_TYPE} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/tiledb ) endif() ############################################################ # "make format" and "make check-format" targets ############################################################ set(SCRIPTS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/scripts") find_package(ClangTools) if (NOT ${CLANG_FORMAT_FOUND}) find_program(CLANG_FORMAT_BIN NAMES clang-format clang-format-5.0 clang-format-6.0 clang-format-7 clang-format-8 clang-format-9 clang-format-10 clang-format-11) if(CLANG_FORMAT_BIN) set(CLANG_FORMAT_FOUND TRUE) endif() endif() if (${CLANG_FORMAT_FOUND}) message(STATUS "clang hunt, found ${CLANG_FORMAT_BIN}") # runs clang format and updates files in place. add_custom_target(format ${SCRIPTS_DIR}/run-clang-format.sh ${CMAKE_CURRENT_SOURCE_DIR} ${CLANG_FORMAT_BIN} 1 `find ${CMAKE_CURRENT_SOURCE_DIR}/tiledb ${CMAKE_CURRENT_SOURCE_DIR}/test/src ${CMAKE_CURRENT_SOURCE_DIR}/examples ${CMAKE_CURRENT_SOURCE_DIR}/tools -name \\*.cc -or -name \\*.c -or -name \\*.h`) # runs clang format and exits with a non-zero exit code if any files need to be reformatted add_custom_target(check-format ${SCRIPTS_DIR}/run-clang-format.sh ${CMAKE_CURRENT_SOURCE_DIR} ${CLANG_FORMAT_BIN} 0 `find ${CMAKE_CURRENT_SOURCE_DIR}/tiledb ${CMAKE_CURRENT_SOURCE_DIR}/test/src ${CMAKE_CURRENT_SOURCE_DIR}/examples ${CMAKE_CURRENT_SOURCE_DIR}/tools -name \\*.cc -or -name \\*.c -or -name \\*.h`) else() message(STATUS "was unable to find clang-format") endif() ########################################################### # Doxygen documentation ########################################################### find_package(Doxygen) if(DOXYGEN_FOUND) set(TILEDB_C_API_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/tiledb/sm/c_api/tiledb.h") file(GLOB TILEDB_CPP_API_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/tiledb/sm/cpp_api/*.h") set(TILEDB_API_HEADERS ${TILEDB_C_API_HEADERS} ${TILEDB_CPP_API_HEADERS}) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/doxyfile.in COMMAND mkdir -p doxygen COMMAND echo INPUT = ${CMAKE_CURRENT_SOURCE_DIR}/doc/mainpage.dox ${TILEDB_API_HEADERS} > ${CMAKE_CURRENT_BINARY_DIR}/doxyfile.in COMMENT "Preparing for Doxygen documentation" VERBATIM ) add_custom_target(doc ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.mk > ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.log 2>&1 COMMENT "Generating API documentation with Doxygen" VERBATIM DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/doxyfile.in ) else(DOXYGEN_FOUND) add_custom_target(doc _______doc COMMENT "!! Docs cannot be built. Please install Doxygen and re-run cmake. !!" VERBATIM ) endif(DOXYGEN_FOUND) TileDB-2.6.2/cmake/inputs/000077500000000000000000000000001417424417000152325ustar00rootroot00000000000000TileDB-2.6.2/cmake/inputs/Config.cmake.in000066400000000000000000000012521417424417000200460ustar00rootroot00000000000000# # This file attempts to locate the TileDB library. If found, the following # imported targets are created: # - TileDB::tiledb_shared # - TileDB::tiledb_static # And the following variables are defined: # - TILEDB_FOUND # - TileDB_FOUND # @PACKAGE_INIT@ include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake") check_required_components("@PROJECT_NAME@") # Targets required for linking against tiledb_static: @TILEDB_STATIC_DEP_STRING@ # -- End required targets for static # Define a convenience all-caps variable if (NOT DEFINED TILEDB_FOUND) if (TARGET TileDB::tiledb_shared) set(TILEDB_FOUND TRUE) else() set(TILEDB_FOUND FALSE) endif() endif()TileDB-2.6.2/cmake/inputs/configure-curl.sh.in000077500000000000000000000003451417424417000211240ustar00rootroot00000000000000#!/bin/bash # Script that will run curl's configure script after setting the # LIBS environment variable. This is used by CMake at build time, # which will expand all of the @VAR@ variables. export LIBS="@TILEDB_CURL_LIBS@" $@ TileDB-2.6.2/cmake/inputs/patches/000077500000000000000000000000001417424417000166615ustar00rootroot00000000000000TileDB-2.6.2/cmake/inputs/patches/README.md000066400000000000000000000017361417424417000201470ustar00rootroot00000000000000TileDB patches -------------- TileDB dependencies must be built against source packages of released software versions. To simplify patchset maintenance, we may also fork a specific repository version in the TileDB-Inc organization. Several illustrative examples, using the Azure CPP Lite dependency: - applying a patchset to a repo fork: ``` git clone https://github.com/Azure/azure-storage-cpplite cd azure-storage-cpplite git am /path/to/TileDB/cmake/inputs/patches/ep_azure/v0.3.0-patchset.patch ``` - re-creating the patchset from updated fork: ``` cd azure-storage-cpplite # commit or cherry-pick changes git format-patch v0.3.0 --stdout > /path/to/TileDB/cmake/inputs/patches/ep_azure/v0.3.0-patchset.patch # git add, commit, push to TileDB-Inc fork ``` Note that the target branch above is for illustration only. The target version should match the version of the dependency used in the `cmake/Modules/Find.cmake` file. TileDB-2.6.2/cmake/inputs/patches/ep_awssdk/000077500000000000000000000000001417424417000206415ustar00rootroot00000000000000TileDB-2.6.2/cmake/inputs/patches/ep_awssdk/awsccommon.patch000066400000000000000000000011411417424417000240250ustar00rootroot00000000000000diff --git a/third-party/CMakeLists.txt b/third-party/CMakeLists.txt index b4cf1be2..64f10d43 100644 --- a/third-party/CMakeLists.txt +++ b/third-party/CMakeLists.txt @@ -15,7 +15,7 @@ set(AWS_DEPS_BUILD_DIR "${CMAKE_BINARY_DIR}/build" CACHE PATH "Dependencies buil set(AWS_DEPS_DOWNLOAD_DIR "${AWS_DEPS_BUILD_DIR}/downloads" CACHE PATH "Dependencies download directory.") set(AWS_C_COMMON_URL "https://github.com/awslabs/aws-c-common.git") -set(AWS_C_COMMON_TAG "v0.4.42") +set(AWS_C_COMMON_TAG "v0.6.2") include(BuildAwsCCommon) set(AWS_CHECKSUMS_URL "https://github.com/awslabs/aws-checksums.git") TileDB-2.6.2/cmake/inputs/patches/ep_awssdk/awsconfig_cmake_3.22.patch000066400000000000000000000016471417424417000254560ustar00rootroot00000000000000diff --git a/cmake/AWSSDKConfig.cmake b/cmake/AWSSDKConfig.cmake index 83eac0b3b4..c1bf32066d 100644 --- a/cmake/AWSSDKConfig.cmake +++ b/cmake/AWSSDKConfig.cmake @@ -129,11 +129,13 @@ endif() get_filename_component(TEMP_PATH "${AWSSDK_CORE_LIB_FILE}" PATH) get_filename_component(TEMP_NAME "${TEMP_PATH}" NAME) -while (NOT TEMP_NAME STREQUAL ${LIB_SEARCH_PREFIX}) - set(TEMP_PLATFORM_PREFIX "${TEMP_NAME}/${TEMP_PLATFORM_PREFIX}") - get_filename_component(TEMP_PATH "${TEMP_PATH}" PATH) - get_filename_component(TEMP_NAME "${TEMP_PATH}" NAME) -endwhile() +if(LIB_SEARCH_PREFIX) + while (NOT TEMP_NAME STREQUAL "${LIB_SEARCH_PREFIX}") + set(TEMP_PLATFORM_PREFIX "${TEMP_NAME}/${TEMP_PLATFORM_PREFIX}") + get_filename_component(TEMP_PATH "${TEMP_PATH}" PATH) + get_filename_component(TEMP_NAME "${TEMP_PATH}" NAME) + endwhile() +endif() set(AWSSDK_PLATFORM_PREFIX "${TEMP_PLATFORM_PREFIX}") TileDB-2.6.2/cmake/inputs/patches/ep_azuresdk/000077500000000000000000000000001417424417000211755ustar00rootroot00000000000000TileDB-2.6.2/cmake/inputs/patches/ep_azuresdk/v0.3.0-patchset.patch000066400000000000000000000045661417424417000246660ustar00rootroot00000000000000From 4e58dda184d9dbe405a8a21ad6aa9a1e46057831 Mon Sep 17 00:00:00 2001 From: Joe maley Date: Tue, 18 Feb 2020 15:54:40 -0500 Subject: [PATCH 1/2] remove uuid dependency Signed-off-by: Isaiah Norton --- CMakeLists.txt | 10 +++++----- src/utility.cpp | 9 ++++++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dfb441e..cefd897 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -147,11 +147,11 @@ if (UNIX) list(APPEND EXTRA_LIBRARIES ${GNUTLS_LIBRARIES}) endif() - if(NOT APPLE) - find_package(PkgConfig REQUIRED) - pkg_check_modules(uuid REQUIRED IMPORTED_TARGET uuid) - list(APPEND EXTRA_LIBRARIES PkgConfig::uuid) - endif() +# if(NOT APPLE) +# find_package(PkgConfig REQUIRED) +# pkg_check_modules(uuid REQUIRED IMPORTED_TARGET uuid) +# list(APPEND EXTRA_LIBRARIES PkgConfig::uuid) +# endif() elseif(WIN32) list(APPEND EXTRA_LIBRARIES rpcrt4 bcrypt) target_compile_definitions(azure-storage-lite PRIVATE azure_storage_lite_EXPORTS NOMINMAX) diff --git a/src/utility.cpp b/src/utility.cpp index 747fcb1..07593e0 100644 --- a/src/utility.cpp +++ b/src/utility.cpp @@ -8,7 +8,7 @@ #define WIN32_LEAN_AND_MEAN #include #else -#include +//#include #include #include #include @@ -26,6 +26,7 @@ namespace azure { namespace storage_lite { return str; } +/* std::string get_uuid() { std::string res; @@ -46,6 +47,12 @@ namespace azure { namespace storage_lite { return res; } +*/ + + std::string get_uuid() { + std::cerr << "azure::storage_lite::get_uuid() unimplemented" << std::endl; + exit(1); + } bool create_or_resize_file(const std::string& path, unsigned long long length) noexcept { -- 2.22.0.windows.1 From e9908d8c1956a05f5b33d8ffecd971c2b437e5aa Mon Sep 17 00:00:00 2001 From: Jinming Hu Date: Sun, 21 Jun 2020 22:44:31 +0800 Subject: [PATCH 2/2] Fix build error on VS2019 --- src/base64.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/base64.cpp b/src/base64.cpp index e6dead7..0b3e18e 100644 --- a/src/base64.cpp +++ b/src/base64.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "base64.h" -- 2.22.0.windows.1 TileDB-2.6.2/cmake/inputs/patches/ep_azuresdk/v0.3.0.CMakeLists.txt.md5mitigation000066400000000000000000000146631417424417000273430ustar00rootroot00000000000000cmake_minimum_required(VERSION 3.6) project(azurestoragelite) set(CMAKE_CXX_STANDARD 11) option(BUILD_TESTS "Build test codes" OFF) option(BUILD_SAMPLES "Build sample codes" OFF) option(BUILD_SHARED_LIBS "Request build of shared libraries" OFF) option(BUILD_ADLS "Build ADLS Gen2 codes" OFF) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set(AZURE_STORAGE_LITE_HEADER include/storage_EXPORTS.h include/logging.h include/base64.h include/common.h include/compare.h include/constants.h include/constants.dat include/executor.h include/hash.h include/retry.h include/utility.h include/mstream.h include/tinyxml2.h include/xml_parser_base.h include/tinyxml2_parser.h include/xml_writer.h include/json_parser_base.h include/storage_account.h include/storage_credential.h include/storage_outcome.h include/storage_stream.h include/storage_url.h include/storage_errno.h include/storage_request_base.h include/get_blob_request_base.h include/put_blob_request_base.h include/delete_blob_request_base.h include/copy_blob_request_base.h include/create_container_request_base.h include/delete_container_request_base.h include/set_container_metadata_request_base.h include/list_containers_request_base.h include/list_blobs_request_base.h include/get_block_list_request_base.h include/put_block_request_base.h include/get_blob_property_request_base.h include/set_blob_metadata_request_base.h include/get_container_property_request_base.h include/put_block_list_request_base.h include/append_block_request_base.h include/put_page_request_base.h include/get_page_ranges_request_base.h include/http_base.h include/http/libcurl_http_client.h include/blob/blob_client.h include/blob/download_blob_request.h include/blob/create_block_blob_request.h include/blob/delete_blob_request.h include/blob/copy_blob_request.h include/blob/create_container_request.h include/blob/delete_container_request.h include/blob/set_container_metadata_request.h include/blob/list_containers_request.h include/blob/list_blobs_request.h include/blob/get_blob_property_request.h include/blob/set_blob_metadata_request.h include/blob/get_container_property_request.h include/blob/get_block_list_request.h include/blob/put_block_request.h include/blob/put_block_list_request.h include/blob/append_block_request.h include/blob/put_page_request.h include/blob/get_page_ranges_request.h ) set(AZURE_STORAGE_LITE_SOURCE src/logging.cpp src/base64.cpp src/constants.cpp src/hash.cpp src/utility.cpp src/tinyxml2.cpp src/tinyxml2_parser.cpp src/storage_account.cpp src/storage_credential.cpp src/storage_url.cpp src/get_blob_request_base.cpp src/put_blob_request_base.cpp src/delete_blob_request_base.cpp src/copy_blob_request_base.cpp src/create_container_request_base.cpp src/delete_container_request_base.cpp src/set_container_metadata_request_base.cpp src/list_containers_request_base.cpp src/list_blobs_request_base.cpp src/get_blob_property_request_base.cpp src/set_blob_metadata_request_base.cpp src/get_block_list_request_base.cpp src/get_container_property_request_base.cpp src/put_block_request_base.cpp src/put_block_list_request_base.cpp src/append_block_request_base.cpp src/put_page_request_base.cpp src/get_page_ranges_request_base.cpp src/http/libcurl_http_client.cpp src/blob/blob_client.cpp src/blob/blob_client_wrapper.cpp ) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) add_library(azure-storage-lite ${AZURE_STORAGE_LITE_HEADER} ${AZURE_STORAGE_LITE_SOURCE}) set(CMAKE_THREAD_PREFER_PTHREAD TRUE) set(THREADS_PREFER_PTHREAD_FLAG TRUE) find_package(Threads REQUIRED) find_package(CURL REQUIRED) if (UNIX) option(USE_OPENSSL "Use OpenSSL instead of GnuTLS" ON) if(USE_OPENSSL) target_compile_definitions(azure-storage-lite PRIVATE -DUSE_OPENSSL) set(OPENSSL_ROOT_DIR ${OPENSSL_ROOT_DIR} /usr/local/opt/openssl) find_package(OpenSSL REQUIRED) list(APPEND EXTRA_LIBRARIES OpenSSL::SSL OpenSSL::Crypto) else() find_package(GnuTLS REQUIRED) list(APPEND EXTRA_INCLUDE_DIRS ${GNUTLS_INCLUDE_DIR}) list(APPEND EXTRA_LIBRARIES ${GNUTLS_LIBRARIES}) endif() # if(NOT APPLE) # find_package(PkgConfig REQUIRED) # pkg_check_modules(uuid REQUIRED IMPORTED_TARGET uuid) # list(APPEND EXTRA_LIBRARIES PkgConfig::uuid) # endif() elseif(WIN32) list(APPEND EXTRA_LIBRARIES rpcrt4 bcrypt) target_compile_definitions(azure-storage-lite PRIVATE azure_storage_lite_EXPORTS NOMINMAX) endif() #openssl3 md5 deprecation mitigation if(UNIX) #sledge hammer approach target_compile_options(azure-storage-lite PRIVATE "-Wno-deprecated-declarations") endif() if(MSVC) #sledge hammer approach target_compile_options(azure-storage-lite PRIVATE "/wd4996") endif() if(BUILD_TESTS) find_package(Catch2) if(NOT Catch2_FOUND) find_path(SINGLE_HEADER_CATCH2_INCLUDE_DIR catch2/catch.hpp PATHS ${CATCH2_INCLUDE_DIR}) message("Found single-header Catch2: ${SINGLE_HEADER_CATCH2_INCLUDE_DIR}/catch2/catch.hpp") add_library(Catch2::Catch2 INTERFACE IMPORTED) set_target_properties(Catch2::Catch2 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${SINGLE_HEADER_CATCH2_INCLUDE_DIR}) endif() endif() target_include_directories(azure-storage-lite PUBLIC ${PROJECT_SOURCE_DIR}/include ${CURL_INCLUDE_DIRS} PRIVATE ${EXTRA_INCLUDE_DIRS}) target_link_libraries(azure-storage-lite Threads::Threads ${CURL_LIBRARIES} ${EXTRA_LIBRARIES}) if(MSVC) target_compile_options(azure-storage-lite PRIVATE /W4 /WX /MP) elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") target_compile_options(azure-storage-lite PRIVATE -Wall -Wextra -Werror -pedantic) endif() if(BUILD_ADLS) add_subdirectory(adls) endif() if(BUILD_TESTS) add_subdirectory(test) endif() if(BUILD_SAMPLES) add_subdirectory(sample) endif() # Set version numbers centralized set(AZURE_STORAGE_LITE_VERSION_MAJOR 0) set(AZURE_STORAGE_LITE_VERSION_MINOR 3) set(AZURE_STORAGE_LITE_VERSION_REVISION 0) install(DIRECTORY include/ DESTINATION include) install(TARGETS azure-storage-lite ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin) TileDB-2.6.2/cmake/inputs/patches/ep_bzip2/000077500000000000000000000000001417424417000203735ustar00rootroot00000000000000TileDB-2.6.2/cmake/inputs/patches/ep_bzip2/CMakeLists.txt000066400000000000000000000036461417424417000231440ustar00rootroot00000000000000# # CMakeLists.txt # # # The MIT License # # Copyright (c) 2017 TileDB, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # project(bzip2) cmake_minimum_required(VERSION 2.8) set(SOURCES "blocksort.c" "huffman.c" "crctable.c" "randtable.c" "compress.c" "decompress.c" "bzlib.c") file(GLOB HEADERS "bzlib.h") # Set build flags if (WIN32) set(CMAKE_C_FLAGS "/DWIN32 /D_FILE_OFFSET_BITS=64 /MD /Ox /nologo") else() set(CMAKE_C_FLAGS "-D_FILE_OFFSET_BITS=64 -Wall -Winline -O2 -g") endif() # Create libraries add_library(bzip2_static STATIC ${SOURCES}) set_target_properties(bzip2_static PROPERTIES OUTPUT_NAME "libbz2static") add_library(bzip2_shared SHARED ${SOURCES} libbz2.def) set_target_properties(bzip2_shared PROPERTIES OUTPUT_NAME "libbz2") # Install libraries install( TARGETS bzip2_static bzip2_shared RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) install(FILES ${HEADERS} DESTINATION include) TileDB-2.6.2/cmake/inputs/patches/ep_capnp/000077500000000000000000000000001417424417000204465ustar00rootroot00000000000000TileDB-2.6.2/cmake/inputs/patches/ep_capnp/capnp_CMakeLists.txt.patch000066400000000000000000000017661417424417000254770ustar00rootroot00000000000000diff --git a/c++/src/capnp/CMakeLists.txt b/c++/src/capnp/CMakeLists.txt index deb4becf..a3c0065d 100644 --- a/c++/src/capnp/CMakeLists.txt +++ b/c++/src/capnp/CMakeLists.txt @@ -186,7 +186,10 @@ if(NOT CAPNP_LITE) install(TARGETS capnp_tool capnpc_cpp capnpc_capnp ${INSTALL_TARGETS_DEFAULT_ARGS}) # Symlink capnpc -> capnp - install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E create_symlink capnp${CMAKE_EXECUTABLE_SUFFIX} \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_BINDIR}/capnpc${CMAKE_EXECUTABLE_SUFFIX}\")") +#tiledb just exec's capnp directly. If capnproto project ever changes name +#of capnp(.exe) may need to reconsider what to do with this, if using the +#new name is problematic. +# install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E create_symlink capnp${CMAKE_EXECUTABLE_SUFFIX} \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_BINDIR}/capnpc${CMAKE_EXECUTABLE_SUFFIX}\")") endif() # NOT CAPNP_LITE # Tests ======================================================================== TileDB-2.6.2/cmake/inputs/patches/ep_capnp/libkj-invokable-const.patch000066400000000000000000000022511417424417000256560ustar00rootroot00000000000000diff --git a/c++/src/kj/main.c++ b/c++/src/kj/main.c++ index 4d84294a..d25369f4 100644 --- a/c++/src/kj/main.c++ +++ b/c++/src/kj/main.c++ @@ -631,7 +631,7 @@ void MainBuilder::MainImpl::usageError(StringPtr programName, StringPtr message) class MainBuilder::Impl::OptionDisplayOrder { public: - bool operator()(const Option* a, const Option* b) { + bool operator()(const Option* a, const Option* b) const { if (a == b) return false; char aShort = '\0'; diff --git a/c++/src/kj/time.c++ b/c++/src/kj/time.c++ index 5b3b4334..ead7e4c1 100644 --- a/c++/src/kj/time.c++ +++ b/c++/src/kj/time.c++ @@ -41,7 +41,7 @@ Clock& nullClock() { struct TimerImpl::Impl { struct TimerBefore { - bool operator()(TimerPromiseAdapter* lhs, TimerPromiseAdapter* rhs); + bool operator()(TimerPromiseAdapter* lhs, TimerPromiseAdapter* rhs) const; }; using Timers = std::multiset; Timers timers; @@ -75,7 +75,7 @@ private: }; inline bool TimerImpl::Impl::TimerBefore::operator()( - TimerPromiseAdapter* lhs, TimerPromiseAdapter* rhs) { + TimerPromiseAdapter* lhs, TimerPromiseAdapter* rhs) const { return lhs->time < rhs->time; } TileDB-2.6.2/cmake/inputs/patches/ep_gcssdk/000077500000000000000000000000001417424417000206235ustar00rootroot00000000000000TileDB-2.6.2/cmake/inputs/patches/ep_gcssdk/build.patch000066400000000000000000000365251417424417000227560ustar00rootroot00000000000000From b95493b781f372c0afbbfe0c1f8d1603513bd25a Mon Sep 17 00:00:00 2001 From: Joe Maley Date: Fri, 8 Jan 2021 10:51:53 -0500 Subject: [PATCH] GCS build patch for TileDB --- CMakeLists.txt | 5 +++ super/CMakeLists.txt | 14 +++++-- super/external/abseil.cmake | 7 ++-- super/external/c-ares.cmake | 6 ++- super/external/crc32c.cmake | 6 ++- super/external/curl.cmake | 63 --------------------------------- super/external/googletest.cmake | 6 ++- super/external/grpc.cmake | 16 ++++++-- super/external/protobuf.cmake | 8 ++-- super/external/ssl.cmake | 26 -------------- super/external/zlib.cmake | 46 ------------------------ 11 files changed, 47 insertions(+), 149 deletions(-) delete mode 100644 super/external/curl.cmake delete mode 100644 super/external/ssl.cmake delete mode 100644 super/external/zlib.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index e0ffd4a75..cda631c40 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,6 +65,11 @@ endif () option(GOOGLE_CLOUD_CPP_ENABLE_MACOS_OPENSSL_CHECK "If enabled, check that the user has defined OPENSSL_ROOT_DIR on macOS" ON) + + if (NOT DEFINED ENV{OPENSSL_ROOT_DIR} AND DEFINED OPENSSL_ROOT_DIR) + set(ENV{OPENSSL_ROOT_DIR} ${OPENSSL_ROOT_DIR}) + endif() + if (APPLE) # This is an easy mistake to make, and the error messages are very # confusing. Help our users by giving them some guidance. diff --git a/super/CMakeLists.txt b/super/CMakeLists.txt index f5560a620..12ca348a2 100644 --- a/super/CMakeLists.txt +++ b/super/CMakeLists.txt @@ -39,7 +39,6 @@ endif () include(external/abseil) include(external/benchmark) -include(external/curl) include(external/crc32c) include(external/googletest) include(external/grpc) @@ -55,7 +54,6 @@ set_external_project_vars() set(GOOGLE_CLOUD_CPP_DEPENDENCIES_LIST abseil-cpp-project grpc-project - curl-project crc32c-project nlohmann-json-project googletest-project @@ -77,6 +75,15 @@ ExternalProject_Add( -DCMAKE_PREFIX_PATH=${GOOGLE_CLOUD_CPP_PREFIX_PATH} -DCMAKE_INSTALL_RPATH=${GOOGLE_CLOUD_CPP_INSTALL_RPATH} -DCMAKE_INSTALL_PREFIX= + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} + -DBUILD_SAMPLES=${BUILD_SAMPLES} + -DCMAKE_CXX_FLAGS=-fPIC + -DCMAKE_C_FLAGS=-fPIC + -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR} + -DGOOGLE_CLOUD_CPP_ENABLE_MACOS_OPENSSL_CHECK=OFF + -DBUILD_TESTING=${BUILD_TESTING} + -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} BUILD_COMMAND ${CMAKE_COMMAND} --build ${PARALLEL} TEST_COMMAND ${CMAKE_CTEST_COMMAND} @@ -89,7 +95,8 @@ ExternalProject_Add( LOG_DOWNLOAD OFF LOG_CONFIGURE OFF LOG_BUILD OFF - LOG_INSTALL OFF) + LOG_INSTALL OFF + LOG_OUTPUT_ON_FAILURE ON) # This makes it easy to compile the dependencies before the code. add_custom_target(project-dependencies) diff --git a/super/external/abseil.cmake b/super/external/abseil.cmake index 97d2c1551..0b71ee987 100644 --- a/super/external/abseil.cmake +++ b/super/external/abseil.cmake @@ -46,11 +46,14 @@ if (NOT TARGET abseil-cpp-project) -DCMAKE_PREFIX_PATH=${GOOGLE_CLOUD_CPP_PREFIX_PATH} -DCMAKE_INSTALL_RPATH=${GOOGLE_CLOUD_CPP_INSTALL_RPATH} -DCMAKE_INSTALL_PREFIX= + -DCMAKE_CXX_FLAGS=-fPIC + -DCMAKE_C_FLAGS=-fPIC + -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} BUILD_COMMAND ${CMAKE_COMMAND} --build ${PARALLEL} PATCH_COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_LIST_DIR}/abseil-patch.cmake" - LOG_DOWNLOAD OFF LOG_CONFIGURE OFF LOG_BUILD ON - LOG_INSTALL ON) + LOG_INSTALL ON + LOG_OUTPUT_ON_FAILURE ON) endif () diff --git a/super/external/c-ares.cmake b/super/external/c-ares.cmake index 5b898e3f7..63bd708b6 100644 --- a/super/external/c-ares.cmake +++ b/super/external/c-ares.cmake @@ -40,9 +40,13 @@ if (NOT TARGET c-ares-project) -DCMAKE_PREFIX_PATH=${GOOGLE_CLOUD_CPP_PREFIX_PATH} -DCMAKE_INSTALL_RPATH=${GOOGLE_CLOUD_CPP_INSTALL_RPATH} -DCMAKE_INSTALL_PREFIX= + -DCMAKE_CXX_FLAGS=-fPIC + -DCMAKE_C_FLAGS=-fPIC + -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} BUILD_COMMAND ${CMAKE_COMMAND} --build ${PARALLEL} LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON - LOG_INSTALL ON) + LOG_INSTALL ON + LOG_OUTPUT_ON_FAILURE ON) endif () diff --git a/super/external/crc32c.cmake b/super/external/crc32c.cmake index ed35de175..7d54c5ae8 100644 --- a/super/external/crc32c.cmake +++ b/super/external/crc32c.cmake @@ -43,9 +43,13 @@ if (NOT TARGET crc32c-project) -DCRC32C_BUILD_TESTS=OFF -DCRC32C_BUILD_BENCHMARKS=OFF -DCRC32C_USE_GLOG=OFF + -DCMAKE_CXX_FLAGS=-fPIC + -DCMAKE_C_FLAGS=-fPIC + -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} BUILD_COMMAND ${CMAKE_COMMAND} --build ${PARALLEL} LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON - LOG_INSTALL ON) + LOG_INSTALL ON + LOG_OUTPUT_ON_FAILURE ON) endif () diff --git a/super/external/curl.cmake b/super/external/curl.cmake deleted file mode 100644 index 1a695e098..000000000 --- a/super/external/curl.cmake +++ /dev/null @@ -1,63 +0,0 @@ -# ~~~ -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ~~~ - -include(external/c-ares) -include(external/ssl) -include(external/zlib) - -if (NOT TARGET curl-project) - # Give application developers a hook to configure the version and hash - # downloaded from GitHub. - set(GOOGLE_CLOUD_CPP_CURL_URL - "https://curl.haxx.se/download/curl-7.69.1.tar.gz") - set(GOOGLE_CLOUD_CPP_CURL_SHA256 - "01ae0c123dee45b01bbaef94c0bc00ed2aec89cb2ee0fd598e0d302a6b5e0a98") - - set_external_project_build_parallel_level(PARALLEL) - set_external_project_vars() - - include(ExternalProject) - ExternalProject_Add( - curl-project - DEPENDS c-ares-project ssl-project zlib-project - EXCLUDE_FROM_ALL ON - PREFIX "${CMAKE_BINARY_DIR}/external/curl" - INSTALL_DIR "${GOOGLE_CLOUD_CPP_EXTERNAL_PREFIX}" - URL ${GOOGLE_CLOUD_CPP_CURL_URL} - URL_HASH SHA256=${GOOGLE_CLOUD_CPP_CURL_SHA256} - LIST_SEPARATOR | - CMAKE_ARGS ${GOOGLE_CLOUD_CPP_EXTERNAL_PROJECT_CMAKE_FLAGS} - -DCMAKE_PREFIX_PATH=${GOOGLE_CLOUD_CPP_PREFIX_PATH} - -DCMAKE_INSTALL_RPATH=${GOOGLE_CLOUD_CPP_INSTALL_RPATH} - -DCMAKE_INSTALL_PREFIX= - # libcurl automatically enables a number of protocols. With - # static libraries this is a problem. The indirect - # dependencies, such as libldap, become hard to predict and - # manage. Setting HTTP_ONLY=ON disables all optional - # protocols and meets our needs. If the application needs a - # version of libcurl with other protocols enabled they can - # compile against it by using find_package() and defining the - # `curl_project` target. - -DHTTP_ONLY=ON - -DCMAKE_ENABLE_OPENSSL=ON - -DENABLE_ARES=ON - -DCMAKE_DEBUG_POSTFIX= - BUILD_COMMAND ${CMAKE_COMMAND} --build ${PARALLEL} - LOG_DOWNLOAD ON - LOG_CONFIGURE ON - LOG_BUILD ON - LOG_INSTALL ON) -endif () diff --git a/super/external/googletest.cmake b/super/external/googletest.cmake index a4e5220e0..f7cd15b61 100644 --- a/super/external/googletest.cmake +++ b/super/external/googletest.cmake @@ -40,9 +40,13 @@ if (NOT TARGET googletest-project) -DCMAKE_PREFIX_PATH=${GOOGLE_CLOUD_CPP_PREFIX_PATH} -DCMAKE_INSTALL_RPATH=${GOOGLE_CLOUD_CPP_INSTALL_RPATH} -DCMAKE_INSTALL_PREFIX= + -DCMAKE_CXX_FLAGS=-fPIC + -DCMAKE_C_FLAGS=-fPIC + -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} BUILD_COMMAND ${CMAKE_COMMAND} --build ${PARALLEL} LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON - LOG_INSTALL ON) + LOG_INSTALL ON + LOG_OUTPUT_ON_FAILURE ON) endif () diff --git a/super/external/grpc.cmake b/super/external/grpc.cmake index 91f70eaa9..3cac5cfef 100644 --- a/super/external/grpc.cmake +++ b/super/external/grpc.cmake @@ -17,7 +17,6 @@ include(ExternalProjectHelper) include(external/abseil) include(external/c-ares) -include(external/ssl) include(external/protobuf) if (NOT TARGET grpc-project) @@ -34,7 +33,7 @@ if (NOT TARGET grpc-project) include(ExternalProject) ExternalProject_Add( grpc-project - DEPENDS c-ares-project protobuf-project ssl-project abseil-cpp-project + DEPENDS c-ares-project protobuf-project abseil-cpp-project EXCLUDE_FROM_ALL ON PREFIX "${CMAKE_BINARY_DIR}/external/grpc" INSTALL_DIR "${GOOGLE_CLOUD_CPP_EXTERNAL_PREFIX}" @@ -52,9 +51,20 @@ if (NOT TARGET grpc-project) -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_SSL_PROVIDER=package -DgRPC_ZLIB_PROVIDER=package + -DCMAKE_CXX_FLAGS=-fPIC + -DCMAKE_C_FLAGS=-fPIC + -DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF + -DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF + -DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF + -DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF + -DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF + -DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF + -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR} + -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} BUILD_COMMAND ${CMAKE_COMMAND} --build ${PARALLEL} LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON - LOG_INSTALL ON) + LOG_INSTALL ON + LOG_OUTPUT_ON_FAILURE ON) endif () diff --git a/super/external/protobuf.cmake b/super/external/protobuf.cmake index 7cc0aae1e..9351ef34f 100644 --- a/super/external/protobuf.cmake +++ b/super/external/protobuf.cmake @@ -17,7 +17,6 @@ find_package(Threads REQUIRED) include(ExternalProjectHelper) -include(external/zlib) if (NOT TARGET protobuf-project) # Give application developers a hook to configure the version and hash @@ -33,7 +32,6 @@ if (NOT TARGET protobuf-project) include(ExternalProject) ExternalProject_Add( protobuf-project - DEPENDS zlib-project EXCLUDE_FROM_ALL ON PREFIX "${CMAKE_BINARY_DIR}/external/protobuf" INSTALL_DIR "${GOOGLE_CLOUD_CPP_EXTERNAL_PREFIX}" @@ -51,9 +49,13 @@ if (NOT TARGET protobuf-project) -Dprotobuf_DEBUG_POSTFIX= -H/cmake -B + -DCMAKE_CXX_FLAGS=-fPIC + -DCMAKE_C_FLAGS=-fPIC + -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} BUILD_COMMAND ${CMAKE_COMMAND} --build ${PARALLEL} LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON - LOG_INSTALL ON) + LOG_INSTALL ON + LOG_OUTPUT_ON_FAILURE ON) endif () diff --git a/super/external/ssl.cmake b/super/external/ssl.cmake deleted file mode 100644 index 251eed2da..000000000 --- a/super/external/ssl.cmake +++ /dev/null @@ -1,26 +0,0 @@ -# ~~~ -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ~~~ - -if (NOT TARGET ssl-project) - # For OpenSSL we don't really support external projects. OpenSSL build - # system is notoriously finicky. Use vcpkg on Windows, or install OpenSSL - # using your operating system packages instead. - # - # This file is here to simplify the definition of external projects, such as - # curl and gRPC, that depend on a SSL library. - find_package(OpenSSL REQUIRED) - add_custom_target(ssl-project) -endif () diff --git a/super/external/zlib.cmake b/super/external/zlib.cmake deleted file mode 100644 index f9df5e4cc..000000000 --- a/super/external/zlib.cmake +++ /dev/null @@ -1,46 +0,0 @@ -# ~~~ -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ~~~ - -if (NOT TARGET zlib-project) - # Give application developers a hook to configure the version and hash - # downloaded from GitHub. - set(GOOGLE_CLOUD_CPP_ZLIB_URL - "https://github.com/madler/zlib/archive/v1.2.11.tar.gz") - set(GOOGLE_CLOUD_CPP_ZLIB_SHA256 - "629380c90a77b964d896ed37163f5c3a34f6e6d897311f1df2a7016355c45eff") - - set_external_project_build_parallel_level(PARALLEL) - set_external_project_vars() - - include(ExternalProject) - ExternalProject_Add( - zlib-project - EXCLUDE_FROM_ALL ON - PREFIX "${CMAKE_BINARY_DIR}/external/zlib" - INSTALL_DIR "${GOOGLE_CLOUD_CPP_EXTERNAL_PREFIX}" - URL ${GOOGLE_CLOUD_CPP_ZLIB_URL} - URL_HASH SHA256=${GOOGLE_CLOUD_CPP_ZLIB_SHA256} - LIST_SEPARATOR | - CMAKE_ARGS ${GOOGLE_CLOUD_CPP_EXTERNAL_PROJECT_CMAKE_FLAGS} - -DCMAKE_PREFIX_PATH=${GOOGLE_CLOUD_CPP_PREFIX_PATH} - -DCMAKE_INSTALL_RPATH=${GOOGLE_CLOUD_CPP_INSTALL_RPATH} - -DCMAKE_INSTALL_PREFIX= - BUILD_COMMAND ${CMAKE_COMMAND} --build ${PARALLEL} - LOG_DOWNLOAD ON - LOG_CONFIGURE ON - LOG_BUILD ON - LOG_INSTALL ON) -endif () -- 2.30.0 TileDB-2.6.2/cmake/inputs/patches/ep_gcssdk/disable_examples.patch000066400000000000000000000022321417424417000251440ustar00rootroot00000000000000From 95e54c03d877f89cab681e8ac3c747ca017a22ea Mon Sep 17 00:00:00 2001 From: Seth Shelnutt Date: Fri, 22 May 2020 15:29:11 -0400 Subject: [PATCH] All cloud examples should be wrapped in BUILD_TESTING --- google/cloud/examples/CMakeLists.txt | 10 ++--- 2 files changed, 41 insertions(+), 39 deletions(-) diff --git a/google/cloud/examples/CMakeLists.txt b/google/cloud/examples/CMakeLists.txt index 5af4627b4..dc052168b 100644 --- a/google/cloud/examples/CMakeLists.txt +++ b/google/cloud/examples/CMakeLists.txt @@ -15,13 +15,13 @@ # ~~~ # Pick the right MSVC runtime libraries. -include(SelectMSVCRuntime) +if (BUILD_TESTING) + include(SelectMSVCRuntime) -add_executable(gcs2cbt gcs2cbt.cc) -target_link_libraries(gcs2cbt bigtable_client storage_client + add_executable(gcs2cbt gcs2cbt.cc) + target_link_libraries(gcs2cbt bigtable_client storage_client google_cloud_cpp_grpc_utils) -google_cloud_cpp_add_common_options(gcs2cbt) -if (BUILD_TESTING) + google_cloud_cpp_add_common_options(gcs2cbt) add_test(NAME gcs2cbt COMMAND gcs2cbt) set_tests_properties( gcs2cbt PROPERTIES LABELS -- 2.26.2 TileDB-2.6.2/cmake/inputs/patches/ep_gcssdk/disable_tests.patch000066400000000000000000000014031417424417000244670ustar00rootroot00000000000000From 4749df2b03e70218870dab48b83d090af2451027 Mon Sep 17 00:00:00 2001 From: Seth Shelnutt Date: Fri, 22 May 2020 14:06:41 -0400 Subject: [PATCH] Add option to disable tests --- CMakeLists.txt | 1 + super/CMakeLists.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index c9275541b..0d0058b27 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -143,6 +143,7 @@ mark_as_advanced(GOOGLE_CLOUD_CPP_ENABLE_GRPC_UTILS) # Enable testing in this directory so we can do a top-level `make test`. This # also includes the BUILD_TESTING option, which is on by default. +option(BUILD_TESTING "" OFF) include(CTest) # Each subproject adds dependencies to this target to have their docs generated. 2.26.2 v1.22.0.CMakelists.txt.openssl3md5deprecationmitigation.patch000066400000000000000000000005701417424417000340270ustar00rootroot00000000000000TileDB-2.6.2/cmake/inputs/patches/ep_gcssdkdiff --git a/CMakeLists.txt b/CMakeLists.txt index 11327f7c..bdcef236 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,6 +23,10 @@ project( VERSION 1.22.0 LANGUAGES CXX C) +if(UNIX) +add_compile_options("-Wno-deprecated-declarations") +endif() + # Configure the Compiler options, we use C++11 features by default. set(GOOGLE_CLOUD_CPP_CXX_STANDARD "" TileDB-2.6.2/cmake/inputs/patches/ep_spdlog/000077500000000000000000000000001417424417000206355ustar00rootroot00000000000000TileDB-2.6.2/cmake/inputs/patches/ep_spdlog/spdlog.patch000066400000000000000000000013401417424417000231440ustar00rootroot00000000000000diff --git a/include/spdlog/logger-inl.h b/include/spdlog/logger-inl.h index d01c08da..5cd01176 100644 --- a/include/spdlog/logger-inl.h +++ b/include/spdlog/logger-inl.h @@ -250,7 +250,7 @@ SPDLOG_INLINE void logger::err_handler_(const std::string &msg) #if defined(USING_R) && defined(R_R_H) // if in R environment REprintf("[*** LOG ERROR #%04zu ***] [%s] [%s] {%s}\n", err_counter, date_buf, name().c_str(), msg.c_str()); #else - std::fprintf(stderr, "[*** LOG ERROR #%04zu ***] [%s] [%s] {%s}\n", err_counter, date_buf, name().c_str(), msg.c_str()); + std::fprintf(stderr, "[*** LOG ERROR #%04lu ***] [%s] [%s] {%s}\n", (unsigned long)err_counter, date_buf, name().c_str(), msg.c_str()); #endif } } TileDB-2.6.2/cmake/inputs/tiledb.pc.in000066400000000000000000000006641417424417000174340ustar00rootroot00000000000000prefix="@CMAKE_INSTALL_PREFIX@" exec_prefix="${prefix}" libdir="${prefix}/@CMAKE_INSTALL_LIBDIR@" includedir="${prefix}/include/tiledb" Name: TileDB Description: The Storage Engine for Data Science URL: https://github.com/TileDB-Inc/TileDB Version: @VERSION@ Requires: @PKGCONF_REQ_PUB@ Requires.private: @PKGCONF_REQ_PRIV@ Cflags: -I"${includedir}" Libs: -L"${libdir}" -ltiledb Libs.private: -L"${libdir}" -ltiledb @PKGCONF_LIBS_PRIV@TileDB-2.6.2/doc/000077500000000000000000000000001417424417000133755ustar00rootroot00000000000000TileDB-2.6.2/doc/Doxyfile.mk000066400000000000000000003067401417424417000155230ustar00rootroot00000000000000# Doxyfile 1.8.8 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # 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 (\" \"). #--------------------------------------------------------------------------- # 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 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. # 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 # 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 = "TileDB" # 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 = # 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 an logo or 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 = # 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 = 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. # 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 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 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 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 # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # 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 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 # 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 = # 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. # 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-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 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 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 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. # 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. # Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 4 # 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. ALIASES = # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding "class=itcl::class" # will allow you to use the command class in the itcl::class meaning. TCL_SUBST = # 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 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. 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. # 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 (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), VHDL. 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. 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 http://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 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 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); # 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 = NO # 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 (see: # http://www.riverbankcomputing.co.uk/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 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 # 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 = YES # 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 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 # types are typedef'ed and only the typedef is referenced, never the tag name. # The default value is: NO. TYPEDEF_HIDES_STRUCT = NO # 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 #--------------------------------------------------------------------------- # 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 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. # The default value is: NO. EXTRACT_PRIVATE = YES # 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. 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 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. # 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 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 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 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 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 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. # The default value is: system dependent. CASE_SENSE_NAMES = YES # 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 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 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 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 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 = YES # 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 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 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 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. # The default value is: NO. SORT_BY_SCOPE_NAME = NO # 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 default value is: YES. GENERATE_TESTLIST = YES # 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 = YES # 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 ... \endif and \cond # ... \endcond blocks. ENABLED_SECTIONS = # 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 list # will mention the files that were used to generate the documentation. # The default value is: YES. SHOW_USED_FILES = 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 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 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. 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 http://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 #--------------------------------------------------------------------------- # 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 = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # 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 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 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 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. # 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) # 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 standard # error (stderr). WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files #--------------------------------------------------------------------------- # 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. # Note: If this tag is empty the current directory is searched. #INPUT = ./headers # See Makefile, src file generated from Makefile @INCLUDE = doxyfile.in # This tag can be used to specify the character encoding of the source files # 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: http://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 patterns (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, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, # *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, # *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, # *.qsf, *.as and *.js. # See Makefile and the generated doxyfile.inc #FILE_PATTERNS = # 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 = NO # 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 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/* EXCLUDE_PATTERNS = # 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). EXAMPLE_PATH = # 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 = # 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. # 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 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. # # 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. 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 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. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # 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 #--------------------------------------------------------------------------- # 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 = NO # 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 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. # The default value is: NO. REFERENCED_BY_RELATION = NO # 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 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 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 http://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 config 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 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 #--------------------------------------------------------------------------- # 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 # The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in # which the alphabetical index list will be split. # Minimum value: 1, maximum value: 20, default value: 5. # 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 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. IGNORE_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = NO # 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 = doxygen/html # 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 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 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 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 therefor more robust against future updates. # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra stylesheet files is of importance (e.g. the last # stylesheet 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 stylesheet and background images according to # this color. Hue is specified as an angle on a colorwheel, see # http://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. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = 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. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_SECTIONS = NO # 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: http://developer.apple.com/tools/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 http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_DOCSET = NO # 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" # 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 = org.doxygen.Project # 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.doxygen.Publisher # 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 = Publisher # 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: http://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 # 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 = # 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 = # 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 default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO # 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 = # 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 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. # 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. # 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 Qt Help Project / Namespace # (see: http://qt-project.org/doc/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 = org.doxygen.Project # 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: http://qt-project.org/doc/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 = doxygen # 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: http://qt-project.org/doc/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_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: http://qt-project.org/doc/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 (see: # http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = # 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. # 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, 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. 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 = org.doxygen.Project # 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 # 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 stylesheets (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 = NO # 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 # 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. TREEVIEW_WIDTH = 250 # When 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. EXT_LINKS_IN_WINDOW = NO # 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 # Use the FORMULA_TRANPARENT 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 # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see # http://www.mathjax.org) which uses client side Javascript for the rendering # instead of using prerendered 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/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 http://www.mathjax.org before deployment. # The default value is: http://cdn.mathjax.org/mathjax/latest. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # 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/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 # , /