@@ -4,6 +4,9 @@ PROJECT (libslave)
4
4
OPTION (BUILD_STATIC "Force building static library" ON )
5
5
OPTION (WITH_TESTING "Enable building the tests framework" OFF )
6
6
7
+ SET (THREADS_PREFER_PTHREAD_FLAG ON )
8
+ FIND_PACKAGE (Threads REQUIRED)
9
+
7
10
# Build flags
8
11
SET (CMAKE_CXX_STANDARD 14)
9
12
SET (CMAKE_CXX_STANDARD_REQUIRED TRUE )
@@ -21,66 +24,55 @@ IF (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
21
24
ADD_DEFINITIONS (-Wall)
22
25
ENDIF ()
23
26
24
- # Fixes a lot of annoying warnings about auto_ptr deprecation
25
- ADD_DEFINITIONS (-DBOOST_NO_AUTO_PTR)
26
-
27
- SET (BOOST_DIR ${CMAKE_CURRENT_SOURCE_DIR} )
27
+ SET (BOOST_DIR ${CMAKE_CURRENT_SOURCE_DIR} /boost)
28
28
SET (MYSQL_SRC ${CMAKE_CURRENT_SOURCE_DIR} /mysql)
29
29
SET (MYSQL_BIN ${CMAKE_BINARY_DIR} /mysql)
30
30
FILE (MAKE_DIRECTORY ${MYSQL_BIN} )
31
31
32
- INCLUDE_DIRECTORIES (
33
- BEFORE SYSTEM
34
- ${MYSQL_BIN} /include
35
- ${MYSQL_SRC} /include
36
- ${MYSQL_SRC} /libbinlogevents/export
37
- ${BOOST_DIR} /boost_1_69_0/boost
38
- )
39
- ADD_CUSTOM_TARGET (
40
- fix_static_build
41
- WORKING_DIRECTORY ${MYSQL_BIN}
42
- COMMAND sed -i '/GET_TARGET_PROPERTY.*libmysql/s/libmysql/perconaserverclient/' ${MYSQL_SRC} /scripts/CMakeLists.txt
43
- )
44
32
ADD_CUSTOM_TARGET (
45
- mysql_configure
46
- WORKING_DIRECTORY ${MYSQL_BIN}
47
- DEPENDS fix_static_build
48
- COMMAND "${CMAKE_COMMAND} "
33
+ mysql_configure
34
+ WORKING_DIRECTORY ${MYSQL_BIN}
35
+ COMMAND "${CMAKE_COMMAND} "
49
36
-DCMAKE_BUILD_TYPE=Release
50
37
-DDISABLE_SHARED=1
51
38
-DENABLED_PROFILING=0
52
39
-DWITHOUT_SERVER=1
53
40
-DWITH_CLIENT_PROTOCOL_TRACING=0
54
41
-DWITH_DEFAULT_FEATURE_SET=0
55
- -DWITH_SSL=bundled
42
+ -DWITH_SSL=system
56
43
-DWITH_ZLIB=bundled
57
44
-DWITH_LIBEVENT=bundled
58
45
-DWITH_LZ4=bundled
59
46
-DWITH_PROTOBUF=bundled
60
47
-DWITH_EDITLINE=bundled
61
- -DDOWNLOAD_BOOST=1 -DWITH_BOOST=${BOOST_DIR}
48
+ -DDOWNLOAD_BOOST=1
49
+ -DDOWNLOAD_BOOST_TIMEOUT=1200
50
+ -DWITH_BOOST=${BOOST_DIR}
62
51
${MYSQL_SRC}
63
52
)
53
+
64
54
ADD_CUSTOM_TARGET (
65
- mysqlclient_build
66
- WORKING_DIRECTORY ${MYSQL_BIN}
67
- DEPENDS mysql_configure
68
- COMMAND ${CMAKE_COMMAND} --build . --target perconaserverclient
55
+ binlogevents_build
56
+ WORKING_DIRECTORY ${MYSQL_BIN}
57
+ DEPENDS mysql_configure
58
+ COMMAND ${CMAKE_COMMAND} --build . --target binlogevents_static
69
59
)
60
+
70
61
ADD_CUSTOM_TARGET (
71
- binlogevents_build
72
- WORKING_DIRECTORY ${MYSQL_BIN}
73
- DEPENDS mysql_configure
74
- COMMAND ${CMAKE_COMMAND} --build . --target binlogevents_static
62
+ mysql_client_build
63
+ WORKING_DIRECTORY ${MYSQL_BIN}
64
+ DEPENDS binlogevents_build
65
+ COMMAND ${CMAKE_COMMAND} --build . --target perconaserverclient
75
66
)
76
67
77
- ADD_LIBRARY (mysqlclient STATIC IMPORTED )
78
- ADD_DEPENDENCIES (mysqlclient mysqlclient_build)
79
- SET_PROPERTY (TARGET mysqlclient PROPERTY IMPORTED_LOCATION ${MYSQL_BIN} /archive_output_directory /libperconaserverclient.a)
80
-
81
68
ADD_LIBRARY (binlogevents STATIC IMPORTED )
82
69
ADD_DEPENDENCIES (binlogevents binlogevents_build)
83
- SET_PROPERTY (TARGET binlogevents PROPERTY IMPORTED_LOCATION ${MYSQL_BIN} /libbinlogevents/lib/libbinlogevents.a)
70
+ SET_PROPERTY (TARGET binlogevents PROPERTY IMPORTED_LOCATION ${MYSQL_BIN} /libbinlogevents/lib/${CMAKE_STATIC_LIBRARY_PREFIX} binlogevents${CMAKE_STATIC_LIBRARY_SUFFIX} )
71
+
72
+ ADD_LIBRARY (libmysql STATIC IMPORTED )
73
+ ADD_DEPENDENCIES (libmysql mysql_client_build)
74
+ SET_TARGET_PROPERTIES (libmysql PROPERTIES IMPORTED_LOCATION ${MYSQL_BIN} /archive_output_directory /${CMAKE_STATIC_LIBRARY_PREFIX} perconaserverclient${CMAKE_STATIC_LIBRARY_SUFFIX} )
75
+ SET_TARGET_PROPERTIES (libmysql PROPERTIES INTERFACE_LINK_LIBRARIES binlogevents)
84
76
85
77
ADD_DEFINITIONS (-DDBUG_OFF)
86
78
SET (LINK_TYPE STATIC )
@@ -94,9 +86,15 @@ FILE (GLOB HDR "*.h")
94
86
INSTALL (FILES ${HDR} DESTINATION include )
95
87
AUX_SOURCE_DIRECTORY (${CMAKE_CURRENT_SOURCE_DIR} SRC)
96
88
97
- # Most probably static mysql is built without fPIC, so, we can't build dynamic library with it
98
89
ADD_LIBRARY (slave ${LINK_TYPE} ${SRC} )
99
- TARGET_LINK_LIBRARIES (slave ${MYSQL_LIBS} -lpthread)
90
+ TARGET_LINK_LIBRARIES (slave PUBLIC libmysql ssl crypto Threads::Threads m rt dl)
91
+ TARGET_INCLUDE_DIRECTORIES (slave PUBLIC
92
+ ${MYSQL_BIN} /include
93
+ ${MYSQL_SRC}
94
+ ${MYSQL_SRC} /include
95
+ ${MYSQL_SRC} /libbinlogevents/export
96
+ ${BOOST_DIR} /boost_1_70_0
97
+ )
100
98
INSTALL (TARGETS slave DESTINATION lib64)
101
99
102
100
IF (WITH_TESTING)
0 commit comments