2022-05-31 03:37:08 +00:00
|
|
|
cmake_minimum_required(VERSION 3.0)
|
2023-12-01 06:45:18 +00:00
|
|
|
set(CMAKE_VERBOSE_MAKEFILE FALSE)
|
2022-12-29 01:21:54 +00:00
|
|
|
set(TD_BUILD_TAOSA_INTERNAL FALSE)
|
2022-04-22 01:54:27 +00:00
|
|
|
|
2022-04-16 07:12:11 +00:00
|
|
|
#set output directory
|
|
|
|
|
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/build/lib)
|
|
|
|
|
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/build/bin)
|
|
|
|
|
SET(TD_TESTS_OUTPUT_DIR ${PROJECT_BINARY_DIR}/test)
|
|
|
|
|
|
|
|
|
|
MESSAGE(STATUS "Project source directory: " ${PROJECT_SOURCE_DIR})
|
|
|
|
|
MESSAGE(STATUS "Project binary files output path: " ${PROJECT_BINARY_DIR})
|
|
|
|
|
MESSAGE(STATUS "Project executable files output path: " ${EXECUTABLE_OUTPUT_PATH})
|
|
|
|
|
MESSAGE(STATUS "Project library files output path: " ${LIBRARY_OUTPUT_PATH})
|
|
|
|
|
|
2022-04-12 16:42:21 +00:00
|
|
|
if (NOT DEFINED TD_GRANT)
|
|
|
|
|
SET(TD_GRANT FALSE)
|
|
|
|
|
endif()
|
|
|
|
|
|
2024-08-02 05:29:47 +00:00
|
|
|
IF (NOT DEFINED BUILD_WITH_RAND_ERR)
|
|
|
|
|
SET(BUILD_WITH_RAND_ERR FALSE)
|
|
|
|
|
ELSE ()
|
|
|
|
|
SET(BUILD_WITH_RAND_ERR TRUE)
|
|
|
|
|
endif()
|
|
|
|
|
|
2022-07-08 11:23:03 +00:00
|
|
|
IF ("${WEBSOCKET}" MATCHES "true")
|
|
|
|
|
SET(TD_WEBSOCKET TRUE)
|
|
|
|
|
MESSAGE("Enable websocket")
|
|
|
|
|
ADD_DEFINITIONS(-DWEBSOCKET)
|
|
|
|
|
ELSE ()
|
|
|
|
|
SET(TD_WEBSOCKET FALSE)
|
|
|
|
|
ENDIF ()
|
|
|
|
|
|
2022-06-15 06:55:02 +00:00
|
|
|
IF ("${BUILD_HTTP}" STREQUAL "")
|
|
|
|
|
IF (TD_LINUX)
|
|
|
|
|
IF (TD_ARM_32)
|
|
|
|
|
SET(TD_BUILD_HTTP TRUE)
|
|
|
|
|
ELSE ()
|
|
|
|
|
SET(TD_BUILD_HTTP TRUE)
|
|
|
|
|
ENDIF ()
|
|
|
|
|
ELSEIF (TD_DARWIN)
|
|
|
|
|
SET(TD_BUILD_HTTP TRUE)
|
|
|
|
|
ELSE ()
|
|
|
|
|
SET(TD_BUILD_HTTP TRUE)
|
|
|
|
|
ENDIF ()
|
|
|
|
|
ELSEIF (${BUILD_HTTP} MATCHES "false")
|
|
|
|
|
SET(TD_BUILD_HTTP FALSE)
|
|
|
|
|
ELSEIF (${BUILD_HTTP} MATCHES "true")
|
|
|
|
|
SET(TD_BUILD_HTTP TRUE)
|
|
|
|
|
ELSEIF (${BUILD_HTTP} MATCHES "internal")
|
|
|
|
|
SET(TD_BUILD_HTTP FALSE)
|
|
|
|
|
SET(TD_BUILD_TAOSA_INTERNAL TRUE)
|
|
|
|
|
ELSE ()
|
|
|
|
|
SET(TD_BUILD_HTTP TRUE)
|
|
|
|
|
ENDIF ()
|
|
|
|
|
|
|
|
|
|
IF (TD_BUILD_HTTP)
|
|
|
|
|
ADD_DEFINITIONS(-DHTTP_EMBEDDED)
|
|
|
|
|
ENDIF ()
|
|
|
|
|
|
2022-03-11 11:39:20 +00:00
|
|
|
IF ("${BUILD_TOOLS}" STREQUAL "")
|
|
|
|
|
IF (TD_LINUX)
|
|
|
|
|
IF (TD_ARM_32)
|
|
|
|
|
SET(BUILD_TOOLS "false")
|
|
|
|
|
ELSEIF (TD_ARM_64)
|
|
|
|
|
SET(BUILD_TOOLS "false")
|
|
|
|
|
ELSE ()
|
|
|
|
|
SET(BUILD_TOOLS "false")
|
|
|
|
|
ENDIF ()
|
|
|
|
|
ELSEIF (TD_DARWIN)
|
|
|
|
|
SET(BUILD_TOOLS "false")
|
|
|
|
|
ELSE ()
|
|
|
|
|
SET(BUILD_TOOLS "false")
|
|
|
|
|
ENDIF ()
|
|
|
|
|
ENDIF ()
|
|
|
|
|
|
|
|
|
|
IF ("${BUILD_TOOLS}" MATCHES "false")
|
|
|
|
|
MESSAGE("${Yellow} Will _not_ build taos_tools! ${ColourReset}")
|
|
|
|
|
SET(TD_TAOS_TOOLS FALSE)
|
|
|
|
|
ELSE ()
|
|
|
|
|
MESSAGE("")
|
|
|
|
|
MESSAGE("${Green} Will build taos_tools! ${ColourReset}")
|
|
|
|
|
MESSAGE("")
|
|
|
|
|
SET(TD_TAOS_TOOLS TRUE)
|
|
|
|
|
ENDIF ()
|
|
|
|
|
|
2023-08-14 08:31:58 +00:00
|
|
|
IF (${TD_WINDOWS})
|
|
|
|
|
SET(TAOS_LIB taos_static)
|
|
|
|
|
ELSE ()
|
|
|
|
|
SET(TAOS_LIB taos)
|
|
|
|
|
ENDIF ()
|
|
|
|
|
|
2023-09-15 06:30:23 +00:00
|
|
|
# build TSZ by default
|
|
|
|
|
IF ("${TSZ_ENABLED}" MATCHES "false")
|
|
|
|
|
set(VAR_TSZ "" CACHE INTERNAL "global variant empty" )
|
|
|
|
|
ELSE()
|
|
|
|
|
# define add
|
|
|
|
|
MESSAGE(STATUS "build with TSZ enabled")
|
|
|
|
|
ADD_DEFINITIONS(-DTD_TSZ)
|
|
|
|
|
set(VAR_TSZ "TSZ" CACHE INTERNAL "global variant tsz" )
|
|
|
|
|
ENDIF()
|
|
|
|
|
|
2023-10-16 01:31:30 +00:00
|
|
|
# force set all platform to JEMALLOC_ENABLED = false
|
|
|
|
|
SET(JEMALLOC_ENABLED OFF)
|
2022-03-11 11:39:20 +00:00
|
|
|
IF (TD_WINDOWS)
|
|
|
|
|
MESSAGE("${Yellow} set compiler flag for Windows! ${ColourReset}")
|
2023-11-20 01:55:59 +00:00
|
|
|
IF (${CMAKE_BUILD_TYPE} MATCHES "Release")
|
|
|
|
|
MESSAGE("${Green} will build Release version! ${ColourReset}")
|
|
|
|
|
SET(COMMON_FLAGS "/W3 /D_WIN32 /DWIN32 /Zi- /O2 /GL /MD")
|
|
|
|
|
|
|
|
|
|
ELSE ()
|
|
|
|
|
MESSAGE("${Green} will build Debug version! ${ColourReset}")
|
|
|
|
|
SET(COMMON_FLAGS "/w /D_WIN32 /DWIN32 /Zi /MTd")
|
|
|
|
|
ENDIF()
|
|
|
|
|
|
2022-05-08 19:22:05 +00:00
|
|
|
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
|
2022-04-22 01:54:27 +00:00
|
|
|
# IF (MSVC AND (MSVC_VERSION GREATER_EQUAL 1900))
|
|
|
|
|
# SET(COMMON_FLAGS "${COMMON_FLAGS} /Wv:18")
|
|
|
|
|
# ENDIF ()
|
2022-05-20 07:14:02 +00:00
|
|
|
IF (CMAKE_DEPFILE_FLAGS_C)
|
|
|
|
|
SET(CMAKE_DEPFILE_FLAGS_C "")
|
|
|
|
|
ENDIF ()
|
|
|
|
|
IF (CMAKE_DEPFILE_FLAGS_CXX)
|
|
|
|
|
SET(CMAKE_DEPFILE_FLAGS_CXX "")
|
|
|
|
|
ENDIF ()
|
2022-08-15 08:37:40 +00:00
|
|
|
IF (CMAKE_C_FLAGS_DEBUG)
|
|
|
|
|
SET(CMAKE_C_FLAGS_DEBUG "" CACHE STRING "" FORCE)
|
|
|
|
|
ENDIF ()
|
|
|
|
|
IF (CMAKE_CXX_FLAGS_DEBUG)
|
|
|
|
|
SET(CMAKE_CXX_FLAGS_DEBUG "" CACHE STRING "" FORCE)
|
|
|
|
|
ENDIF ()
|
2022-04-22 01:54:27 +00:00
|
|
|
|
|
|
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_FLAGS}")
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_FLAGS}")
|
2022-03-11 11:39:20 +00:00
|
|
|
|
|
|
|
|
ELSE ()
|
2022-08-23 10:07:17 +00:00
|
|
|
IF (${TD_DARWIN})
|
|
|
|
|
set(CMAKE_MACOSX_RPATH 0)
|
2022-08-24 00:49:37 +00:00
|
|
|
ENDIF ()
|
2022-05-10 14:20:52 +00:00
|
|
|
IF (${COVER} MATCHES "true")
|
|
|
|
|
MESSAGE(STATUS "Test coverage mode, add extra flags")
|
|
|
|
|
SET(GCC_COVERAGE_COMPILE_FLAGS "-fprofile-arcs -ftest-coverage")
|
|
|
|
|
SET(GCC_COVERAGE_LINK_FLAGS "-lgcov --coverage")
|
|
|
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS} ${GCC_COVERAGE_LINK_FLAGS}")
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS} ${GCC_COVERAGE_LINK_FLAGS}")
|
|
|
|
|
ENDIF ()
|
|
|
|
|
|
2023-01-03 01:47:01 +00:00
|
|
|
# disable all assert
|
2023-01-03 01:53:37 +00:00
|
|
|
IF ((${DISABLE_ASSERT} MATCHES "true") OR (${DISABLE_ASSERTS} MATCHES "true"))
|
2023-01-03 01:47:01 +00:00
|
|
|
ADD_DEFINITIONS(-DDISABLE_ASSERT)
|
|
|
|
|
MESSAGE(STATUS "Disable all asserts")
|
|
|
|
|
ENDIF()
|
|
|
|
|
|
2022-12-12 03:24:21 +00:00
|
|
|
INCLUDE(CheckCCompilerFlag)
|
2022-12-21 07:25:27 +00:00
|
|
|
IF (TD_ARM_64 OR TD_ARM_32)
|
|
|
|
|
SET(COMPILER_SUPPORT_SSE42 false)
|
|
|
|
|
ELSEIF (("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") OR ("${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang"))
|
2022-12-13 11:19:12 +00:00
|
|
|
SET(COMPILER_SUPPORT_SSE42 true)
|
2022-12-13 14:37:29 +00:00
|
|
|
MESSAGE(STATUS "Always enable sse4.2 for Clang/AppleClang")
|
2022-12-13 11:19:12 +00:00
|
|
|
ELSE()
|
|
|
|
|
CHECK_C_COMPILER_FLAG("-msse4.2" COMPILER_SUPPORT_SSE42)
|
|
|
|
|
ENDIF()
|
|
|
|
|
|
|
|
|
|
CHECK_C_COMPILER_FLAG("-mfma" COMPILER_SUPPORT_FMA)
|
|
|
|
|
CHECK_C_COMPILER_FLAG("-mavx" COMPILER_SUPPORT_AVX)
|
|
|
|
|
CHECK_C_COMPILER_FLAG("-mavx2" COMPILER_SUPPORT_AVX2)
|
2023-11-08 06:29:40 +00:00
|
|
|
CHECK_C_COMPILER_FLAG("-mavx512f" COMPILER_SUPPORT_AVX512F)
|
|
|
|
|
CHECK_C_COMPILER_FLAG("-mavx512vbmi" COMPILER_SUPPORT_AVX512BMI)
|
2023-11-27 01:32:47 +00:00
|
|
|
CHECK_C_COMPILER_FLAG("-mavx512vl" COMPILER_SUPPORT_AVX512VL)
|
2022-12-12 03:24:21 +00:00
|
|
|
|
2022-12-13 11:19:12 +00:00
|
|
|
IF (COMPILER_SUPPORT_SSE42)
|
2022-12-12 03:24:21 +00:00
|
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2")
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2")
|
|
|
|
|
ENDIF()
|
|
|
|
|
|
|
|
|
|
IF ("${SIMD_SUPPORT}" MATCHES "true")
|
2023-11-27 01:32:47 +00:00
|
|
|
IF (COMPILER_SUPPORT_FMA)
|
2022-12-26 05:46:24 +00:00
|
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfma")
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfma")
|
2023-11-27 01:32:47 +00:00
|
|
|
ENDIF()
|
|
|
|
|
IF (COMPILER_SUPPORT_AVX)
|
2022-12-12 03:24:21 +00:00
|
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx")
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx")
|
2022-11-11 06:16:13 +00:00
|
|
|
ENDIF()
|
2022-12-13 11:19:12 +00:00
|
|
|
IF (COMPILER_SUPPORT_AVX2)
|
2022-12-12 03:24:21 +00:00
|
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx2")
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2")
|
2022-05-05 07:55:11 +00:00
|
|
|
ENDIF()
|
2023-11-12 16:50:26 +00:00
|
|
|
MESSAGE(STATUS "SIMD instructions (FMA/AVX/AVX2) is ACTIVATED")
|
2024-06-19 07:06:09 +00:00
|
|
|
ENDIF()
|
2023-11-08 06:29:40 +00:00
|
|
|
|
2024-06-19 07:06:09 +00:00
|
|
|
IF ("${SIMD_AVX512_SUPPORT}" MATCHES "true")
|
2024-01-23 07:14:04 +00:00
|
|
|
IF (COMPILER_SUPPORT_AVX512F AND COMPILER_SUPPORT_AVX512BMI)
|
|
|
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx512f -mavx512vbmi")
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx512f -mavx512vbmi")
|
2024-06-19 07:06:09 +00:00
|
|
|
MESSAGE(STATUS "avx512f/avx512bmi enabled by compiler")
|
2024-01-23 07:14:04 +00:00
|
|
|
ENDIF()
|
|
|
|
|
|
2024-06-19 07:06:09 +00:00
|
|
|
IF (COMPILER_SUPPORT_AVX512VL)
|
|
|
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx512vl")
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx512vl")
|
|
|
|
|
MESSAGE(STATUS "avx512vl enabled by compiler")
|
|
|
|
|
ENDIF()
|
2022-12-12 03:24:21 +00:00
|
|
|
ENDIF()
|
2022-03-11 11:39:20 +00:00
|
|
|
|
2023-06-14 09:35:13 +00:00
|
|
|
# build mode
|
2023-06-14 09:31:07 +00:00
|
|
|
SET(CMAKE_C_FLAGS_REL "${CMAKE_C_FLAGS} -Werror -Werror=return-type -fPIC -O3 -Wformat=2 -Wno-format-nonliteral -Wno-format-truncation -Wno-format-y2k")
|
|
|
|
|
SET(CMAKE_CXX_FLAGS_REL "${CMAKE_CXX_FLAGS} -Werror -Wno-reserved-user-defined-literal -Wno-literal-suffix -Werror=return-type -fPIC -O3 -Wformat=2 -Wno-format-nonliteral -Wno-format-truncation -Wno-format-y2k")
|
|
|
|
|
|
|
|
|
|
IF (${BUILD_SANITIZER})
|
|
|
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Werror=return-type -fPIC -gdwarf-2 -fsanitize=address -fsanitize=undefined -fsanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=shift-base -fno-sanitize=alignment -g3 -Wformat=0")
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-literal-suffix -Werror=return-type -fPIC -gdwarf-2 -fsanitize=address -fsanitize=undefined -fsanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=shift-base -fno-sanitize=alignment -g3 -Wformat=0")
|
|
|
|
|
MESSAGE(STATUS "Compile with Address Sanitizer!")
|
|
|
|
|
ELSEIF (${BUILD_RELEASE})
|
|
|
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_REL}")
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_REL}")
|
|
|
|
|
ELSE ()
|
|
|
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Werror=return-type -fPIC -g3 -gdwarf-2 -Wformat=2 -Wno-format-nonliteral -Wno-format-truncation -Wno-format-y2k")
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-reserved-user-defined-literal -g3 -Wno-literal-suffix -Werror=return-type -fPIC -gdwarf-2 -Wformat=2 -Wno-format-nonliteral -Wno-format-truncation -Wno-format-y2k")
|
|
|
|
|
ENDIF ()
|
|
|
|
|
|
2022-03-11 11:39:20 +00:00
|
|
|
ENDIF ()
|