CMakeLists.txt 4.1 KB
Newer Older
1
CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
F
freemine 已提交
2 3
PROJECT(TDengine)

4 5 6 7 8 9 10 11 12
macro(check_odbc_requirement)
  find_package(FLEX)
  IF (NOT FLEX_FOUND)
    message(WARNING "you need to install flex first")
    return ()
  ENDIF ()
  IF (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_LESS 5.0.0)
    message(WARNING "gcc 4.8.0 will complain too much about flex-generated code, we just bypass building ODBC driver in such case")
    return ()
13
  ENDIF ()
F
freemine 已提交
14

15 16 17
  find_program(TD_ODBCINST_INSTALLED NAMES odbcinst)
  IF (NOT TD_ODBCINST_INSTALLED)
    IF (TD_DARWIN)
18
      message(WARNING "unixodbc is not installed yet, you may install it under macOS by typing: brew install unixodbc")
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
    ELSE ()
      message(WARNING "odbcinst is not installed yet, you may install it under Ubuntu by typing: sudo apt install odbcinst")
    ENDIF ()
    return ()
  ENDIF ()

  find_program(TD_ISQL_INSTALLED NAMES isql)
  IF (NOT TD_ISQL_INSTALLED)
    IF (TD_DARWIN)
      message(WARNING "unixodbc is not installed yet, you may install it under macOS by typing: brew install unixodbc")
    ELSE ()
      message(WARNING "unixodbc is not installed yet, you may install it under Ubuntu by typing: sudo apt install unixodbc")
    ENDIF ()
    return ()
  ENDIF ()

  find_program(TD_PKG_CONFIG_INSTALLED NAMES pkg-config)
  IF (NOT TD_PKG_CONFIG_INSTALLED)
    IF (TD_DARWIN)
      message(WARNING "pkg-config is not installed yet, you may install it under macOS by typing: brew install pkg-config")
    ELSE ()
      message(WARNING "pkg-config is not installed yet, you may install it under Ubuntu by typing: sudo apt install pkg-config")
    ENDIF ()
    return ()
F
freemine 已提交
43
  ENDIF ()
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

  EXECUTE_PROCESS(COMMAND pkg-config --variable=includedir odbc ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE ODBC_INCLUDE_DIRECTORY)
  EXECUTE_PROCESS(COMMAND pkg-config --variable=libdir odbc ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE ODBC_LIBRARY_DIRECTORY)
  EXECUTE_PROCESS(COMMAND pkg-config --libs-only-L odbc ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE ODBC_LINK_OPTIONS)

  EXECUTE_PROCESS(COMMAND pkg-config --variable=includedir odbcinst ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE ODBCINST_INCLUDE_DIRECTORY)
  EXECUTE_PROCESS(COMMAND pkg-config --variable=libdir odbcinst ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE ODBCINST_LIBRARY_DIRECTORY)
  EXECUTE_PROCESS(COMMAND pkg-config --libs-only-L odbcinst ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE ODBCINST_LINK_OPTIONS)

  include(CheckSymbolExists)

  set(CMAKE_REQUIRED_LIBRARIES odbc odbcinst)
  set(CMAKE_REQUIRED_INCLUDES ${ODBC_INCLUDE_DIRECTORY} ${ODBCINST_INCLUDE_DIRECTORY})
  set(CMAKE_REQUIRED_LINK_OPTIONS ${ODBC_LINK_OPTIONS} ${ODBCINST_LINK_OPTIONS})

  check_symbol_exists(SQLExecute "sql.h" HAVE_ODBC_DEV)
  IF (NOT HAVE_ODBC_DEV)
    message(WARNING "odbc requirement not satisfied, check detail in ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log")
    return ()
  ENDIF ()

  check_symbol_exists(SQLInstallODBC "odbcinst.h" HAVE_ODBCINST_DEV)
  IF (NOT HAVE_ODBCINST_DEV)
    message(WARNING "odbc requirement not satisfied, check detail in ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log")
    return ()
  ENDIF ()

endmacro()
F
freemine 已提交
72

F
freemine 已提交
73
IF (TD_WINDOWS_64)
74 75
  find_package(ODBC)
  if (NOT ODBC_FOUND)
F
freemine 已提交
76
    message(WARNING "you need to install ODBC first")
77 78 79 80 81
  else ()
    message(STATUS "ODBC_INCLUDE_DIRS: ${ODBC_INCLUDE_DIRS}")
    message(STATUS "ODBC_LIBRARIES: ${ODBC_LIBRARIES}")
    message(STATUS "ODBC_CONFIG: ${ODBC_CONFIG}")
  endif ()
F
freemine 已提交
82 83
  find_package(FLEX)
  if(NOT FLEX_FOUND)
84 85 86
    message(WARNING "you need to install flex first\n"
                    "you may go to: https://github.com/lexxmark/winflexbison\n"
                    "or download from: https://github.com/lexxmark/winflexbison/releases")
F
freemine 已提交
87 88
  else ()
    ADD_SUBDIRECTORY(src)
89
    ADD_SUBDIRECTORY(tools)
F
freemine 已提交
90
    ADD_SUBDIRECTORY(examples)
F
freemine 已提交
91
  endif()
92 93 94 95 96 97 98 99 100
ELSE ()
  check_odbc_requirement()
  IF (TD_DARWIN)
    SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wconversion")
    SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wconversion")
  ENDIF ()
  ADD_SUBDIRECTORY(src)
  ADD_SUBDIRECTORY(tools)
  ADD_SUBDIRECTORY(examples)
F
freemine 已提交
101
ENDIF ()
F
freemine 已提交
102