cmake_minimum_required(VERSION 3.5)
project(Adept)
set (CMAKE_CXX_STANDARD 11)

message("JULIA=${JULIA}")
execute_process(COMMAND ${JULIA} -e "import ADCME; print(ADCME.__STR__)" OUTPUT_VARIABLE JL_OUT)
list(GET JL_OUT 0 BINDIR)
list(GET JL_OUT 1 LIBDIR)
list(GET JL_OUT 2 TF_INC)
list(GET JL_OUT 3 TF_ABI)
list(GET JL_OUT 4 PREFIXDIR)
list(GET JL_OUT 5 CC)
list(GET JL_OUT 6 CXX)
list(GET JL_OUT 7 CMAKE)
list(GET JL_OUT 8 MAKE)
list(GET JL_OUT 9 GIT)
list(GET JL_OUT 10 PYTHON)
list(GET JL_OUT 11 TF_LIB_FILE)

message("Python path=${PYTHON}")
message("PREFIXDIR=${PREFIXDIR}")
message("TF_INC=${TF_INC}")
message("TF_ABI=${TF_ABI}")
message("TF_LIB_FILE=${TF_LIB_FILE}")

set(CMAKE_BUILD_TYPE Release)
if(MSVC)
set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG")
else()
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
endif()

include_directories(../include ../include/adept)
find_library(LIBOPENBLAS openblas HINTS ${LIBDIR})

message("Use openblas library ${LIBOPENBLAS}")
file(GLOB ALLSRC
    "${CMAKE_SOURCE_DIR}/*.cpp"
)

IF(MSVC)
add_library(adept STATIC ${ALLSRC})
ELSE()
add_library(adept SHARED ${ALLSRC})
ENDIF()
add_definitions(-DHAVE_BLAS)

set_property(TARGET adept PROPERTY POSITION_INDEPENDENT_CODE ON)

target_link_libraries(adept ${LIBOPENBLAS})
set_target_properties(adept PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${LIBDIR} RUNTIME_OUTPUT_DIRECTORY_RELEASE ${LIBDIR} ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${LIBDIR})
