109 lines
4.4 KiB
Plaintext
109 lines
4.4 KiB
Plaintext
cmake_minimum_required(VERSION 3.16)
|
|
|
|
set(CMAKE_VERBOSE_MAKEFILE OFF)
|
|
|
|
SET(BUILD_SHARED_LIBS "OFF")
|
|
|
|
#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})
|
|
|
|
find_package(Git QUIET)
|
|
if(GIT_FOUND AND EXISTS "${TD_SOURCE_DIR}/.git")
|
|
# Update submodules as needed
|
|
option(GIT_SUBMODULE "Check submodules during build" ON)
|
|
if(GIT_SUBMODULE)
|
|
message(STATUS "Submodule update")
|
|
execute_process(COMMAND cd ${TD_SOURCE_DIR} && ${GIT_EXECUTABLE} submodule update --init --recursive
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
RESULT_VARIABLE GIT_SUBMOD_RESULT)
|
|
if(NOT GIT_SUBMOD_RESULT EQUAL "0")
|
|
message(WARNING "git submodule update --init --recursive failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT EXISTS "${TD_SOURCE_DIR}/tools/taos-tools/CMakeLists.txt")
|
|
message(WARNING "The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules manually if you need build them.")
|
|
endif()
|
|
|
|
if (NOT DEFINED TD_GRANT)
|
|
SET(TD_GRANT FALSE)
|
|
endif()
|
|
|
|
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}")
|
|
SET(COMMON_FLAGS "/W3 /D_WIN32")
|
|
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
|
|
# IF (MSVC AND (MSVC_VERSION GREATER_EQUAL 1900))
|
|
# SET(COMMON_FLAGS "${COMMON_FLAGS} /Wv:18")
|
|
# ENDIF ()
|
|
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_FLAGS}")
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_FLAGS}")
|
|
|
|
ELSE ()
|
|
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 ()
|
|
|
|
IF (${SANITIZER} MATCHES "true")
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Werror=return-type -fPIC -gdwarf-2 -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=null -fno-sanitize=alignment -static-libasan -g3")
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Werror=return-type -fPIC -gdwarf-2 -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=null -fno-sanitize=alignment -static-libasan -g3")
|
|
MESSAGE(STATUS "Will compile with Address Sanitizer!")
|
|
ELSE ()
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Werror=return-type -fPIC -gdwarf-2 -g3")
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-literal-suffix -Werror=return-type -fpermissive -fPIC -gdwarf-2 -g3")
|
|
ENDIF ()
|
|
|
|
MESSAGE("System processor ID: ${CMAKE_SYSTEM_PROCESSOR}")
|
|
IF (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64")
|
|
ADD_DEFINITIONS("-D_TD_ARM_")
|
|
ELSE ()
|
|
ADD_DEFINITIONS("-msse4.2")
|
|
IF("${FMA_SUPPORT}" MATCHES "true")
|
|
MESSAGE(STATUS "turn fma function support on")
|
|
ADD_DEFINITIONS("-mfma")
|
|
ELSE ()
|
|
MESSAGE(STATUS "turn fma function support off")
|
|
ENDIF()
|
|
ENDIF ()
|
|
|
|
ENDIF ()
|