diff options
Diffstat (limited to 'vcpkg/ports/duckdb/portfile.cmake')
| -rw-r--r-- | vcpkg/ports/duckdb/portfile.cmake | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/vcpkg/ports/duckdb/portfile.cmake b/vcpkg/ports/duckdb/portfile.cmake new file mode 100644 index 0000000..ea17441 --- /dev/null +++ b/vcpkg/ports/duckdb/portfile.cmake @@ -0,0 +1,167 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO duckdb/duckdb + REF v${VERSION} + SHA512 4965071888bfd791ddc81ed9eb53cedcd0248b159e6db3492bf5d17557b0f7516aed0840408ff46a06e9a0989a42d7b2a7452fdaf619c8ca44de43e5d1c338b8 + HEAD_REF main + PATCHES + library-linkage.diff +) +# Remove vendored dependencies which are optional or not properly namespaced +file(REMOVE_RECURSE + "${SOURCE_PATH}/extension/third_party/icu" + "${SOURCE_PATH}/third_party/catch" + "${SOURCE_PATH}/third_party/imdb" + "${SOURCE_PATH}/third_party/snowball" + "${SOURCE_PATH}/third_party/tpce-tool" +) + +set(extension_dirs "") + +if("excel" IN_LIST FEATURES) + vcpkg_from_github( + OUT_SOURCE_PATH DUCKDB_EXCEL_SOURCE_PATH + REPO duckdb/duckdb-excel + REF 8504be9ec8183e4082141f9359b53a64d3a440b7 + SHA512 295bfe67c2902c09b584bee623dee7db69aad272a00e6bd4038ec65e2d8a977d1ace7261af8f67863c2fae709acc414e290e40f0bad43bae679c0a8639a0d6b5 + HEAD_REF main + PATCHES + library-linkage-excel.diff + ) + list(APPEND extension_dirs "${DUCKDB_EXCEL_SOURCE_PATH}") + file(WRITE "${SOURCE_PATH}/.github/config/extensions/excel.cmake" " +duckdb_extension_load(excel + SOURCE_DIR \"${DUCKDB_EXCEL_SOURCE_PATH}\" + INCLUDE_DIR \"${DUCKDB_EXCEL_SOURCE_PATH}/src/excel/include\" +) +") +endif() + +if("httpfs" IN_LIST FEATURES) + vcpkg_from_github( + OUT_SOURCE_PATH DUCKDB_HTTPFS_SOURCE_PATH + REPO duckdb/duckdb_httpfs + REF 0989823e43554e8a00b31959a853e29ab9bd07f9 + SHA512 71461d522aa5338df81931f937ed538b453b274d22e91ad7e0f1a92e4437a29cc869a0f5be3bd5a9abf0045dfd4681a787923ee32374be471483909c0a60a21f + HEAD_REF main + PATCHES + library-linkage-httpfs.diff + ) + list(APPEND extension_dirs "${DUCKDB_HTTPFS_SOURCE_PATH}") + file(WRITE "${SOURCE_PATH}/.github/config/extensions/httpfs.cmake" " +duckdb_extension_load(httpfs + SOURCE_DIR \"${DUCKDB_HTTPFS_SOURCE_PATH}\" + INCLUDE_DIR \"${DUCKDB_HTTPFS_SOURCE_PATH}/extension/httpfs/include\" +) +") +endif() + +if("iceberg" IN_LIST FEATURES) + vcpkg_from_github( + OUT_SOURCE_PATH DUCKDB_ICEBERG_SOURCE_PATH + REPO duckdb/duckdb-iceberg + REF 6b636bff44aeeccf6f6d5b54de6edf280274beea + SHA512 f8ce593117dd5423fd5445b6fa6c1f3b11ee7c8a2fdb988c3c0208a59d5ed980b941116866f7cb1d0597662e98c03687da071cbc5617c71086eb112621e31748 + HEAD_REF main + ) + list(APPEND extension_dirs "${DUCKDB_ICEBERG_SOURCE_PATH}") + file(WRITE "${SOURCE_PATH}/.github/config/extensions/iceberg.cmake" " +duckdb_extension_load(iceberg + SOURCE_DIR \"${DUCKDB_ICEBERG_SOURCE_PATH}\" + INCLUDE_DIR \"${DUCKDB_ICEBERG_SOURCE_PATH}/src/include\" +) +") +endif() + +set(BUILD_EXTENSIONS "${FEATURES}") +list(FILTER BUILD_EXTENSIONS INCLUDE REGEX "^(autocomplete|excel|httpfs|icu|json|tpcds|tpch)\$") + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" EXTENSION_STATIC_BUILD) + +if(VCPKG_CROSSCOMPILING AND NOT DEFINED DUCKDB_EXPLICIT_PLATFORM) + set(DUCKDB_EXPLICIT_PLATFORM "") + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(DUCKDB_EXPLICIT_PLATFORM "arm64") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(DUCKDB_EXPLICIT_PLATFORM "amd64") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(DUCKDB_EXPLICIT_PLATFORM "i686") + endif() + if(DUCKDB_EXPLICIT_PLATFORM) + if(VCPKG_TARGET_IS_ANDROID) + string(APPEND DUCKDB_EXPLICIT_PLATFORM "-linux_android") + elseif(VCPKG_TARGET_IS_FREEBSD) + string(APPEND DUCKDB_EXPLICIT_PLATFORM "-freebsd") + elseif(VCPKG_TARGET_IS_LINUX) + string(APPEND DUCKDB_EXPLICIT_PLATFORM "-linux") + elseif(VCPKG_TARGET_IS_OSX) + string(APPEND DUCKDB_EXPLICIT_PLATFORM "-osx") + elseif(VCPKG_TARGET_IS_WINDOWS) + string(APPEND DUCKDB_EXPLICIT_PLATFORM "-windows") + if(VCPKG_TARGET_IS_MINGW) + string(APPEND DUCKDB_EXPLICIT_PLATFORM "_mingw") + endif() + elseif() + set(DUCKDB_EXPLICIT_PLATFORM "") # unknown. override in triplet file. + endif() + endif() +endif() + +vcpkg_cmake_configure( + SOURCE_PATH ${SOURCE_PATH} + OPTIONS + -DOVERRIDE_GIT_DESCRIBE=v${VERSION}-0-g0123456789 + -DDUCKDB_EXPLICIT_PLATFORM=${DUCKDB_EXPLICIT_PLATFORM} + -DDUCKDB_EXPLICIT_VERSION=v${VERSION} + "-DBUILD_EXTENSIONS=${BUILD_EXTENSIONS}" + -DBUILD_SHELL=FALSE + -DBUILD_UNITTESTS=OFF + -DCMAKE_CXX_STANDARD=17 + -DCMAKE_JOB_POOL_LINK=console # Serialize linking to avoid OOM + -DENABLE_EXTENSION_AUTOINSTALL=1 + -DENABLE_EXTENSION_AUTOLOADING=1 + -DENABLE_SANITIZER=OFF + -DENABLE_THREAD_SANITIZER=OFF + -DENABLE_UBSAN=OFF + "-DEXTENSION_CONFIG_BASE_DIR=${SOURCE_PATH}/OUT_OF_TREE" + "-DEXTENSION_STATIC_BUILD=${EXTENSION_STATIC_BUILD}" + "-DINSTALL_CMAKE_DIR:STRING=share/${PORT}" + -DWITH_INTERNAL_ICU=OFF +) +vcpkg_cmake_install() +vcpkg_cmake_config_fixup() + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + foreach(path IN ITEMS duckdb.h duckdb/common/winapi.hpp) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/${path}" "#ifdef DUCKDB_STATIC_BUILD" "#if 1") + endforeach() +endif() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") +# empty dirs +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/duckdb/main/capi/header_generation") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/duckdb/storage/serialization") + +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") + +set(third_party_licenses "") +file(COPY_FILE "${SOURCE_PATH}/third_party/thrift/thrift/LICENSE" "${SOURCE_PATH}/third_party/thrift/LICENSE") +file(GLOB third_party_files "${SOURCE_PATH}/third_party/*") +foreach(maybe_directory IN LISTS extension_dirs third_party_files) + if(IS_DIRECTORY "${maybe_directory}") + cmake_path(GET maybe_directory FILENAME package) + set(license_file "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/## ${package} license") + file(COPY_FILE "${maybe_directory}/LICENSE" "${license_file}") + list(APPEND third_party_licenses "${license_file}") + endif() +endforeach() +vcpkg_install_copyright( + COMMENT [[ +Duckdb contains copies of many third-party packages which are subject to +separate license terms. +]] + FILE_LIST + "${SOURCE_PATH}/LICENSE" + ${third_party_licenses} +) |