cmake.define 6.3 KB
Newer Older
1
cmake_minimum_required(VERSION 3.0)
2

dengyihao's avatar
dengyihao 已提交
3
set(CMAKE_VERBOSE_MAKEFILE OFF)
4
set(TD_BUILD_TAOSA_INTERNAL FALSE)
wafwerar's avatar
wafwerar 已提交
5

wafwerar's avatar
wafwerar 已提交
6 7 8 9 10 11 12 13 14 15
#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})

wafwerar's avatar
wafwerar 已提交
16 17 18 19
if (NOT DEFINED TD_GRANT)
  SET(TD_GRANT FALSE)
endif()

20 21 22 23 24 25 26 27
IF ("${WEBSOCKET}" MATCHES "true")
    SET(TD_WEBSOCKET TRUE)
    MESSAGE("Enable websocket")
    ADD_DEFINITIONS(-DWEBSOCKET)
ELSE ()
    SET(TD_WEBSOCKET FALSE)
ENDIF ()

28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
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 ()

55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
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 ()

IF (TD_WINDOWS)
    MESSAGE("${Yellow} set compiler flag for Windows! ${ColourReset}")
wafwerar's avatar
wafwerar 已提交
83
    SET(COMMON_FLAGS "/w /D_WIN32 /DWIN32 /Zi /MTd")
wafwerar's avatar
wafwerar 已提交
84
    SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
wafwerar's avatar
wafwerar 已提交
85 86 87
    # IF (MSVC AND (MSVC_VERSION GREATER_EQUAL 1900))
    #  SET(COMMON_FLAGS "${COMMON_FLAGS} /Wv:18")
    # ENDIF ()
88 89 90 91 92 93
    IF (CMAKE_DEPFILE_FLAGS_C)
        SET(CMAKE_DEPFILE_FLAGS_C "")
    ENDIF ()
    IF (CMAKE_DEPFILE_FLAGS_CXX)
        SET(CMAKE_DEPFILE_FLAGS_CXX "")
    ENDIF ()
wafwerar's avatar
wafwerar 已提交
94 95 96 97 98 99
    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 ()
wafwerar's avatar
wafwerar 已提交
100 101 102

    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_FLAGS}")
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_FLAGS}")
103

wafwerar's avatar
wafwerar 已提交
104 105
    SET(JEMALLOC_ENABLED OFF)

106
ELSE ()
wafwerar's avatar
wafwerar 已提交
107 108
    IF (${TD_DARWIN})
        set(CMAKE_MACOSX_RPATH 0)
wafwerar's avatar
wafwerar 已提交
109
    ENDIF ()
haoranc's avatar
haoranc 已提交
110 111 112 113 114 115 116 117
    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 ()

S
Shengliang Guan 已提交
118
    IF (${BUILD_SANITIZER})
wafwerar's avatar
wafwerar 已提交
119
        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")
dengyihao's avatar
dengyihao 已提交
120
        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")
H
Haojun Liao 已提交
121
	      MESSAGE(STATUS "Compile with Address Sanitizer!")
D
dapan1121 已提交
122
    ELSEIF (${BUILD_RELEASE})
haoranc's avatar
haoranc 已提交
123
        SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Werror=return-type -fPIC -O3 -Wformat=2 -Wno-format-nonliteral -Wno-format-truncation -Wno-format-y2k")
124
        SET(CMAKE_CXX_FLAGS "${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")
125
    ELSE ()
126 127
        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")
128 129
    ENDIF ()

H
Haojun Liao 已提交
130
    # disable all assert
H
Haojun Liao 已提交
131
    IF ((${DISABLE_ASSERT} MATCHES "true") OR (${DISABLE_ASSERTS} MATCHES "true"))
H
Haojun Liao 已提交
132 133 134 135
        ADD_DEFINITIONS(-DDISABLE_ASSERT)
        MESSAGE(STATUS "Disable all asserts")
    ENDIF()

136
    INCLUDE(CheckCCompilerFlag)
X
xinsheng Ren 已提交
137 138 139
    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"))
140
        SET(COMPILER_SUPPORT_SSE42 true)
141
        MESSAGE(STATUS "Always enable sse4.2 for Clang/AppleClang")
142 143 144 145 146 147 148
    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)
149

150
    IF (COMPILER_SUPPORT_SSE42)
151 152 153 154 155
        SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2")
        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2")
    ENDIF()

    IF ("${SIMD_SUPPORT}" MATCHES "true")
156 157 158 159 160
       IF (COMPILER_SUPPORT_FMA)
           SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfma")
           SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfma")
       ENDIF()
       IF (COMPILER_SUPPORT_AVX)
161 162
            SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx")
            SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx")
H
Haojun Liao 已提交
163
        ENDIF()
164
        IF (COMPILER_SUPPORT_AVX2)
165 166
            SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx2")
            SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2")
167
        ENDIF()
H
Haojun Liao 已提交
168
        MESSAGE(STATUS "SIMD instructions (FMA/AVX/AVX2) is ACTIVATED")
169
    ENDIF()
170 171

ENDIF ()