Skip to content

Commit 9da8c54

Browse files
authored
Selective builder
1 parent 8bfec6b commit 9da8c54

File tree

1 file changed

+49
-36
lines changed

1 file changed

+49
-36
lines changed

chsql/CMakeLists.txt

Lines changed: 49 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 3.12)
22

33
set(CMAKE_CXX_STANDARD 17)
44

5-
# Set extension name here
65
set(TARGET_NAME chsql)
76

87
project(${TARGET_NAME})
@@ -11,36 +10,38 @@ project(${TARGET_NAME})
1110
# set(ARCH_FLAGS "-march=armv8-a")
1211
#endif()
1312

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)
3838
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()
4445
4546
# Find OpenSSL package
4647
find_package(OpenSSL REQUIRED)
@@ -52,27 +53,39 @@ endif()
5253
set(EXTENSION_NAME ${TARGET_NAME}_extension)
5354
set(LOADABLE_EXTENSION_NAME ${TARGET_NAME}_loadable_extension)
5455
55-
include_directories(
56+
set(EXTENSION_INCLUDES
5657
./src/include
5758
./src
5859
${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
6160
)
6261
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+
6368
# Update extension sources to include new file
6469
set(EXTENSION_SOURCES
6570
src/chsql_extension.cpp
6671
src/duck_flock.cpp
67-
src/clickhouse_scan.cpp
6872
)
6973
74+
if(NOT EMSCRIPTEN OR NOT MINGW)
75+
list(APPEND EXTENSION_SOURCES src/clickhouse_scan.cpp)
76+
endif()
77+
7078
build_static_extension(${TARGET_NAME} ${EXTENSION_SOURCES})
7179
build_loadable_extension(${TARGET_NAME} " " ${EXTENSION_SOURCES})
7280
7381
# 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()
7689
7790
# Install targets
7891
install(

0 commit comments

Comments
 (0)