SET(HEADERS "")
SET(SOURCES "")
SET(IMPORTEDLIBS "")

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/AMD/Include)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/BTF/Include)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/CAMD/Include)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/CCOLAMD/Include)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/COLAMD/Include)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/KLU/Include)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/UFconfig)

file(GLOB AMD_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/AMD/Include/*.h)
file(GLOB BTF_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/BTF/Include/*.h)
file(GLOB CAMD_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/CAMD/Include/*.h)
file(GLOB CCOLAMD_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/CCOLAMD/Include/*.h)
file(GLOB COLAMD_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/COLAMD/Include/*.h)
file(GLOB KLU_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/KLU/Include/*.h)

file(GLOB AMD_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/AMD/Source/*.c)
file(GLOB BTF_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/BTF/Source/*.c)
file(GLOB CAMD_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CAMD/Source/*.c)
file(GLOB CCOLAMD_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CCOLAMD/Source/*.c)
file(GLOB COLAMD_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/COLAMD/Source/*.c)
file(GLOB KLU_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/KLU/Source/*.c)

SET(HEADERS ${AMD_HEADERS}
   ${BTF_HEADERS}
   ${CAMD_HEADERS}
   ${CCOLAMD_HEADERS}
   ${COLAMD_HEADERS}
   ${KLU_HEADERS}
   ${CMAKE_CURRENT_SOURCE_DIR}/UFconfig/trilinos_UFconfig.h
   )

SET(SOURCES ${AMD_SOURCES}
   ${BTF_SOURCES}
   ${CAMD_SOURCES}
   ${CCOLAMD_SOURCES}
   ${COLAMD_SOURCES}
   ${KLU_SOURCES}
   ${CMAKE_CURRENT_SOURCE_DIR}/UFconfig/trilinos_UFconfig.h
   )

SET_SOURCE_FILES_PROPERTIES(${SOURCES},
                PROPERTIES
                LANGUAGE C)

IF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
  IF(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)
     SET_SOURCE_FILES_PROPERTIES(${SOURCES},
             PROPERTIES
             COMPILE_FLAGS "-Wno-all -Wno-pedantic")
  ENDIF()
ENDIF()

# LibM not available under MSVC.
IF(NOT MSVC)
  # Add libm linking for ceil, floor and such.
  LIST(APPEND IMPORTEDLIBS m)
ENDIF()

TRIBITS_ADD_LIBRARY(
  trilinosss
  HEADERS ${HEADERS}
  SOURCES ${SOURCES}
  IMPORTEDLIBS ${IMPORTEDLIBS}
  )
