109 lines
4.1 KiB
CMake
109 lines
4.1 KiB
CMake
######### get arch ###########################################
|
|
execute_process(COMMAND uname -m
|
|
OUTPUT_VARIABLE ARCH
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
COMMAND_ERROR_IS_FATAL ANY
|
|
)
|
|
set(OS_ARCH ${ARCH})
|
|
message(STATUS "os arch ${OS_ARCH}") # x86_64 or aarch64
|
|
|
|
if (WITH_DEPS)
|
|
# download
|
|
execute_process(
|
|
COMMAND bash deps/dep_create.sh tool ${DEP_VAR} obdevtools-gcc9
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
COMMAND_ERROR_IS_FATAL ANY)
|
|
set(COMPILER_DIR ${DEP_VAR}/usr/local/oceanbase/devtools/bin/)
|
|
set(GCC_LIB_DIR ${DEP_VAR}/usr/local/oceanbase/devtools/lib/gcc/x86_64-redhat-linux/9)
|
|
else ()
|
|
# find in current system
|
|
execute_process(
|
|
COMMAND which gcc
|
|
OUTPUT_VARIABLE GCC_BIN
|
|
)
|
|
get_filename_component(COMPILER_DIR ${GCC_BIN} DIRECTORY)
|
|
endif ()
|
|
|
|
message(STATUS "COMPILER_DIR: ${COMPILER_DIR}")
|
|
|
|
find_program(CC NAMES gcc PATHS ${COMPILER_DIR} NO_DEFAULT_PATH)
|
|
find_program(CXX NAMES g++ PATHS ${COMPILER_DIR} NO_DEFAULT_PATH)
|
|
find_program(AR NAMES gcc-ar ar PATHS ${COMPILER_DIR} NO_DEFAULT_PATH)
|
|
find_program(RANLIB NAMES gcc-ranlib ranlib PATHS ${COMPILER_DIR} NO_DEFAULT_PATH)
|
|
set(CMAKE_C_COMPILER ${CC})
|
|
set(CMAKE_CXX_COMPILER ${CXX})
|
|
set(CMAKE_AR ${AR})
|
|
set(CMAKE_RANLIB ${RANLIB})
|
|
message(STATUS "C compiler: ${CMAKE_C_COMPILER}")
|
|
message(STATUS "C++ compiler: ${CMAKE_CXX_COMPILER}")
|
|
message(STATUS "ar: ${CMAKE_AR}")
|
|
message(STATUS "ranlib: ${CMAKE_RANLIB}")
|
|
|
|
get_filename_component(COMPILER_DIR ${CMAKE_C_COMPILER} DIRECTORY)
|
|
get_filename_component(COMPILER_BASE_DIR ${COMPILER_DIR} DIRECTORY)
|
|
set(CXX_LIB_DIR ${COMPILER_BASE_DIR}/lib64/)
|
|
message(STATUS "CXX_LIB_DIR: ${CXX_LIB_DIR}, GCC_LIB_DIR: ${GCC_LIB_DIR}")
|
|
|
|
if (NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel" FORCE)
|
|
endif ()
|
|
message(STATUS "build type: ${CMAKE_BUILD_TYPE}")
|
|
|
|
set(CMAKE_C_STANDARD 99)
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS 0)
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE 1)
|
|
|
|
## ensure that the build results can be run on systems with lower libstdc++ version than the build system
|
|
add_compile_definitions($<$<COMPILE_LANGUAGE:CXX>:_GLIBCXX_USE_CXX11_ABI=0>)
|
|
link_directories(${CXX_LIB_DIR} ${GCC_LIB_DIR})
|
|
add_link_options(-static-libstdc++ -static-libgcc)
|
|
|
|
if (WITH_ASAN)
|
|
add_compile_options(-fsanitize=address -fno-omit-frame-pointer)
|
|
add_link_options(-fsanitize=address)
|
|
endif ()
|
|
|
|
if (WITH_DEBUG)
|
|
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-ggdb>)
|
|
else ()
|
|
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-ggdb>)
|
|
add_compile_definitions($<$<COMPILE_LANGUAGE:CXX>:NDEBUG>)
|
|
endif ()
|
|
|
|
add_compile_definitions($<$<COMPILE_LANGUAGE:C>:__STDC_LIMIT_MACROS>)
|
|
add_compile_options($<$<COMPILE_LANGUAGE:CXX,C>:-Wall>)
|
|
add_compile_options($<$<COMPILE_LANGUAGE:CXX,C>:-Werror>)
|
|
## Organize the three-party compilation, and then remove the ignored item
|
|
add_compile_options($<$<COMPILE_LANGUAGE:CXX,C>:-Wno-sign-compare>)
|
|
add_compile_options($<$<COMPILE_LANGUAGE:CXX,C>:-Wno-class-memaccess>)
|
|
add_compile_options($<$<COMPILE_LANGUAGE:CXX,C>:-Wno-reorder>)
|
|
if (OS_ARCH STREQUAL "x86_64")
|
|
add_compile_options($<$<COMPILE_LANGUAGE:CXX,C>:-m64>)
|
|
endif ()
|
|
add_compile_options($<$<COMPILE_LANGUAGE:CXX,C>:-pipe>)
|
|
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fPIC>)
|
|
add_compile_options($<$<COMPILE_LANGUAGE:C>:-fPIC>)
|
|
add_link_options(-Wl,-z,noexecstack -Wl,-z,now)
|
|
|
|
add_link_options(-lm)
|
|
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
add_link_options(-lrt)
|
|
elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
|
add_link_options(
|
|
"-framework" "CoreFoundation"
|
|
"-framework" "CoreGraphics"
|
|
"-framework" "CoreData"
|
|
"-framework" "CoreText"
|
|
"-framework" "Security"
|
|
"-framework" "Foundation"
|
|
"-Wl,-U,_MallocExtension_ReleaseFreeMemory"
|
|
"-Wl,-U,_ProfilerStart"
|
|
"-Wl,-U,_ProfilerStop"
|
|
)
|
|
endif ()
|
|
|
|
include(ProcessorCount)
|
|
ProcessorCount(NUM_OF_PROCESSOR)
|
|
message(STATUS "NUM_OF_PROCESSOR: ${NUM_OF_PROCESSOR}") |