@@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 3.12)
2
2
3
3
set (CMAKE_CXX_STANDARD 17)
4
4
5
- # Set extension name here
6
5
set (TARGET_NAME chsql)
7
6
8
7
project (${TARGET_NAME} )
@@ -11,36 +10,38 @@ project(${TARGET_NAME})
11
10
# set(ARCH_FLAGS "-march=armv8-a")
12
11
#endif()
13
12
14
- include (ExternalProject)
15
- ExternalProject_Add(clickhouse_cpp_external
16
- SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /../contribs/clickhouse-cpp
17
- CMAKE_ARGS
18
- -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
19
- -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}
20
- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
21
- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
22
- "-DCMAKE_CXX_FLAGS=-fPIC ${ARCH_FLAGS} "
23
- -DCMAKE_C_FLAGS=${ARCH_FLAGS}
24
- INSTALL_COMMAND "" # Skip install step
25
- BUILD_BYPRODUCTS
26
- ${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix /src/clickhouse_cpp_external-build /clickhouse/libclickhouse-cpp-lib.a
27
- ${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix /src/clickhouse_cpp_external-build /contrib/absl/absl/libabsl_int128.a
28
- ${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix /src/clickhouse_cpp_external-build /contrib/cityhash/cityhash/libcityhash.a
29
- ${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix /src/clickhouse_cpp_external-build /contrib/lz4/lz4/liblz4.a
30
- ${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix /src/clickhouse_cpp_external-build /contrib/zstd/zstd/libzstdstatic.a
31
- )
32
- add_library (clickhouse_cpp_lib STATIC IMPORTED )
33
- set_target_properties (clickhouse_cpp_lib PROPERTIES
34
- IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix /src/clickhouse_cpp_external-build /clickhouse/libclickhouse-cpp-lib.a
35
- INTERFACE_LINK_LIBRARIES "${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix/src/clickhouse_cpp_external-build/contrib/absl/absl/libabsl_int128.a;${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix/src/clickhouse_cpp_external-build/contrib/cityhash/cityhash/libcityhash.a;${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix/src/clickhouse_cpp_external-build/contrib/lz4/lz4/liblz4.a;${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix/src/clickhouse_cpp_external-build/contrib/zstd/zstd/libzstdstatic.a"
36
- )
37
- add_dependencies (clickhouse_cpp_lib clickhouse_cpp_external)
13
+ if (NOT EMSCRIPTEN OR NOT MINGW)
14
+ include (ExternalProject)
15
+ ExternalProject_Add(clickhouse_cpp_external
16
+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /../contribs/clickhouse-cpp
17
+ CMAKE_ARGS
18
+ -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
19
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}
20
+ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
21
+ -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
22
+ "-DCMAKE_CXX_FLAGS=-fPIC ${ARCH_FLAGS} "
23
+ -DCMAKE_C_FLAGS=${ARCH_FLAGS}
24
+ INSTALL_COMMAND "" # Skip install step
25
+ BUILD_BYPRODUCTS
26
+ ${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix /src/clickhouse_cpp_external-build /clickhouse/libclickhouse-cpp-lib.a
27
+ ${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix /src/clickhouse_cpp_external-build /contrib/absl/absl/libabsl_int128.a
28
+ ${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix /src/clickhouse_cpp_external-build /contrib/cityhash/cityhash/libcityhash.a
29
+ ${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix /src/clickhouse_cpp_external-build /contrib/lz4/lz4/liblz4.a
30
+ ${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix /src/clickhouse_cpp_external-build /contrib/zstd/zstd/libzstdstatic.a
31
+ )
32
+ add_library (clickhouse_cpp_lib STATIC IMPORTED )
33
+ set_target_properties (clickhouse_cpp_lib PROPERTIES
34
+ IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix /src/clickhouse_cpp_external-build /clickhouse/libclickhouse-cpp-lib.a
35
+ INTERFACE_LINK_LIBRARIES "${CMAKE_CURRENT_BINARY_DIR} /clickhouse_cpp_external-prefix/src/clickhouse_cpp_external-build/contrib/absl/absl/libabsl_int128.a;${CMAKE_CURRENT_BINARY_DIR} /clickhouse[...]
36
+ )
37
+ add_dependencies(clickhouse_cpp_lib clickhouse_cpp_external)
38
38
39
- # Configure clickhouse-cpp options
40
- set (CH_CPP_BUILD_SHARED OFF CACHE BOOL "Build shared library" )
41
- set (CH_CPP_BUILD_STATICALY_LINKED_LIB ON CACHE BOOL "Build static library" )
42
- set (CH_CPP_BUILD_ONLY_LIB ON CACHE BOOL "Build only library" )
43
- set (CH_CPP_WITH_OPENSSL ON CACHE BOOL "Use OpenSSL" )
39
+ # Configure clickhouse-cpp options
40
+ set(CH_CPP_BUILD_SHARED OFF CACHE BOOL " Build shared library")
41
+ set(CH_CPP_BUILD_STATICALY_LINKED_LIB ON CACHE BOOL " Build static library")
42
+ set(CH_CPP_BUILD_ONLY_LIB ON CACHE BOOL " Build only library")
43
+ set(CH_CPP_WITH_OPENSSL ON CACHE BOOL " Use OpenSSL")
44
+ endif()
44
45
45
46
# Find OpenSSL package
46
47
find_package(OpenSSL REQUIRED)
@@ -52,27 +53,39 @@ endif()
52
53
set(EXTENSION_NAME ${TARGET_NAME} _extension)
53
54
set(LOADABLE_EXTENSION_NAME ${TARGET_NAME} _loadable_extension)
54
55
55
- include_directories (
56
+ set(EXTENSION_INCLUDES
56
57
./src/include
57
58
./src
58
59
${CMAKE_CURRENT_SOURCE_DIR} /../duckdb/extension/parquet/include
59
- ${CMAKE_CURRENT_SOURCE_DIR} /../contribs/clickhouse-cpp
60
- ${CMAKE_CURRENT_SOURCE_DIR} /../contribs/clickhouse-cpp/contrib/absl
61
60
)
62
61
62
+ if(NOT EMSCRIPTEN OR NOT MINGW)
63
+ list(APPEND EXTENSION_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} /../contribs/clickhouse-cpp ${CMAKE_CURRENT_SOURCE_DIR} /../contribs/clickhouse-cpp/contrib/absl)
64
+ endif()
65
+
66
+ include_directories(EXTENSION_INCLUDES)
67
+
63
68
# Update extension sources to include new file
64
69
set(EXTENSION_SOURCES
65
70
src/chsql_extension.cpp
66
71
src/duck_flock.cpp
67
- src/clickhouse_scan.cpp
68
72
)
69
73
74
+ if(NOT EMSCRIPTEN OR NOT MINGW)
75
+ list(APPEND EXTENSION_SOURCES src/clickhouse_scan.cpp)
76
+ endif()
77
+
70
78
build_static_extension(${TARGET_NAME} ${EXTENSION_SOURCES} )
71
79
build_loadable_extension(${TARGET_NAME} " " ${EXTENSION_SOURCES} )
72
80
73
81
# Link libraries using plain signature
74
- target_link_libraries (${EXTENSION_NAME} OpenSSL::SSL OpenSSL::Crypto clickhouse_cpp_lib)
75
- target_link_libraries (${LOADABLE_EXTENSION_NAME} OpenSSL::SSL OpenSSL::Crypto clickhouse_cpp_lib)
82
+ target_link_libraries(${EXTENSION_NAME} OpenSSL::SSL OpenSSL::Crypto)
83
+ target_link_libraries(${LOADABLE_EXTENSION_NAME} OpenSSL::SSL OpenSSL::Crypto)
84
+
85
+ if(NOT EMSCRIPTEN OR NOT MINGW)
86
+ target_link_libraries(${EXTENSION_NAME} clickhouse_cpp_lib)
87
+ target_link_libraries(${LOADABLE_EXTENSION_NAME} clickhouse_cpp_lib)
88
+ endif()
76
89
77
90
# Install targets
78
91
install(
0 commit comments