-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
57 lines (44 loc) · 1.95 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
cmake_minimum_required(VERSION 2.8.12...3.29)
project(XXhashExtension)
# Core config
set(TARGET_NAME xxhash)
set(LOADABLE_EXTENSION_NAME ${TARGET_NAME}_loadable_extension)
set(GO_EXTENSION_NAME ${TARGET_NAME}_go)
set(GO_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/go)
set(GO_BUILD_DIR ${CMAKE_BINARY_DIR}/extension/${TARGET_NAME}/${GO_EXTENSION_NAME}-prefix/src/${GO_EXTENSION_NAME}-build)
set(LIB ${GO_BUILD_DIR}/${TARGET_NAME}.a)
set(SOURCES src/extension.cpp)
# Configure extension: the minimum CAPI version where the extension still
# compiles should be chosen here
set(CAPI_MAJOR_VERSION 0)
set(CAPI_MINOR_VERSION 0)
set(CAPI_PATCH_VERSION 1)
set(CAPI_VERSION v${CAPI_MAJOR_VERSION}.${CAPI_MINOR_VERSION}.${CAPI_PATCH_VERSION})
# Set the version definitions. These prevent compilation if a function is used
# that is added in a version > CAPI_VERSION
add_definitions(-DDUCKDB_EXTENSION_API_VERSION_MAJOR=${CAPI_MAJOR_VERSION})
add_definitions(-DDUCKDB_EXTENSION_API_VERSION_MINOR=${CAPI_MINOR_VERSION})
add_definitions(-DDUCKDB_EXTENSION_API_VERSION_PATCH=${CAPI_PATCH_VERSION})
add_definitions(-DDUCKDB_EXTENSION_NAME=${TARGET_NAME})
include(ExternalProject)
ExternalProject_Add(
${GO_EXTENSION_NAME}
SOURCE_DIR ${GO_SRC}
CONFIGURE_COMMAND ""
UPDATE_COMMAND ""
BUILD_COMMAND ${GO_SRC}/build.sh "${GO_SRC}/" "${CMAKE_SOURCE_DIR}/src/include/"
BUILD_BYPRODUCTS "${LIB}"
INSTALL_COMMAND ""
LOG_BUILD ON)
include_directories(${GO_BUILD_DIR})
build_loadable_extension_capi(${TARGET_NAME} ${CAPI_VERSION} ${SOURCES})
#build_static_extension(${TARGET_NAME} ${SOURCES})
#add_library(libduckdb STATIC IMPORTED)
#set_target_properties(libduckdb PROPERTIES IMPORTED_LOCATION "${CMAKE_BINARY_DIR}/src/libduckdb_static.a")
#set_target_properties(libduckdb PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/src/include")
target_link_libraries(
${LOADABLE_EXTENSION_NAME}
"${LIB}"
duckdb_static
)
add_dependencies(${LOADABLE_EXTENSION_NAME} ${GO_EXTENSION_NAME})