1 Commits

Author SHA1 Message Date
4691cef6f5 适配旧世界编译
1. 使用deps 目录下的工具链, 使用静态连接
2. 注释打包 oceanbase-devel , 打包devel 会编译 obcdc,而obcdc会连接报错
2025-04-24 18:11:25 +08:00
11 changed files with 96 additions and 103 deletions

View File

@ -5,8 +5,24 @@ message(STATUS "DETECT BUILD ARCH: " ${ARCHITECTURE})
ob_define(DEVTOOLS_DIR "${CMAKE_SOURCE_DIR}/deps/3rd/usr/local/oceanbase/devtools") ob_define(DEVTOOLS_DIR "${CMAKE_SOURCE_DIR}/deps/3rd/usr/local/oceanbase/devtools")
ob_define(DEP_DIR "${CMAKE_SOURCE_DIR}/deps/3rd/usr/local/oceanbase/deps/devel") ob_define(DEP_DIR "${CMAKE_SOURCE_DIR}/deps/3rd/usr/local/oceanbase/deps/devel")
ob_define(OB_RELEASEID 1)
ob_define(OB_SO_CACHE OFF)
ob_define(OB_USE_CLANG ON)
ob_define(OB_USE_LLVM_LIBTOOLS ON)
ob_define(OB_COMPRESS_DEBUG_SECTIONS OFF)
ob_define(OB_STATIC_LINK_LGPL_DEPS OFF)
ob_define(OB_USE_CCACHE OFF)
ob_define(OB_ENABLE_PCH ON)
ob_define(OB_ENABLE_LIB_PCH ${OB_ENABLE_PCH}) ob_define(OB_ENABLE_LIB_PCH ${OB_ENABLE_PCH})
ob_define(OB_ENABLE_SERVER_PCH ${OB_ENABLE_PCH}) ob_define(OB_ENABLE_SERVER_PCH ${OB_ENABLE_PCH})
ob_define(OB_ENABLE_UNITY ON)
ob_define(OB_MAX_UNITY_BATCH_SIZE 30)
ob_define(OB_USE_ASAN OFF)
set(OBJCOPY_BIN "${DEVTOOLS_DIR}/bin/llvm-objcopy")
set(LD_BIN "${DEVTOOLS_DIR}/bin/ld.lld")
# share compile cache between different directories # share compile cache between different directories
set(DEBUG_PREFIX "-fdebug-prefix-map=${CMAKE_SOURCE_DIR}=.") set(DEBUG_PREFIX "-fdebug-prefix-map=${CMAKE_SOURCE_DIR}=.")
@ -43,8 +59,8 @@ if(OB_USE_LLVM_LIBTOOLS)
# use llvm-ar llvm-ranlib llvm-objcopy ld.lld... # use llvm-ar llvm-ranlib llvm-objcopy ld.lld...
set(_CMAKE_TOOLCHAIN_PREFIX llvm-) set(_CMAKE_TOOLCHAIN_PREFIX llvm-)
set(_CMAKE_TOOLCHAIN_LOCATION "${DEVTOOLS_DIR}/bin") set(_CMAKE_TOOLCHAIN_LOCATION "${DEVTOOLS_DIR}/bin")
find_program(LD_BIN ld.lld PATHS "${DEVTOOLS_DIR}/bin" "/usr/bin") find_program(LD_BIN ld.lld PATHS "${DEVTOOLS_DIR}/bin")
find_program(OBJCOPY_BIN llvm-objcopy PATHS "${DEVTOOLS_DIR}/bin" "/usr/bin") find_program(OBJCOPY_BIN llvm-objcopy PATHS "${DEVTOOLS_DIR}/bin")
else() else()
find_program(LD_BIN ld PATHS "${CMAKE_SOURCE_DIR}/deps/3rd/compile" "${DEVTOOLS_DIR}/bin" "/usr/bin") find_program(LD_BIN ld PATHS "${CMAKE_SOURCE_DIR}/deps/3rd/compile" "${DEVTOOLS_DIR}/bin" "/usr/bin")
find_program(OBJCOPY_BIN objcopy PATHS "${DEVTOOLS_DIR}/bin" "/usr/bin") find_program(OBJCOPY_BIN objcopy PATHS "${DEVTOOLS_DIR}/bin" "/usr/bin")
@ -73,9 +89,9 @@ if (OB_USE_CLANG)
find_program(OB_CXX clang++ find_program(OB_CXX clang++
PATHS "${DEVTOOLS_DIR}/bin" "/usr/bin" PATHS "${DEVTOOLS_DIR}/bin" "/usr/bin"
NO_DEFAULT_PATH) NO_DEFAULT_PATH)
set(BUILD_OPT "${BUILD_OPT} -fcolor-diagnostics") set(BUILD_OPT "${BUILD_OPT} --gcc-toolchain=${DEVTOOLS_DIR} -fcolor-diagnostics -ffunction-sections -fdata-sections")
# just make embedded clang and ccache happy... # just make embedded clang and ccache happy...
set(LD_OPT "${LD_OPT} -Wl,-z,noexecstack") set(LD_OPT "${LD_OPT} -Wl,-z,noexecstack -Wl,--gc-sections ")
if (OB_USE_ASAN) if (OB_USE_ASAN)
ob_define(CMAKE_ASAN_FLAG "-fstack-protector-strong -fsanitize=address -fno-optimize-sibling-calls") ob_define(CMAKE_ASAN_FLAG "-fstack-protector-strong -fsanitize=address -fno-optimize-sibling-calls")
@ -140,8 +156,8 @@ elseif(${ARCHITECTURE} STREQUAL "aarch64")
set(ARCH_LDFLAGS "-l:libatomic.a") set(ARCH_LDFLAGS "-l:libatomic.a")
elseif(${ARCHITECTURE} STREQUAL "loongarch64") elseif(${ARCHITECTURE} STREQUAL "loongarch64")
set(MARCH_CFLAGS "-march=la464" "-mcmodel=large") set(MARCH_CFLAGS "-march=la464" "-mcmodel=large")
set(MTUNE_CFLAGS "-mabi=lp64d") set(MTUNE_CFLAGS "-mabi=lp64")
set(ARCH_LDFLAGS "-latomic") set(ARCH_LDFLAGS "-l:libatomic.a")
elseif(${ARCHITECTURE} STREQUAL "sw_64") elseif(${ARCHITECTURE} STREQUAL "sw_64")
set(ARCH_LDFLAGS "-latomic -llzma") set(ARCH_LDFLAGS "-latomic -llzma")
else() else()

View File

@ -59,67 +59,67 @@ install(FILES
DESTINATION etc DESTINATION etc
COMPONENT server) COMPONENT server)
## oceanbase-devel ### oceanbase-devel
# libobcdc.so and libob_sql_proxy_parser_static.a ## libobcdc.so and libob_sql_proxy_parser_static.a
set(OCEANBASE_DEVEL_LIB_FILES "") #set(OCEANBASE_DEVEL_LIB_FILES "")
set(OCEANBASE_DEVEL_INCLUDE_FILES deps/oblib/src/lib/ob_errno.h) #set(OCEANBASE_DEVEL_INCLUDE_FILES deps/oblib/src/lib/ob_errno.h)
set(OCEANBASE_DEVEL_BIN_FILES "") #set(OCEANBASE_DEVEL_BIN_FILES "")
#
message(STATUS "OB_BUILD_LIBOB_SQL_PROXY_PARSER ${OB_BUILD_LIBOB_SQL_PROXY_PARSER}") #message(STATUS "OB_BUILD_LIBOB_SQL_PROXY_PARSER ${OB_BUILD_LIBOB_SQL_PROXY_PARSER}")
if (OB_BUILD_LIBOB_SQL_PROXY_PARSER) #if (OB_BUILD_LIBOB_SQL_PROXY_PARSER)
# lib # # lib
list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/src/sql/parser/libob_sql_proxy_parser_static.a) # list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/src/sql/parser/libob_sql_proxy_parser_static.a)
#
# headers # # headers
list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES deps/oblib/src/common/sql_mode/ob_sql_mode.h) # list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES deps/oblib/src/common/sql_mode/ob_sql_mode.h)
list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES src/sql/parser/ob_item_type.h) # list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES src/sql/parser/ob_item_type.h)
list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES src/sql/parser/ob_sql_parser.h) # list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES src/sql/parser/ob_sql_parser.h)
list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES src/sql/parser/parse_malloc.h) # list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES src/sql/parser/parse_malloc.h)
list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES src/sql/parser/parser_proxy_func.h) # list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES src/sql/parser/parser_proxy_func.h)
list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES src/sql/parser/parse_node.h) # list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES src/sql/parser/parse_node.h)
endif() #endif()
#
if (OB_BUILD_LIBOBLOG) #if (OB_BUILD_LIBOBLOG)
# lib # # lib
# list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/tools/libobcdc/src/libobcdc.a) # # list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/tools/libobcdc/src/libobcdc.a)
list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/tools/obcdc/src/libobcdc.so) # list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/tools/obcdc/src/libobcdc.so)
list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/tools/obcdc/src/libobcdc.so.1) # list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/tools/obcdc/src/libobcdc.so.1)
list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/tools/obcdc/src/libobcdc.so.1.0.0) # list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/tools/obcdc/src/libobcdc.so.1.0.0)
#
# include lilboblog header # # include lilboblog header
list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES tools/obcdc/src/libobcdc.h) # list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES tools/obcdc/src/libobcdc.h)
#
# bin # # bin
list(APPEND OCEANBASE_DEVEL_BIN_FILES ${CMAKE_BINARY_DIR}/tools/obcdc/tests/obcdc_tailf) # list(APPEND OCEANBASE_DEVEL_BIN_FILES ${CMAKE_BINARY_DIR}/tools/obcdc/tests/obcdc_tailf)
endif() #endif()
#
set(CPACK_RPM_DEVEL_DEFAULT_USER "root") #set(CPACK_RPM_DEVEL_DEFAULT_USER "root")
set(CPACK_RPM_DEVEL_DEFAULT_GROUP "root") #set(CPACK_RPM_DEVEL_DEFAULT_GROUP "root")
#
install(PROGRAMS #install(PROGRAMS
${OCEANBASE_DEVEL_LIB_FILES} # ${OCEANBASE_DEVEL_LIB_FILES}
DESTINATION /usr/lib # DESTINATION /usr/lib
COMPONENT devel # COMPONENT devel
) #)
#
install(FILES #install(FILES
${OCEANBASE_DEVEL_INCLUDE_FILES} # ${OCEANBASE_DEVEL_INCLUDE_FILES}
DESTINATION /usr/include # DESTINATION /usr/include
COMPONENT devel # COMPONENT devel
) #)
#
install(PROGRAMS #install(PROGRAMS
${OCEANBASE_DEVEL_BIN_FILES} # ${OCEANBASE_DEVEL_BIN_FILES}
DESTINATION /usr/bin # DESTINATION /usr/bin
COMPONENT devel # COMPONENT devel
) #)
#
if (OB_BUILD_LIBOBLOG) #if (OB_BUILD_LIBOBLOG)
install(DIRECTORY # install(DIRECTORY
"deps/logmessage/include/" # "deps/logmessage/include/"
DESTINATION /usr/include/oblogmsg # DESTINATION /usr/include/oblogmsg
COMPONENT devel) # COMPONENT devel)
endif() #endif()
## oceanbase-libs ## oceanbase-libs
install(PROGRAMS install(PROGRAMS

View File

@ -20,14 +20,6 @@ set_property(GLOBAL PROPERTY EASY_INCLUDE_DIRS
${INNER_INCLUDE_DIRS} ${INNER_INCLUDE_DIRS}
) )
find_package(PkgConfig REQUIRED)
pkg_check_modules(OPENSSL REQUIRED IMPORTED_TARGET openssl)
if(${OPENSSL_FOUND})
include_directories(${OPENSSL_INCLUDE_DIRS})
else()
message("oceanbase need openssl")
endif()
target_include_directories( target_include_directories(
easy_base INTERFACE easy_base INTERFACE
${INNER_INCLUDE_DIRS} ${INNER_INCLUDE_DIRS}
@ -57,9 +49,7 @@ target_compile_options(easy_base
target_link_libraries(easy_base target_link_libraries(easy_base
INTERFACE INTERFACE
-L${DEP_DIR}/lib -L${DEP_DIR}/lib
-L${OPENSSL_LIBDIR} -lpthread -lm -l:libssl.a -l:libcrypto.a
${OPENSSL_LIBRARIES}
-lpthread -lm
${ARCH_LDFLAGS} ${ARCH_LDFLAGS}
) )

View File

@ -4,17 +4,11 @@ message(STATUS "check deps for oblib")
get_property(EASY_INCLUDE_DIRS GLOBAL PROPERTY "EASY_INCLUDE_DIRS" ) get_property(EASY_INCLUDE_DIRS GLOBAL PROPERTY "EASY_INCLUDE_DIRS" )
find_package(PkgConfig REQUIRED)
pkg_check_modules(RAPIDJSON REQUIRED IMPORTED_TARGET RapidJSON)
pkg_check_modules(ISAL REQUIRED IMPORTED_TARGET libisal)
target_include_directories( target_include_directories(
oblib_base_base INTERFACE oblib_base_base INTERFACE
${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
${EASY_INCLUDE_DIRS} ${EASY_INCLUDE_DIRS}
${DEP_DIR}/include ${DEP_DIR}/include
${RAPIDJSON_INCLUDE_DIRS}
${ISAL_INCLUDE_DIRS}
) )
set(ARCH_COMPILE_OPTIONS "") set(ARCH_COMPILE_OPTIONS "")
@ -63,7 +57,7 @@ target_compile_features(oblib_base_base INTERFACE cxx_std_11)
target_link_libraries(oblib_base_base target_link_libraries(oblib_base_base
INTERFACE INTERFACE
-L${DEP_DIR}/lib -L${DEP_DIR}/lib
${ISAL_LIBRARIES} -lunwind -lpthread -ldl -lrt -lcrypto -lcurl ${ARCH_LDFLAGS}) -l:libisal.a -l:libunwind.a -lpthread -ldl -lrt -l:libssl.a -l:libcrypto.a -l:libcurl.a ${ARCH_LDFLAGS})
add_library(oblib_base INTERFACE) add_library(oblib_base INTERFACE)
target_compile_options(oblib_base INTERFACE -D_GLIBCXX_USE_CXX11_ABI=0) target_compile_options(oblib_base INTERFACE -D_GLIBCXX_USE_CXX11_ABI=0)

View File

@ -326,7 +326,7 @@ target_link_libraries(ob_main PUBLIC ob_base)
enable_server_pch(ob_main) enable_server_pch(ob_main)
if (OB_STATIC_LINK_LGPL_DEPS) if (OB_STATIC_LINK_LGPL_DEPS)
set(LGPL_DEPS "-L${DEP_DIR}/lib/mariadb -lmariadbclient -laio") set(LGPL_DEPS "-L${DEP_DIR}/lib/mariadb -l:libmariadbclient.a -l:libaio.a")
endif() endif()
add_executable(observer) add_executable(observer)

View File

@ -16,7 +16,7 @@
#include "lib/charset/ob_dtoa.h" #include "lib/charset/ob_dtoa.h"
#include "common/ob_field.h" #include "common/ob_field.h"
#include "share/schema/ob_schema_getter_guard.h" #include "share/schema/ob_schema_getter_guard.h"
#include <mariadb/mysql.h> #include <mysql/mysql.h>
using namespace oceanbase::common; using namespace oceanbase::common;
using namespace oceanbase::obmysql; using namespace oceanbase::obmysql;

View File

@ -7,6 +7,7 @@
set +x set +x
CURDIR="$(dirname $(readlink -f "$0"))" CURDIR="$(dirname $(readlink -f "$0"))"
export PATH=$CURDIR/../../../deps/3rd/usr/local/oceanbase/devtools/bin:$PATH export PATH=$CURDIR/../../../deps/3rd/usr/local/oceanbase/devtools/bin:$PATH
export BISON_PKGDATADIR=$CURDIR/../../../deps/3rd/usr/local/oceanbase/devtools/share/bison
# generate sql_parser # generate sql_parser
bison -v -d ../../../src/sql/parser/sql_parser_mysql_mode.y -o ../../../src/sql/parser/sql_parser_mysql_mode_tab.c bison -v -d ../../../src/sql/parser/sql_parser_mysql_mode.y -o ../../../src/sql/parser/sql_parser_mysql_mode_tab.c

View File

@ -22,9 +22,6 @@
#include "sql_parser_base.h" #include "sql_parser_base.h"
#include "sql_parser_mysql_mode_tab.h" #include "sql_parser_mysql_mode_tab.h"
#define YYLTYPE OBSQL_MYSQL_YYLTYPE
#define YYSTYPE OBSQL_MYSQL_YYSTYPE
#define YYEMPTY OBSQL_MYSQL_YYEMPTY
extern void obsql_mysql_yyerror(YYLTYPE *yylloc, ParseResult *p, char *s,...); extern void obsql_mysql_yyerror(YYLTYPE *yylloc, ParseResult *p, char *s,...);
extern void obsql_mysql_parser_fatal_error(yyconst char *msg, yyscan_t yyscanner); extern void obsql_mysql_parser_fatal_error(yyconst char *msg, yyscan_t yyscanner);
#define yyerror obsql_mysql_yyerror #define yyerror obsql_mysql_yyerror

View File

@ -10,16 +10,11 @@
* See the Mulan PubL v2 for more details. * See the Mulan PubL v2 for more details.
*/ */
%define api.pure %define api.pure
%code requires { %parse-param {ParseResult *result}
#include "../../../src/sql/parser/parse_node.h" %name-prefix "obsql_mysql_yy"
#define YYEMPTY OBSQL_MYSQL_YYEMPTY
}
%param {ParseResult *result}
%define api.prefix {obsql_mysql_yy}
%locations %locations
%verbose %verbose
%define parse.error verbose %error-verbose
%{ %{
#include <stdint.h> #include <stdint.h>
#define YYDEBUG 1 #define YYDEBUG 1

View File

@ -113,7 +113,7 @@ target_compile_definitions(obcdc_objects PRIVATE ENABLE_DEBUG_LOG)
#target_compile_options(obcdc_objects PRIVATE -Werror) #target_compile_options(obcdc_objects PRIVATE -Werror)
disable_pch(obcdc_objects) disable_pch(obcdc_objects)
set(LGPL_DEPS "-L${DEP_DIR}/lib/mariadb -lmysqlclient -laio") set(LGPL_DEPS "-L${DEP_DIR}/lib/mariadb -l:libmariadbclient.a -laio")
if (OB_SO_CACHE) if (OB_SO_CACHE)
add_library(obcdc SHARED IMPORTED GLOBAL) add_library(obcdc SHARED IMPORTED GLOBAL)
@ -131,7 +131,7 @@ else()
-Wl,--start-group -Wl,--start-group
oceanbase_static oceanbase_static
-Wl,--end-group -Wl,--end-group
-lgcc -lstdc++ PRIVATE -static-libgcc -static-libstdc++
-Wl,-Bsymbolic -Wl,-Bsymbolic
-Wl,-e,so_main -Wl,-e,so_main
${LGPL_DEPS} ${LGPL_DEPS}
@ -144,14 +144,14 @@ add_library(obcdc_objects_miner OBJECT ${SRC_LIST})
disable_pch(obcdc_objects_miner) disable_pch(obcdc_objects_miner)
target_link_libraries(obcdc_objects_miner PUBLIC obcdc_base) target_link_libraries(obcdc_objects_miner PUBLIC obcdc_base)
add_library(obcdc_static add_library(obcdc_static
SHARED STATIC
${CMAKE_BINARY_DIR}/src/observer/ob_version.cpp) ${CMAKE_BINARY_DIR}/src/observer/ob_version.cpp)
target_link_libraries(obcdc_static target_link_libraries(obcdc_static
PUBLIC obcdc_objects_miner PUBLIC obcdc_objects_miner
-Wl,--start-group -Wl,--start-group
oceanbase_static oceanbase_static
-Wl,--end-group -Wl,--end-group
PRIVATE -lgcc -lstdc++ PRIVATE -static-libgcc -static-libstdc++
${LGPL_DEPS} ${LGPL_DEPS}
) )
set_target_properties(obcdc_static PROPERTIES OUTPUT_NAME "obcdc") set_target_properties(obcdc_static PROPERTIES OUTPUT_NAME "obcdc")