Skip to content

Commit 40033a6

Browse files
Require built LibScyllaDB/LibCassandra (removed from source building)
Signed-off-by: Dusan Malusev <[email protected]>
1 parent 7686fd7 commit 40033a6

12 files changed

+1549
-675
lines changed

Diff for: CMakeLists.txt

+46-35
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
cmake_minimum_required(VERSION 3.24)
22
project(php-ext-scylladb LANGUAGES C CXX)
33
add_library(ext_scylladb SHARED)
4+
cmake_policy(SET CMP0079 NEW)
45

56
# if build type is not set, default to debug
6-
if (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "")
7+
if(NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "")
78
set(CMAKE_BUILD_TYPE "Debug")
8-
endif ()
9+
endif()
910

1011
include(GNUInstallDirs)
1112
include(CheckSymbolExists)
@@ -33,34 +34,45 @@ option(PHP_SCYLLADB_ENABLE_COVERAGE "Enable coverage" OFF)
3334
option(PHP_SCYLLADB_OPTIMISE_FOR_CURRENT_MACHINE "Optimise for current machine" OFF)
3435

3536
# PHP Options
36-
3737
set(CUSTOM_PHP_CONFIG "" CACHE STRING "Custom PHP config path")
3838
set(PHP_VERSION_FOR_PHP_CONFIG "8.3" CACHE STRING "PHP version")
3939

4040
option(PHP_DEBUG_FOR_PHP_CONFIG "Debug or Release" ON)
4141
option(PHP_THREAD_SAFE_FOR_PHP_CONFIG "ZTS(zts) or NTS(nts)" OFF)
4242

43-
option(PHP_SCYLLADB_LIBUV_STATIC "Statically link libuv" OFF)
44-
option(PHP_SCYLLADB_LIBUV_FROM_SRC "Build LibUV from Source" OFF)
43+
if(CMAKE_HOST_APPLE)
44+
option(PHP_SCYLLADB_LIBUV_STATIC "Statically link libuv" ON)
45+
else()
46+
option(PHP_SCYLLADB_LIBUV_STATIC "Statically link libuv" OFF)
47+
endif()
48+
49+
option(PHP_SCYLLADB_LIBUV_FROM_SRC "Build LibUV from Source" ON)
4550

46-
option(PHP_SCYLLADB_LIBSCYLLADB_STATIC "Statically link LibScyllaDB" OFF)
47-
option(PHP_SCYLLADB_LIBSCYLLADB_FROM_SRC "Build LibScyllaDB from Source" OFF)
51+
if(CMAKE_HOST_APPLE)
52+
option(PHP_SCYLLADB_LIBSCYLLADB_STATIC "Statically link LibScyllaDB" ON)
53+
else()
54+
option(PHP_SCYLLADB_LIBSCYLLADB_STATIC "Statically link LibScyllaDB" OFF)
55+
endif()
4856

4957
option(PHP_SCYLLADB_USE_LIBCASSANDRA "Use DataStax LibCassandra instead of LibScyllaDB" OFF)
50-
option(PHP_SCYLLADB_LIBCASSANDRA_STATIC "Statically link LibCassandra" OFF)
51-
option(PHP_SCYLLADB_LIBCASSANDRA_FROM_SRC "Build LibCassandra from Source" OFF)
58+
59+
if(CMAKE_HOST_APPLE)
60+
option(PHP_SCYLLADB_LIBCASSANDRA_STATIC "Statically link LibCassandra" ON)
61+
else()
62+
option(PHP_SCYLLADB_LIBCASSANDRA_STATIC "Statically link LibCassandra" OFF)
63+
endif()
5264

5365
find_package(PHPConfig REQUIRED)
5466
find_package(PHP REQUIRED)
5567
find_package(Sanitizers REQUIRED)
56-
find_package(LibUV REQUIRED)
68+
find_package(Libuv REQUIRED)
5769
find_package(LibGMP REQUIRED)
5870

59-
if (PHP_SCYLLADB_USE_LIBCASSANDRA)
71+
if(PHP_SCYLLADB_USE_LIBCASSANDRA)
6072
find_package(CassandraDriver REQUIRED)
61-
else ()
73+
else()
6274
find_package(ScyllaDBDriver REQUIRED)
63-
endif ()
75+
endif()
6476

6577
add_subdirectory(ZendCPP)
6678
add_subdirectory(util)
@@ -83,22 +95,21 @@ target_sources(ext_scylladb PUBLIC FILE_SET headers TYPE HEADERS FILES "${HEADER
8395
target_sources(ext_scylladb PRIVATE php_driver.cpp)
8496

8597
target_link_libraries(
86-
ext_scylladb PRIVATE
87-
Zend
88-
ext_scylladb::src
89-
ext_scylladb::utils
90-
ext_scylladb::type
91-
ext_scylladb::datetime
92-
ext_scylladb::database
93-
ext_scylladb::numbers
94-
ext_scylladb::ssl_options
95-
ext_scylladb::exceptions
96-
ext_scylladb::cluster::builder
97-
ext_scylladb::retry_policy
98-
ext_scylladb::timestamp_generator
98+
ext_scylladb PRIVATE
99+
Zend
100+
ext_scylladb::src
101+
ext_scylladb::utils
102+
ext_scylladb::type
103+
ext_scylladb::datetime
104+
ext_scylladb::database
105+
ext_scylladb::numbers
106+
ext_scylladb::ssl_options
107+
ext_scylladb::exceptions
108+
ext_scylladb::cluster::builder
109+
ext_scylladb::retry_policy
110+
ext_scylladb::timestamp_generator
99111
)
100112

101-
102113
check_include_file("dlfcn.h" HAVE_DLFCN_H)
103114
check_include_file("stdio.h" HAVE_STDIO_H)
104115
check_include_file("stdint.h" HAVE_STDINT_H)
@@ -112,17 +123,17 @@ check_include_file("unistd.h" HAVE_UNISTD_H)
112123
set(HAVE_STRINGS_H 0)
113124

114125
configure_file(
115-
config.in
116-
config.h
117-
USE_SOURCE_PERMISSIONS
118-
NEWLINE_STYLE UNIX
126+
config.in
127+
config.h
128+
USE_SOURCE_PERMISSIONS
129+
NEWLINE_STYLE UNIX
119130
)
120131

121132
configure_file(
122-
version.h.in
123-
version.h
124-
USE_SOURCE_PERMISSIONS
125-
NEWLINE_STYLE UNIX
133+
version.h.in
134+
version.h
135+
USE_SOURCE_PERMISSIONS
136+
NEWLINE_STYLE UNIX
126137
)
127138

128139
target_compile_definitions(ext_scylladb PRIVATE -DCOMPILE_DL_CASSANDRA -DHAVE_CONFIG_H)

Diff for: CMakePresets.json

-8
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@
4343
"CMAKE_BUILD_TYPE": "Release",
4444
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
4545
"PHP_SCYLLADB_USE_LIBCASSANDRA": "OFF",
46-
"PHP_SCYLLADB_LIBSCYLLADB_STATIC": "OFF",
47-
"PHP_SCYLLADB_LIBSCYLLADB_FROM_SRC": "OFF",
4846
"SANITIZE_UNDEFINED": "OFF",
4947
"SANITIZE_ADDRESS": "OFF"
5048
}
@@ -61,8 +59,6 @@
6159
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
6260
"PHP_SCYLLADB_USE_LIBCASSANDRA": "ON",
6361
"SANITIZE_UNDEFINED": "OFF",
64-
"PHP_SCYLLADB_LIBCASSANDRA_STATIC": "OFF",
65-
"PHP_SCYLLADB_LIBCASSANDRA_FROM_SRC": "OFF",
6662
"SANITIZE_ADDRESS": "OFF"
6763
}
6864
},
@@ -77,8 +73,6 @@
7773
"CMAKE_BUILD_TYPE": "RelWithInfo",
7874
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
7975
"PHP_SCYLLADB_ENABLE_SANITIZERS": "OFF",
80-
"PHP_SCYLLADB_LIBSCYLLADB_STATIC": "OFF",
81-
"PHP_SCYLLADB_LIBSCYLLADB_FROM_SRC": "OFF",
8276
"SANITIZE_UNDEFINED": "OFF",
8377
"SANITIZE_ADDRESS": "OFF"
8478
}
@@ -94,8 +88,6 @@
9488
"CMAKE_BUILD_TYPE": "RelWithInfo",
9589
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
9690
"PHP_SCYLLADB_USE_LIBCASSANDRA": "ON",
97-
"PHP_SCYLLADB_LIBCASSANDRA_STATIC": "OFF",
98-
"PHP_SCYLLADB_LIBCASSANDRA_FROM_SRC": "OFF",
9991
"PHP_SCYLLADB_ENABLE_SANITIZERS": "OFF",
10092
"SANITIZE_UNDEFINED": "OFF",
10193
"SANITIZE_ADDRESS": "OFF"

Diff for: cmake/FindCassandraDriver.cmake

+9-63
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,12 @@
1-
if (PHP_SCYLLADB_LIBCASSANDRA_FROM_SRC)
2-
if (PHP_SCYLLADB_LIBCASSANDRA_STATIC)
3-
set(CASS_BUILD_STATIC ON)
4-
set(CASS_BUILD_SHARED OFF)
5-
else ()
6-
set(CASS_BUILD_STATIC OFF)
7-
set(CASS_BUILD_SHARED ON)
8-
endif ()
1+
find_package(PkgConfig REQUIRED)
92

10-
if (PHP_SCYLLADB_LIBUV_FROM_SRC)
11-
CPMAddPackage(
12-
NAME libcassandra
13-
GITHUB_REPOSITORY datastax/cpp-driver
14-
OPTIONS
15-
"CASS_CPP_STANDARD 17"
16-
"CASS_BUILD_STATIC ${CASS_BUILD_STATIC}"
17-
"CASS_BUILD_SHARED ${CASS_BUILD_SHARED}"
18-
"CASS_USE_STD_ATOMIC ON"
19-
"CASS_USE_TIMERFD ON"
20-
"CASS_USE_LIBSSH2 ON"
21-
"CASS_USE_ZLIB ON"
22-
"CMAKE_C_FLAGS ${CMAKE_C_FLAGS} -fPIC"
23-
"CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -fPIC -Wno-error=redundant-move"
24-
"LIBUV_LIBRARY ${LIBUV_LIBRARY}"
25-
"LIBUV_INCLUDE_DIR ${libuv_SOURCE_DIR}/include"
26-
)
27-
else ()
28-
CPMAddPackage(
29-
NAME libcassandra
30-
GITHUB_REPOSITORY datastax/cpp-driver
31-
OPTIONS
32-
"CASS_CPP_STANDARD 17"
33-
"CASS_BUILD_STATIC ${CASS_BUILD_STATIC}"
34-
"CASS_BUILD_SHARED ${CASS_BUILD_SHARED}"
35-
"CASS_USE_STD_ATOMIC ON"
36-
"CASS_USE_TIMERFD ON"
37-
"CASS_USE_LIBSSH2 ON"
38-
"CASS_USE_ZLIB ON"
39-
"CMAKE_C_FLAGS ${CMAKE_C_FLAGS} -fPIC"
40-
"CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -fPIC -Wno-error=redundant-move"
41-
)
42-
endif ()
43-
44-
if (PHP_SCYLLADB_LIBCASSANDRA_STATIC)
45-
target_link_libraries(ext_scylladb PRIVATE cassandra_static)
46-
target_compile_definitions(ext_scylladb PRIVATE -DSCYLLADB_STATIC)
47-
else ()
48-
target_link_libraries(ext_scylladb PRIVATE "libcassandra.so")
49-
endif ()
50-
51-
target_include_directories(ext_scylladb PUBLIC ${libcassandra_SOURCE_DIR}/include)
52-
set(CASSANDRA_H ${libcassandra_SOURCE_DIR}/include)
3+
if (PHP_SCYLLADB_LIBCASSANDRA_STATIC)
4+
pkg_check_modules(LIBCASSANDRA REQUIRED IMPORTED_TARGET cassandra_static)
535
else ()
54-
find_package(PkgConfig REQUIRED)
55-
56-
if (PHP_SCYLLADB_LIBCASSANDRA_STATIC)
57-
pkg_check_modules(LIBCASSANDRA REQUIRED IMPORTED_TARGET cassandra_static)
58-
else ()
59-
pkg_check_modules(LIBCASSANDRA REQUIRED IMPORTED_TARGET cassandra)
60-
endif ()
61-
62-
target_link_libraries(ext_scylladb PRIVATE ${LIBCASSANDRA_LIBRARIES})
63-
target_link_directories(ext_scylladb PRIVATE ${LIBCASSANDRA_LIBRARY_DIRS})
64-
target_include_directories(ext_scylladb PUBLIC ${LIBCASSANDRA_INCLUDE_DIRS})
65-
set(CASSANDRA_H ${LIBCASSANDRA_INCLUDE_DIRS})
6+
pkg_check_modules(LIBCASSANDRA REQUIRED IMPORTED_TARGET cassandra)
667
endif ()
8+
9+
target_link_libraries(ext_scylladb PRIVATE ${LIBCASSANDRA_LIBRARIES})
10+
target_link_directories(ext_scylladb PRIVATE ${LIBCASSANDRA_LIBRARY_DIRS})
11+
target_include_directories(ext_scylladb PUBLIC ${LIBCASSANDRA_INCLUDE_DIRS})
12+
set(CASSANDRA_H ${LIBCASSANDRA_INCLUDE_DIRS})

Diff for: cmake/FindLibUV.cmake renamed to cmake/FindLibuv.cmake

+3-6
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@ if (PHP_SCYLLADB_LIBUV_FROM_SRC)
77

88
CPMAddPackage(
99
NAME libuv
10-
VERSION 1.44.2
11-
URL https://github.com/libuv/libuv/tarball/v1.44.2
12-
URL_HASH MD5=3e22e24d53aab67252907dfa004a6b53
10+
VERSION 1.48.0
11+
URL https://github.com/libuv/libuv/tarball/v1.48.0
1312
OPTIONS
1413
"BUILD_TESTING OFF"
1514
"BUILD_BENCHMARKS OFF"
@@ -25,24 +24,22 @@ if (PHP_SCYLLADB_LIBUV_FROM_SRC)
2524
else ()
2625
set(LIBUV_LIBRARY "${libuv_BINARY_DIR}/libuv.so")
2726
endif ()
27+
set(LIBUV_LIBRARY_DIRS "${libuv_BINARY_DIR}")
2828

2929
if (PHP_SCYLLADB_LIBUV_STATIC)
30-
target_compile_definitions(ext_scylladb PRIVATE -DUV_STATIC)
3130
target_link_libraries(ext_scylladb PRIVATE uv_a)
3231
else ()
3332
target_link_libraries(ext_scylladb PRIVATE uv)
3433
endif ()
3534
else ()
3635
find_package(PkgConfig REQUIRED)
37-
3836
if (PHP_SCYLLADB_LIBUV_STATIC)
3937
target_compile_definitions(ext_scylladb PRIVATE -DUV_STATIC)
4038
pkg_check_modules(LIBUV REQUIRED IMPORTED_TARGET libuv-static)
4139
else ()
4240
pkg_check_modules(LIBUV REQUIRED IMPORTED_TARGET libuv)
4341
endif ()
4442

45-
message(STATUS "LibUV ${LIBUV_INCLUDE_DIRS}")
4643
target_link_libraries(ext_scylladb PRIVATE ${LIBUV_LIBRARIES})
4744
target_link_directories(ext_scylladb PRIVATE ${LIBUV_LIBRARY_DIRS})
4845
target_include_directories(ext_scylladb PUBLIC ${LIBUV_INCLUDE_DIRS})

Diff for: cmake/FindScyllaDBDriver.cmake

+9-67
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,12 @@
1+
find_package(PkgConfig REQUIRED)
12

2-
if (PHP_SCYLLADB_LIBSCYLLADB_FROM_SRC)
3-
if (PHP_SCYLLADB_LIBSCYLLADB_STATIC)
4-
set(CASS_BUILD_STATIC ON)
5-
set(CASS_BUILD_SHARED OFF)
6-
else ()
7-
set(CASS_BUILD_STATIC OFF)
8-
set(CASS_BUILD_SHARED ON)
9-
endif ()
10-
11-
if (PHP_SCYLLADB_LIBUV_FROM_SRC)
12-
CPMAddPackage(
13-
NAME libscylladb
14-
GITHUB_REPOSITORY "scylladb/cpp-driver"
15-
GIT_TAG master
16-
OPTIONS
17-
"CASS_CPP_STANDARD 17"
18-
"CASS_BUILD_STATIC ${CASS_BUILD_STATIC}"
19-
"CASS_BUILD_SHARED ${CASS_BUILD_SHARED}"
20-
"CASS_USE_STD_ATOMIC ON"
21-
"CASS_USE_TIMERFD ON"
22-
"CASS_USE_LIBSSH2 ON"
23-
"CASS_USE_ZLIB OFF"
24-
"CMAKE_C_FLAGS ${CMAKE_C_FLAGS} -fPIC"
25-
"CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -fPIC -Wno-error=redundant-move"
26-
"LIBUV_LIBRARY ${LIBUV_LIBRARY}"
27-
"LIBUV_INCLUDE_DIR ${libuv_SOURCE_DIR}/include"
28-
)
29-
else ()
30-
CPMAddPackage(
31-
NAME libscylladb
32-
GITHUB_REPOSITORY "scylladb/cpp-driver"
33-
GIT_TAG master
34-
OPTIONS
35-
"CASS_CPP_STANDARD 17"
36-
"CASS_BUILD_STATIC ${CASS_BUILD_STATIC}"
37-
"CASS_BUILD_SHARED ${CASS_BUILD_SHARED}"
38-
"CASS_USE_STD_ATOMIC ON"
39-
"CASS_USE_TIMERFD ON"
40-
"CASS_USE_LIBSSH2 ON"
41-
"CASS_USE_ZLIB OFF"
42-
"CMAKE_C_FLAGS ${CMAKE_C_FLAGS} -fPIC"
43-
"CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -fPIC -Wno-error=redundant-move"
44-
)
45-
endif ()
46-
47-
if (PHP_SCYLLADB_LIBSCYLLADB_STATIC)
48-
target_link_libraries(ext_scylladb PRIVATE cassandra_static)
49-
target_compile_definitions(ext_scylladb PRIVATE -DSCYLLADB_STATIC)
50-
else ()
51-
target_link_libraries(ext_scylladb PRIVATE "libscylla-cpp-driver.so")
52-
endif ()
53-
54-
target_include_directories(ext_scylladb PUBLIC ${libscylladb_SOURCE_DIR}/include)
55-
set(CASSANDRA_H ${libscylladb_SOURCE_DIR}/include)
3+
if (PHP_SCYLLADB_LIBSCYLLADB_STATIC)
4+
pkg_check_modules(LIBSCYLLADB REQUIRED IMPORTED_TARGET scylla-cpp-driver_static)
565
else ()
57-
find_package(PkgConfig REQUIRED)
58-
59-
if (PHP_SCYLLADB_LIBSCYLLADB_STATIC)
60-
pkg_check_modules(LIBSCYLLADB REQUIRED IMPORTED_TARGET scylla-cpp-driver_static)
61-
else ()
62-
pkg_check_modules(LIBSCYLLADB REQUIRED IMPORTED_TARGET scylla-cpp-driver)
63-
endif ()
64-
65-
message(STATUS "SCYLLA ${LIBSCYLLADB_INCLUDE_DIRS}")
66-
target_include_directories(ext_scylladb PUBLIC "${LIBSCYLLADB_INCLUDE_DIRS}")
67-
target_link_libraries(ext_scylladb PRIVATE "${LIBSCYLLADB_LIBRARIES}")
68-
target_link_directories(ext_scylladb PRIVATE "${LIBSCYLLADB_LIBRARY_DIRS}")
69-
set(CASSANDRA_H ${LIBSCYLLADB_INCLUDE_DIRS})
6+
pkg_check_modules(LIBSCYLLADB REQUIRED IMPORTED_TARGET scylla-cpp-driver)
707
endif ()
8+
9+
target_include_directories(ext_scylladb PUBLIC "${LIBSCYLLADB_INCLUDE_DIRS}")
10+
target_link_libraries(ext_scylladb PRIVATE "${LIBSCYLLADB_LIBRARIES}")
11+
target_link_directories(ext_scylladb PRIVATE "${LIBSCYLLADB_LIBRARY_DIRS}")
12+
set(CASSANDRA_H ${LIBSCYLLADB_INCLUDE_DIRS})

Diff for: cmake/ScyllaDBPHPLibrary.cmake

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ include(CheckCXXCompilerFlag)
33
include(CheckCCompilerFlag)
44

55
function(scylladb_php_library target enable_sanitizers native_arch lto)
6-
message(STATUS, "CASSANDRA_H ${CASSANDRA_H}")
76
target_include_directories(
87
${target}
98
PUBLIC

Diff for: docker/Dockerfile

+2-4
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,12 @@ RUN git clone --depth 1 https://github.com/scylladb/cpp-driver.git scylladb-driv
7171
&& cd build \
7272
&& cmake -DCASS_CPP_STANDARD=17 -DCASS_BUILD_STATIC=ON -DCASS_BUILD_SHARED=ON -DCASS_USE_STD_ATOMIC=ON -DCASS_USE_TIMERFD=ON -DCASS_USE_LIBSSH2=ON -DCASS_USE_ZLIB=ON CMAKE_C_FLAGS="-fPIC" -DCMAKE_CXX_FLAGS="-fPIC -Wno-error=redundant-move" -DCMAKE_BUILD_TYPE="RelWithInfo" -G Ninja .. \
7373
&& ninja install \
74-
&& cd ../.. \
75-
&& rm -rf scylladb-driver
74+
&& cd ../..
7675

7776
RUN git clone --depth 1 https://github.com/datastax/cpp-driver.git cassandra-driver \
7877
&& cd cassandra-driver \
7978
&& mkdir build \
8079
&& cd build \
8180
&& cmake -DCASS_CPP_STANDARD=17 -DCASS_BUILD_STATIC=ON -DCASS_BUILD_SHARED=ON -DCASS_USE_STD_ATOMIC=ON -DCASS_USE_TIMERFD=ON -DCASS_USE_LIBSSH2=ON -DCASS_USE_ZLIB=ON CMAKE_C_FLAGS="-fPIC" -DCMAKE_CXX_FLAGS="-fPIC -Wno-error=redundant-move" -DCMAKE_BUILD_TYPE="RelWithInfo" -G Ninja .. \
8281
&& ninja install \
83-
&& cd ../.. \
84-
&& rm -rf cassandra-driver
82+
&& cd ../..

0 commit comments

Comments
 (0)