cmake_minimum_required(VERSION ${MIN_VER_CMAKE})
tbp_clear_vars(EXTRA_LIBS)
tbp_clear_vars(TBPLAS_MODULES)

# add include modules
# This section must be generated with tools/link_order.py.
list(APPEND TBPLAS_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/tbpm)
list(APPEND TBPLAS_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/diag)
list(APPEND TBPLAS_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/materials)
list(APPEND TBPLAS_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/adapter)
list(APPEND TBPLAS_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/builder)
list(APPEND TBPLAS_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/base)
list(APPEND EXTRA_LIBS ${TARGET_TBPM})
list(APPEND EXTRA_LIBS ${TARGET_DIAG})
list(APPEND EXTRA_LIBS ${TARGET_MATERIALS})
list(APPEND EXTRA_LIBS ${TARGET_ADAPTER})
list(APPEND EXTRA_LIBS ${TARGET_BUILDER})
list(APPEND EXTRA_LIBS ${TARGET_BASE})

if(WITH_CUDA)
  list(APPEND TBPLAS_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/cuda)
  list(APPEND EXTRA_LIBS ${TARGET_CUDA})
endif()

# set output path
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/out)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/out)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/out)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/out)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/out)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/out)
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/out)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/out)


# ========================== TBPLAS modules ==========================
message(STATUS "")
message(STATUS "  TBPLAS modules:")

foreach(__module ${TBPLAS_MODULES})
  add_subdirectory(${__module})
  message(STATUS "    To be built:" ${__module})
endforeach()
if(POLICY CMP0079)  
  cmake_policy(SET CMP0079 NEW)
endif()
