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

X
Xiaoyu Wang 已提交
3
set(CMAKE_VERBOSE_MAKEFILE OFF)
wafwerar's avatar
wafwerar 已提交
4

wafwerar's avatar
wafwerar 已提交
5 6 7 8 9 10 11 12 13 14
#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 已提交
15 16 17 18
if (NOT DEFINED TD_GRANT)
  SET(TD_GRANT FALSE)
endif()

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

27 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
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 ()

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

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

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

105
ELSE ()
wafwerar's avatar
wafwerar 已提交
106 107
    IF (${TD_DARWIN})
        set(CMAKE_MACOSX_RPATH 0)
wafwerar's avatar
wafwerar 已提交
108
    ENDIF ()
haoranc's avatar
haoranc 已提交
109 110 111 112 113 114 115 116
    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 已提交
117
    IF (${BUILD_SANITIZER})
wafwerar's avatar
wafwerar 已提交
118 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")
        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -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")
S
Shengliang Guan 已提交
120
	      MESSAGE(STATUS "Will compile with Address Sanitizer!")
121
    ELSE ()
122 123
        SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Werror=return-type -fPIC -gdwarf-2 -g3 -Wformat=2 -Wno-format-nonliteral -Wno-format-truncation -Wno-format-y2k")
        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wno-literal-suffix -Werror=return-type -fPIC -gdwarf-2 -g3 -Wformat=2 -Wno-format-nonliteral -Wno-format-truncation -Wno-format-y2k")
124 125
    ENDIF ()

126
    INCLUDE(CheckCCompilerFlag)
X
xinsheng Ren 已提交
127 128 129
    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"))
130
        SET(COMPILER_SUPPORT_SSE42 true)
131
        MESSAGE(STATUS "Always enable sse4.2 for Clang/AppleClang")
132 133 134 135 136 137 138
    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)
139

140
    IF (COMPILER_SUPPORT_SSE42)
141 142 143
        SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2")
        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2")
    ENDIF()
144
    IF (COMPILER_SUPPORT_FMA)
145 146 147 148 149
        SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfma")
        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfma")
    ENDIF()

    IF ("${SIMD_SUPPORT}" MATCHES "true")
150
        IF (COMPILER_SUPPORT_AVX)
151 152
            SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx")
            SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx")
H
Haojun Liao 已提交
153
        ENDIF()
154
        IF (COMPILER_SUPPORT_AVX2)
155 156
            SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx2")
            SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2")
157
        ENDIF()
158 159
        MESSAGE(STATUS "SIMD instructions (AVX/AVX2) is ACTIVATED")
    ENDIF()
160 161

ENDIF ()