diff --git a/.github/workflows/MainDistributionPipeline.yml b/.github/workflows/MainDistributionPipeline.yml index 43eb3ff9..d5e9b1dc 100644 --- a/.github/workflows/MainDistributionPipeline.yml +++ b/.github/workflows/MainDistributionPipeline.yml @@ -24,10 +24,11 @@ concurrency: jobs: duckdb-stable-build: name: Build extension binaries - uses: ./.github/workflows/_extension_distribution.yml + uses: duckdb/extension-ci-tools/.github/workflows/_extension_distribution.yml@main with: duckdb_version: main extension_name: spatial + build_duckdb_shell: false # Dont build the shell, doesnt work on windows due to sqlite lib conflicts duckdb-stable-deploy: name: Deploy extension binaries diff --git a/.github/workflows/_extension_distribution.yml b/.github/workflows/_extension_distribution.yml deleted file mode 100644 index 8bcf9ac3..00000000 --- a/.github/workflows/_extension_distribution.yml +++ /dev/null @@ -1,381 +0,0 @@ -# Reusable workflow for building DuckDB extensions using a standardized environment -# -# The workflow: -# - builds the extension using the CI workflow from the corresponding DuckDB version -# - uploads the extensions as gh actions artifacts in the following format: -# --extension- -# -# note: extensions are simply uploaded to GitHub actions, deploying the extensions is done a separate step. More info on -# this can be found in https://github.com/duckdb/extension-template - -name: Extension distribution -on: - workflow_call: - inputs: - # The name with which the extension will be built - extension_name: - required: true - type: string - # DuckDB version to build against, should in most cases be identical to - duckdb_version: - required: true - type: string - # ';' separated list of architectures to exclude, for example: 'linux_amd64;osx_arm64' - exclude_archs: - required: false - type: string - default: "" - # Postfix added to artifact names. Can be used to guarantee unique names when this workflow is called multiple times - artifact_postfix: - required: false - type: string - default: "" - # Override the default vcpkg commit used by this version of DuckDB - vcpkg_commit: - required: false - type: string - default: "a1a1cbc975abf909a6c8985a6a2b8fe20bbd9bd6" - # Override the default script producing the matrices. Allows specifying custom matrices. - matrix_parse_script: - required: false - type: string - default: "./duckdb/scripts/modify_distribution_matrix.py" - # Enable building the DuckDB Shell - build_duckdb_shell: - required: false - type: boolean - default: true - -jobs: - generate_matrix: - name: Generate matrix - runs-on: ubuntu-latest - outputs: - linux_matrix: ${{ steps.set-matrix-linux.outputs.linux_matrix }} - windows_matrix: ${{ steps.set-matrix-windows.outputs.windows_matrix }} - osx_matrix: ${{ steps.set-matrix-osx.outputs.osx_matrix }} - wasm_matrix: ${{ steps.set-matrix-wasm.outputs.wasm_matrix }} - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - submodules: 'true' - - - name: Checkout DuckDB to version - run: | - cd duckdb - git checkout ${{ inputs.duckdb_version }} - - - id: parse-matrices - run: | - python3 ${{ inputs.matrix_parse_script }} --input ./duckdb/.github/config/distribution_matrix.json --select_os linux --output linux_matrix.json --exclude "${{ inputs.exclude_archs }}" --pretty - python3 ${{ inputs.matrix_parse_script }} --input ./duckdb/.github/config/distribution_matrix.json --select_os osx --output osx_matrix.json --exclude "${{ inputs.exclude_archs }}" --pretty - python3 ${{ inputs.matrix_parse_script }} --input ./duckdb/.github/config/distribution_matrix.json --select_os windows --output windows_matrix.json --exclude "${{ inputs.exclude_archs }}" --pretty - python3 ${{ inputs.matrix_parse_script }} --input ./duckdb/.github/config/distribution_matrix.json --select_os wasm --output wasm_matrix.json --exclude "${{ inputs.exclude_archs }}" --pretty - - - id: set-matrix-linux - run: | - linux_matrix="`cat linux_matrix.json`" - echo linux_matrix=$linux_matrix >> $GITHUB_OUTPUT - echo `cat $GITHUB_OUTPUT` - - - id: set-matrix-osx - run: | - osx_matrix="`cat osx_matrix.json`" - echo osx_matrix=$osx_matrix >> $GITHUB_OUTPUT - echo `cat $GITHUB_OUTPUT` - - - id: set-matrix-windows - run: | - windows_matrix="`cat windows_matrix.json`" - echo windows_matrix=$windows_matrix >> $GITHUB_OUTPUT - echo `cat $GITHUB_OUTPUT` - - - id: set-matrix-wasm - run: | - wasm_matrix="`cat wasm_matrix.json`" - echo wasm_matrix=$wasm_matrix >> $GITHUB_OUTPUT - echo `cat $GITHUB_OUTPUT` - - linux: - name: Linux - runs-on: ubuntu-latest - container: ${{ matrix.container }} - needs: generate_matrix - if: ${{ needs.generate_matrix.outputs.linux_matrix != '{}' && needs.generate_matrix.outputs.linux_matrix != '' }} - strategy: - matrix: ${{fromJson(needs.generate_matrix.outputs.linux_matrix)}} - env: - VCPKG_TARGET_TRIPLET: ${{ matrix.vcpkg_triplet }} - VCPKG_TOOLCHAIN_PATH: ${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake - GEN: Ninja - BUILD_SHELL: ${{ inputs.build_duckdb_shell && '1' || '0' }} - DUCKDB_PLATFORM: ${{ matrix.duckdb_arch }} - - steps: - - name: Install required ubuntu packages - if: ${{ matrix.duckdb_arch == 'linux_amd64' || matrix.duckdb_arch == 'linux_arm64' }} - run: | - apt-get update -y -qq - apt-get install -y -qq software-properties-common - add-apt-repository ppa:git-core/ppa - apt-get update -y -qq - apt-get install -y -qq ninja-build make gcc-multilib g++-multilib libssl-dev wget openjdk-8-jdk zip maven unixodbc-dev libc6-dev-i386 lib32readline6-dev libssl-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip build-essential checkinstall libffi-dev curl libz-dev openssh-client - - - name: Install Git 2.18.5 - if: ${{ matrix.duckdb_arch == 'linux_amd64' || matrix.duckdb_arch == 'linux_arm64' }} - run: | - wget https://github.com/git/git/archive/refs/tags/v2.18.5.tar.gz - tar xvf v2.18.5.tar.gz - cd git-2.18.5 - make - make prefix=/usr install - git --version - - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - submodules: 'true' - - - name: Checkout DuckDB to version - run: | - cd duckdb - git checkout ${{ inputs.duckdb_version }} - - - name: Setup ManyLinux2014 - if: ${{ matrix.duckdb_arch == 'linux_amd64_gcc4' }} - run: | - ./duckdb/scripts/setup_manylinux2014.sh general aws-cli ccache ssh python_alias openssl - - - name: Setup Ccache - uses: hendrikmuhs/ccache-action@v1.2.11 # Note: pinned due to GLIBC incompatibility in later releases - continue-on-error: true - with: - key: ${{ github.job }}-${{ matrix.duckdb_arch }} - - - name: Setup Ubuntu - if: ${{ matrix.duckdb_arch == 'linux_amd64' || matrix.duckdb_arch == 'linux_arm64' }} - uses: ./duckdb/.github/actions/ubuntu_18_setup - with: - aarch64_cross_compile: ${{ matrix.duckdb_arch == 'linux_arm64' && 1 }} - - - name: Setup vcpkg - uses: lukka/run-vcpkg@v11.1 - with: - vcpkgGitCommitId: ${{ inputs.vcpkg_commit }} - - - name: Build extension - env: - GEN: ninja - CC: ${{ matrix.duckdb_arch == 'linux_arm64' && 'aarch64-linux-gnu-gcc' || '' }} - CXX: ${{ matrix.duckdb_arch == 'linux_arm64' && 'aarch64-linux-gnu-g++' || '' }} - DUCKDB_PLATFORM: ${{ matrix.duckdb_arch }} - run: | - make release - - - name: Test extension - if: ${{ matrix.duckdb_arch != 'linux_arm64'}} - run: | - make test - - - uses: actions/upload-artifact@v3 - with: - if-no-files-found: error - name: ${{ inputs.extension_name }}-${{ inputs.duckdb_version }}-extension-${{matrix.duckdb_arch}}${{inputs.artifact_postfix}} - path: | - build/release/extension/${{ inputs.extension_name }}/${{ inputs.extension_name }}.duckdb_extension - - macos: - name: MacOS - runs-on: macos-latest - needs: generate_matrix - if: ${{ needs.generate_matrix.outputs.osx_matrix != '{}' && needs.generate_matrix.outputs.osx_matrix != '' }} - strategy: - matrix: ${{fromJson(needs.generate_matrix.outputs.osx_matrix)}} - env: - VCPKG_TOOLCHAIN_PATH: ${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake - VCPKG_TARGET_TRIPLET: ${{ matrix.vcpkg_triplet }} - OSX_BUILD_ARCH: ${{ matrix.osx_build_arch }} - GEN: Ninja - BUILD_SHELL: ${{ inputs.build_duckdb_shell && '1' || '0' }} - DUCKDB_PLATFORM: ${{ matrix.duckdb_arch }} - - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - submodules: 'true' - - - name: Install Ninja - run: | - brew install ninja - - - name: Setup Ccache - uses: hendrikmuhs/ccache-action@main - continue-on-error: true - with: - key: ${{ github.job }}-${{ matrix.duckdb_arch }} - - - uses: actions/setup-python@v5 - with: - python-version: '3.11' - - - name: Checkout DuckDB to version - run: | - cd duckdb - git checkout ${{ inputs.duckdb_version }} - - - name: Setup vcpkg - uses: lukka/run-vcpkg@v11.1 - with: - vcpkgGitCommitId: ${{ inputs.vcpkg_commit }} - - - name: Build extension - shell: bash - env: - DUCKDB_PLATFORM: ${{ matrix.duckdb_arch }} - run: | - make release - - - name: Test Extension - if: ${{ matrix.osx_build_arch == 'x86_64'}} - shell: bash - run: | - make test - - - uses: actions/upload-artifact@v3 - with: - if-no-files-found: error - name: ${{ inputs.extension_name }}-${{ inputs.duckdb_version }}-extension-${{matrix.duckdb_arch}}${{inputs.artifact_postfix}} - path: | - build/release/extension/${{ inputs.extension_name }}/${{ inputs.extension_name }}.duckdb_extension - - windows: - name: Windows - runs-on: windows-latest - needs: generate_matrix - if: ${{ needs.generate_matrix.outputs.windows_matrix != '{}' && needs.generate_matrix.outputs.windows_matrix != '' }} - strategy: - matrix: ${{fromJson(needs.generate_matrix.outputs.windows_matrix)}} - env: - GEN: Ninja - VCPKG_TOOLCHAIN_PATH: ${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake - VCPKG_TARGET_TRIPLET: ${{ matrix.vcpkg_triplet }} - BUILD_SHELL: ${{ inputs.build_duckdb_shell && '1' || '0' }} - DUCKDB_PLATFORM: ${{ matrix.duckdb_arch }} - CC: ${{ matrix.duckdb_arch == 'windows_amd64_rtools' && 'gcc' || '' }} - CXX: ${{ matrix.duckdb_arch == 'windows_amd64_rtools' && 'g++' || '' }} - - steps: - - name: Keep \n line endings - shell: bash - run: | - git config --global core.autocrlf false - git config --global core.eol lf - - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - submodules: 'true' - - - uses: actions/setup-python@v5 - with: - python-version: '3.11' - - - uses: r-lib/actions/setup-r@v2 - if: matrix.duckdb_arch == 'windows_amd64_rtools' - with: - r-version: 'devel' - update-rtools: true - rtools-version: '42' # linker bug in 43 - - - name: Checkout DuckDB to version - run: | - cd duckdb - git checkout ${{ inputs.duckdb_version }} - - - name: Setup Ccache - uses: hendrikmuhs/ccache-action@main - continue-on-error: true - with: - key: ${{ github.job }}-${{ matrix.duckdb_arch }} - - - name: Setup vcpkg - uses: lukka/run-vcpkg@v11.1 - with: - vcpkgGitCommitId: ${{ inputs.vcpkg_commit }} - - - name: Fix for MSVC issue - shell: bash - env: - OVERLAY_TRIPLET_SRC: ${{ github.workspace }}/vcpkg/triplets/community/x64-windows-static-md.cmake - OVERLAY_TRIPLET_DST: ${{ github.workspace }}/overlay_triplets/x64-windows-static-md.cmake - run: | - mkdir overlay_triplets - cp $OVERLAY_TRIPLET_SRC $OVERLAY_TRIPLET_DST - echo "set(VCPKG_PLATFORM_TOOLSET_VERSION "14.39")" >> $OVERLAY_TRIPLET_DST - - - name: Build & test extension - env: - VCPKG_OVERLAY_TRIPLETS: "${{ github.workspace }}/overlay_triplets" - DUCKDB_PLATFORM: ${{ matrix.duckdb_arch }} - DUCKDB_PLATFORM_RTOOLS: ${{ matrix.duckdb_arch == 'windows_amd64_rtools' && 1 || 0 }} - run: | - make test_release - - - uses: actions/upload-artifact@v3 - with: - if-no-files-found: error - name: ${{ inputs.extension_name }}-${{ inputs.duckdb_version }}-extension-${{matrix.duckdb_arch}}${{inputs.artifact_postfix}} - path: | - build/release/extension/${{ inputs.extension_name }}/${{ inputs.extension_name }}.duckdb_extension - - wasm: - name: DuckDB-Wasm - runs-on: ubuntu-latest - needs: generate_matrix - if: ${{ needs.generate_matrix.outputs.wasm_matrix != '{}' && needs.generate_matrix.outputs.wasm_matrix != '' }} - strategy: - matrix: ${{fromJson(needs.generate_matrix.outputs.wasm_matrix)}} - env: - VCPKG_TARGET_TRIPLET: ${{ matrix.vcpkg_triplet }} - VCPKG_TOOLCHAIN_PATH: ${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake - GEN: Ninja - DUCKDB_PLATFORM: ${{ matrix.duckdb_arch }} - - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - submodules: 'true' - - - name: Checkout DuckDB to version - run: | - cd duckdb - git checkout ${{ inputs.duckdb_version }} - - - uses: mymindstorm/setup-emsdk@v13 - with: - version: 'latest' - - - name: Setup vcpkg - uses: lukka/run-vcpkg@v11.1 - with: - vcpkgGitCommitId: ${{ inputs.vcpkg_commit }} - - - name: Setup Ccache - uses: hendrikmuhs/ccache-action@main - continue-on-error: true - with: - key: ${{ github.job }}-${{ matrix.duckdb_arch }} - - - name: Build Wasm module - run: | - make ${{ matrix.duckdb_arch }} - - - uses: actions/upload-artifact@v3 - with: - if-no-files-found: error - name: ${{ inputs.extension_name }}-${{ inputs.duckdb_version }}-extension-${{matrix.duckdb_arch}}${{inputs.artifact_postfix}} - path: | - build/${{ matrix.duckdb_arch }}/extension/${{ inputs.extension_name }}/${{ inputs.extension_name }}.duckdb_extension.wasm diff --git a/CMakeLists.txt b/CMakeLists.txt index 95792382..785ff80d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,6 +54,7 @@ if(NOT EXISTS ${CMAKE_BINARY_DIR}/deps) -DVCPKG_MANIFEST_DIR='${VCPKG_MANIFEST_DIR}' -DVCPKG_INSTALLED_DIR='${CMAKE_BINARY_DIR}/vcpkg_installed' -DCMAKE_TOOLCHAIN_FILE='${CMAKE_TOOLCHAIN_FILE}' + -DANDROID_ABI='${ANDROID_ABI}' -DVCPKG_TARGET_TRIPLET='${VCPKG_TARGET_TRIPLET}' -S ${CMAKE_CURRENT_SOURCE_DIR}/deps -B ${CMAKE_BINARY_DIR}/deps RESULT_VARIABLE DEPENDENCIES_GENERATE_RESULT) diff --git a/Makefile b/Makefile index 67ee613c..eac88fa2 100644 --- a/Makefile +++ b/Makefile @@ -158,7 +158,7 @@ clean: # WASM config VCPKG_EMSDK_FLAGS=-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$(EMSDK)/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -WASM_COMPILE_TIME_COMMON_FLAGS=-DWASM_LOADABLE_EXTENSIONS=1 -DBUILD_EXTENSIONS_ONLY=1 -DSKIP_EXTENSIONS="parquet;json" $(VCPKG_EMSDK_FLAGS) +WASM_COMPILE_TIME_COMMON_FLAGS=-DWASM_LOADABLE_EXTENSIONS=1 -DBUILD_EXTENSIONS_ONLY=1 -DSKIP_EXTENSIONS="parquet;json" ${TOOLCHAIN_FLAGS} $(VCPKG_EMSDK_FLAGS) WASM_CXX_MVP_FLAGS= WASM_CXX_EH_FLAGS=$(WASM_CXX_MVP_FLAGS) -fwasm-exceptions -DWEBDB_FAST_EXCEPTIONS=1 WASM_CXX_THREADS_FLAGS=$(WASM_COMPILE_TIME_EH_FLAGS) -DWITH_WASM_THREADS=1 -DWITH_WASM_SIMD=1 -DWITH_WASM_BULK_MEMORY=1 -pthread diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 366abc03..b362fc9d 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -37,49 +37,53 @@ if (EMSCRIPTEN) endif() # ZLIB -ExternalProject_Add( - ZLIB - URL ${CMAKE_CURRENT_SOURCE_DIR}/vendor/zlib1213.zip - CONFIGURE_HANDLED_BY_BUILD TRUE - CMAKE_ARGS - -DCMAKE_INSTALL_PREFIX:PATH=${LOCAL_INSTALL_DIR} - -DCMAKE_PREFIX_PATH=${LOCAL_INSTALL_DIR} - -DCMAKE_MODULE_PATH=${LOCAL_INSTALL_DIR}/lib/cmake - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_PACKED} - -DCMAKE_POSITION_INDEPENDENT_CODE=ON - -DBUILD_SHARED_LIBS=OFF - ${CMAKE_FLAGS_POINTER_SIZE} +#ExternalProject_Add( +# ZLIB +# URL ${CMAKE_CURRENT_SOURCE_DIR}/vendor/zlib1213.zip +# CONFIGURE_HANDLED_BY_BUILD TRUE +# PATCH_COMMAND patch -p1 < "${CMAKE_CURRENT_LIST_DIR}/patches/zlib${PATCH_NAME_ENDING}.patch" +# CMAKE_ARGS +# -DCMAKE_INSTALL_PREFIX:PATH=${LOCAL_INSTALL_DIR} +# -DCMAKE_PREFIX_PATH=${LOCAL_INSTALL_DIR} +# -DCMAKE_MODULE_PATH=${LOCAL_INSTALL_DIR}/lib/cmake +# -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} +# -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_PACKED} +# -DCMAKE_POSITION_INDEPENDENT_CODE=ON +# -DBUILD_SHARED_LIBS=OFF +# ${CMAKE_FLAGS_POINTER_SIZE} +# -DANDROID_ABI=${ANDROID_ABI} # vcpkg options - -DVCPKG_MANIFEST_DIR='${VCPKG_MANIFEST_DIR}' - -DVCPKG_INSTALLED_DIR='${VCPKG_INSTALLED_DIR}' - -DCMAKE_TOOLCHAIN_FILE='${CMAKE_TOOLCHAIN_FILE}' - -DVCPKG_TARGET_TRIPLET='${VCPKG_TARGET_TRIPLET}' -) +# -DVCPKG_MANIFEST_DIR='${VCPKG_MANIFEST_DIR}' +# -DVCPKG_INSTALLED_DIR='${VCPKG_INSTALLED_DIR}' +# -DCMAKE_TOOLCHAIN_FILE='${CMAKE_TOOLCHAIN_FILE}' +# -DVCPKG_TARGET_TRIPLET='${VCPKG_TARGET_TRIPLET}' +#) # Use the system sqlite binary on Emscripten, iOS and Android if (EMSCRIPTEN OR IOS OR ANDROID) find_program(EXE_SQLITE3 sqlite3) endif() -set(GDAL_DEPENDENCIES ${GDAL_DEPENDENCIES} ZLIB) +set(GDAL_DEPENDENCIES ${GDAL_DEPENDENCIES}) # SQLite3 ExternalProject_Add( SQLITE3 - DEPENDS ZLIB URL ${CMAKE_CURRENT_SOURCE_DIR}/vendor/sqlite3 CONFIGURE_HANDLED_BY_BUILD TRUE CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${LOCAL_INSTALL_DIR} + -DCMAKE_PREFIX_PATH=${LOCAL_INSTALL_DIR} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_PACKED} -DCMAKE_POSITION_INDEPENDENT_CODE=ON ${CMAKE_FLAGS_POINTER_SIZE} + -DANDROID_ABI=${ANDROID_ABI} # vcpkg options -DVCPKG_MANIFEST_DIR='${VCPKG_MANIFEST_DIR}' -DVCPKG_INSTALLED_DIR='${VCPKG_INSTALLED_DIR}' -DCMAKE_TOOLCHAIN_FILE='${CMAKE_TOOLCHAIN_FILE}' -DVCPKG_TARGET_TRIPLET='${VCPKG_TARGET_TRIPLET}' + -DZLIB_USE_STATIC_LIBS=ON # Propagate to FindZLIB.cmake ) set(GDAL_DEPENDENCIES ${GDAL_DEPENDENCIES} SQLITE3) @@ -87,7 +91,6 @@ if(SPATIAL_USE_NETWORK) # CURL ExternalProject_Add( CURL - DEPENDS ZLIB URL ${CMAKE_CURRENT_SOURCE_DIR}/vendor/curl-7.87.0.zip CONFIGURE_HANDLED_BY_BUILD TRUE CMAKE_ARGS @@ -110,6 +113,7 @@ ExternalProject_Add( -DCURL_USE_LIBSSH=OFF -DOPENSSL_USE_STATIC_LIBS=ON # Propagate to FindOpenSSL.cmake -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR} + -DZLIB_USE_STATIC_LIBS=ON # Propagate to FindZLIB.cmake ) set(GDAL_DEPENDENCIES ${GDAL_DEPENDENCIES} CURL) endif() @@ -118,7 +122,7 @@ endif() # PROJ ExternalProject_Add( PROJ - DEPENDS SQLITE3 ZLIB + DEPENDS SQLITE3 URL ${CMAKE_CURRENT_SOURCE_DIR}/vendor/proj-9.1.1.zip CONFIGURE_HANDLED_BY_BUILD TRUE PATCH_COMMAND patch -p1 < "${CMAKE_CURRENT_LIST_DIR}/patches/proj${PATCH_NAME_ENDING}.patch" @@ -131,6 +135,7 @@ ExternalProject_Add( -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ${CMAKE_PROJ_FLAGS} ${CMAKE_FLAGS_POINTER_SIZE} + -DANDROID_ABI=${ANDROID_ABI} # vcpkg options -DVCPKG_MANIFEST_DIR='${VCPKG_MANIFEST_DIR}' -DVCPKG_INSTALLED_DIR='${VCPKG_INSTALLED_DIR}' @@ -142,6 +147,10 @@ ExternalProject_Add( -DBUILD_TESTING=OFF -DENABLE_CURL=OFF -DENABLE_TIFF=OFF + -DSQLITE3_VERSION=3.40.1 + -DSQLITE3_LIBRARY=${LOCAL_INSTALL_DIR}/lib/libsqlite3.a + -DSQLITE3_INCLUDE_DIR=${LOCAL_INSTALL_DIR}/include + -DZLIB_USE_STATIC_LIBS=ON # Propagate to FindZLIB.cmake ) set(GDAL_DEPENDENCIES ${GDAL_DEPENDENCIES} PROJ) @@ -159,6 +168,7 @@ ExternalProject_Add( -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_PACKED} -DCMAKE_POSITION_INDEPENDENT_CODE=ON ${CMAKE_FLAGS_POINTER_SIZE} + -DANDROID_ABI=${ANDROID_ABI} # vcpkg options -DVCPKG_MANIFEST_DIR='${VCPKG_MANIFEST_DIR}' -DVCPKG_INSTALLED_DIR='${VCPKG_INSTALLED_DIR}' @@ -187,6 +197,7 @@ ExternalProject_Add( -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_PACKED} -DCMAKE_POSITION_INDEPENDENT_CODE=ON ${CMAKE_FLAGS_POINTER_SIZE} + -DANDROID_ABI=${ANDROID_ABI} # vcpkg options -DVCPKG_MANIFEST_DIR='${VCPKG_MANIFEST_DIR}' -DVCPKG_INSTALLED_DIR='${VCPKG_INSTALLED_DIR}' @@ -214,6 +225,7 @@ ExternalProject_Add( -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_PACKED} -DCMAKE_POSITION_INDEPENDENT_CODE=ON ${CMAKE_FLAGS_POINTER_SIZE} + -DANDROID_ABI=${ANDROID_ABI} # vcpkg options -DVCPKG_MANIFEST_DIR='${VCPKG_MANIFEST_DIR}' -DVCPKG_INSTALLED_DIR='${VCPKG_INSTALLED_DIR}' @@ -225,6 +237,10 @@ ExternalProject_Add( -DBUILD_DOCUMENTATION=OFF ) +if(${CMAKE_SIZEOF_VOID_P} LESS 8) + set(BUILD_WITHOUT_64BIT_OFFSET 1) +endif() + # GDAL ExternalProject_Add( GDAL @@ -242,6 +258,7 @@ ExternalProject_Add( -DCMAKE_MODULE_PATH=${LOCAL_INSTALL_DIR}/lib/cmake -DCMAKE_FIND_ROOT_PATH=${LOCAL_INSTALL_DIR} ${CMAKE_FLAGS_POINTER_SIZE} + -DANDROID_ABI=${ANDROID_ABI} # vcpkg options -DVCPKG_MANIFEST_DIR='${VCPKG_MANIFEST_DIR}' -DVCPKG_INSTALLED_DIR='${VCPKG_INSTALLED_DIR}' @@ -342,6 +359,12 @@ ExternalProject_Add( # Remove bindings -DBUILD_PYTHON_BINDINGS=OFF + + # Zlib + -DZLIB_USE_STATIC_LIBS=ON # Propagate to FindZLIB.cmake + + # are we building for 32 bit? + -DBUILD_WITHOUT_64BIT_OFFSET=${BUILD_WITHOUT_64BIT_OFFSET} ) diff --git a/spatial/src/spatial/gdal/file_handler.cpp b/spatial/src/spatial/gdal/file_handler.cpp index cb50144d..2e80598a 100644 --- a/spatial/src/spatial/gdal/file_handler.cpp +++ b/spatial/src/spatial/gdal/file_handler.cpp @@ -385,10 +385,9 @@ string GDALClientContextState::GetPrefix(const string &value) const { } GDALClientContextState &GDALClientContextState::GetOrCreate(ClientContext &context) { - if (!context.registered_state["gdal"]) { - context.registered_state["gdal"] = make_uniq(context); - } - return *dynamic_cast(context.registered_state["gdal"].get()); + auto &manager = *context.registered_state; + auto state = manager.GetOrCreate("gdal", context); + return state->Cast(); } } // namespace gdal diff --git a/vcpkg.json b/vcpkg.json index 0fa0cf26..415b4fe1 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -1,5 +1,6 @@ { "dependencies": [ - "openssl" + "openssl", + "zlib" ] }