--- CMakeLists.txt.orig 2026-02-23 02:11:29 UTC +++ CMakeLists.txt @@ -64,6 +64,13 @@ if(WITH_GLOG) if(WITH_GLOG) set(WITH_GLOG_VAL "1") set(BRPC_WITH_GLOG 1) + # glog >= 0.7 requires GLOG_USE_GLOG_EXPORT to define GLOG_EXPORT/GLOG_NO_EXPORT. + # glog/export.h only exists in glog >= 0.7, so use it as a version check. + include(CheckIncludeFileCXX) + check_include_file_cxx("glog/export.h" GLOG_HAS_EXPORT_H) + if(GLOG_HAS_EXPORT_H) + add_definitions(-DGLOG_USE_GLOG_EXPORT) + endif() endif() if(WITH_DEBUG_SYMBOLS) @@ -147,6 +154,11 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CPP_FLAGS} -O2 -pipe -Wal set(CMAKE_CPP_FLAGS "${CMAKE_CPP_FLAGS} -DBTHREAD_USE_FAST_PTHREAD_MUTEX -D__const__=__unused__ -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DBRPC_REVISION=\\\"${BRPC_REVISION}\\\" -D__STRICT_ANSI__") set(CMAKE_CPP_FLAGS "${CMAKE_CPP_FLAGS} ${DEBUG_SYMBOL} ${THRIFT_CPP_FLAG}") set(CMAKE_CXX_FLAGS "${CMAKE_CPP_FLAGS} -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -fno-omit-frame-pointer") + +if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNO_PTHREAD_MUTEX_HOOK") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNO_PTHREAD_MUTEX_HOOK") +endif() set(CMAKE_C_FLAGS "${CMAKE_CPP_FLAGS} -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-unused-parameter -fno-omit-frame-pointer") macro(use_cxx11) @@ -342,6 +354,9 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") if(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(DYNAMIC_LIB ${DYNAMIC_LIB} rt) set(BRPC_PRIVATE_LIBS "${BRPC_PRIVATE_LIBS} -lrt") +elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + set(DYNAMIC_LIB ${DYNAMIC_LIB} execinfo) + set(BRPC_PRIVATE_LIBS "${BRPC_PRIVATE_LIBS} -lexecinfo") elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin") set(DYNAMIC_LIB ${DYNAMIC_LIB} pthread @@ -500,6 +515,10 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin") ${PROJECT_SOURCE_DIR}/src/butil/strings/sys_string_conversions_mac.mm ${PROJECT_SOURCE_DIR}/src/butil/time/time_mac.cc ${PROJECT_SOURCE_DIR}/src/butil/mac/scoped_mach_port.cc) +elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + set(BUTIL_SOURCES ${BUTIL_SOURCES} + ${PROJECT_SOURCE_DIR}/src/butil/threading/platform_thread_freebsd.cc + ${PROJECT_SOURCE_DIR}/src/butil/strings/sys_string_conversions_posix.cc) endif() file(GLOB_RECURSE BVAR_SOURCES "${PROJECT_SOURCE_DIR}/src/bvar/*.cpp")