cmake_minimum_required(VERSION 3.2)
project(hercules_tensorflow)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# fix tensorflow-python missing some header files
ADD_DEFINITIONS(-DHERCULES_SCRIPT_TENSORFLOW_PYTHON_MODE)

IF (NOT CMAKE_HERCULES_TF_COMPILE_FLAGS)
    MESSAGE(STATUS "CMAKE_HERCULES_TF_COMPILE_FLAGS has not been set, use setup.py to install.")
    RETURN(-1)
ENDIF()
MESSAGE(STATUS "CMAKE_HERCULES_TF_COMPILE_FLAGS: ${CMAKE_HERCULES_TF_COMPILE_FLAGS}")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_HERCULES_TF_COMPILE_FLAGS}")

IF (NOT CMAKE_HERCULES_TF_LIB_PATHS)
    MESSAGE(STATUS "CMAKE_HERCULES_TF_LIB_PATHS has not been set, use setup.py to install.")
    RETURN(-1)
ENDIF()
MESSAGE(STATUS "CMAKE_HERCULES_TF_LIB_PATHS: ${CMAKE_HERCULES_TF_LIB_PATHS}")
FOREACH(HERCULES_OR_TF_LIB_PATH ${CMAKE_HERCULES_TF_LIB_PATHS})
    LINK_DIRECTORIES(${HERCULES_OR_TF_LIB_PATH})
ENDFOREACH()

INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/)

SET(CMAKE_CXX_FLAGS "-g -O2 -std=c++14 -fPIC -w -fpermissive -pthread ${CMAKE_CXX_FLAGS}")
MESSAGE(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")

FILE(GLOB_RECURSE HERCULES_TENSORFLOW_SRCS RELATIVE ${CMAKE_SOURCE_DIR}  "src/*.cc")

SET(BUILD_TARGET hercules_tensorflow+tensorflow${CMAKE_TENSORFLOW_VERSION})
ADD_LIBRARY(${BUILD_TARGET} SHARED ${HERCULES_TENSORFLOW_SRCS})

# Link against Hercules and TensorFlow
IF (NOT CMAKE_HERCULES_TF_LIB_NAMES)
    MESSAGE(STATUS "CMAKE_HERCULES_TF_LIB_NAMES has not been set, use setup.py to install.")
    RETURN(-1)
ENDIF()
MESSAGE(STATUS "CMAKE_HERCULES_TF_LIB_NAMES: ${CMAKE_HERCULES_TF_LIB_NAMES}")
FOREACH(HERCULES_OR_TF_LIB_NAME ${CMAKE_HERCULES_TF_LIB_NAMES})
    TARGET_LINK_LIBRARIES(${BUILD_TARGET} PUBLIC ${HERCULES_OR_TF_LIB_NAME})
ENDFOREACH()
