CMAKE_MINIMUM_REQUIRED(VERSION 3.0...3.20)
PROJECT(TDengine)

INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/client/inc)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/query/inc)
INCLUDE_DIRECTORIES(inc)

IF (TD_LINUX)
  AUX_SOURCE_DIRECTORY(./src SRC)
  LIST(REMOVE_ITEM SRC ./src/shellWindows.c)
  LIST(REMOVE_ITEM SRC ./src/shellDarwin.c)
  ADD_EXECUTABLE(shell ${SRC})

  IF (TD_LINUX AND TD_WEBSOCKET)
      ADD_DEFINITIONS(-DWEBSOCKET -I${CMAKE_BINARY_DIR}/build/include -ltaosws)
      SET(LINK_WEBSOCKET "-L${CMAKE_BINARY_DIR}/build/lib -ltaosws")
      ADD_DEPENDENCIES(shell taosws-rs)
  ELSE ()
      SET(LINK_WEBSOCKET "")
  ENDIF ()

  IF (TD_LINUX_64 AND JEMALLOC_ENABLED)
      ADD_DEFINITIONS(-DTD_JEMALLOC_ENABLED -I${CMAKE_BINARY_DIR}/build/include -L${CMAKE_BINARY_DIR}/build/lib -Wl,-rpath,${CMAKE_BINARY_DIR}/build/lib -ljemalloc)
      SET(LINK_JEMALLOC "-L${CMAKE_BINARY_DIR}/build/lib -ljemalloc")
      ADD_DEPENDENCIES(shell jemalloc)
  ELSE ()
      SET(LINK_JEMALLOC "")
  ENDIF ()

  IF (TD_SOMODE_STATIC)
      TARGET_LINK_LIBRARIES(shell taos_static cJson ${LINK_LUA} ${LINK_JEMALLOC} ${LINK_WEBSOCKET})
  ELSE ()
      TARGET_LINK_LIBRARIES(shell taos cJson ${LINK_LUA} ${LINK_JEMALLOC} ${LINK_WEBSOCKET})
  ENDIF ()

  SET_TARGET_PROPERTIES(shell PROPERTIES OUTPUT_NAME taos)
ELSEIF (TD_WINDOWS)
  ADD_DEFINITIONS(-DUNICODE)
  ADD_DEFINITIONS(-D_UNICODE)
  LIST(APPEND SRC ./src/shellEngine.c)
  LIST(APPEND SRC ./src/shellMain.c)
  LIST(APPEND SRC ./src/shellWindows.c)
  ADD_EXECUTABLE(shell ${SRC})
  IF (JEMALLOC_ENABLED)
    ADD_DEPENDENCIES(shell jemalloc)
  ENDIF ()

  TARGET_LINK_LIBRARIES(shell taos_static cJson)
  SET_TARGET_PROPERTIES(shell PROPERTIES OUTPUT_NAME taos)

ELSEIF (TD_DARWIN)
  LIST(APPEND SRC ./src/shellEngine.c)
  LIST(APPEND SRC ./src/shellMain.c)
  LIST(APPEND SRC ./src/shellDarwin.c)
  LIST(APPEND SRC ./src/shellCommand.c)
  LIST(APPEND SRC ./src/shellImport.c)
  LIST(APPEND SRC ./src/shellCheck.c)
  ADD_EXECUTABLE(shell ${SRC})
  # linking with dylib
  TARGET_LINK_LIBRARIES(shell taos cJson)
  # linking taos statically
  # TARGET_LINK_LIBRARIES(shell taos_static)
  SET_TARGET_PROPERTIES(shell PROPERTIES OUTPUT_NAME taos)
ENDIF ()

