mirror of https://github.com/microsoft/vcpkg.git
167 lines
6.4 KiB
CMake
167 lines
6.4 KiB
CMake
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_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 copyies of many third-party packages which are subject to
|
|
separate license terms.
|
|
]]
|
|
FILE_LIST
|
|
"${SOURCE_PATH}/LICENSE"
|
|
${third_party_licenses}
|
|
)
|