
set(CNGFX_SRCS ./CNFG3D.c ./CNFGFunctions.c)
IF(UNIX)
  check_include_file("X11/Xlib.h" HAVE_X11_H)

  IF(HAVE_X11_H) 
    list(APPEND CNGFX_SRCS ./CNFGXDriver.c)
    set(CNGFX_LIBS X11)
  else()
    SET(CNGFX_SRCS)
  endif()
elseif(WIN32)
  list(APPEND CNGFX_SRCS ./CNFGWinDriver.c)
endif()

if(CNGFX_SRCS)
  add_library(CNGFX ${CNGFX_SRCS})
  set_target_properties(CNGFX PROPERTIES FOLDER "libraries")
  target_link_libraries(CNGFX ${CNGFX_LIBS})
endif()

add_library(mpfit STATIC mpfit/mpfit.c)
target_link_libraries(mpfit cnmatrix)
set_target_properties(mpfit PROPERTIES LINKER_LANGUAGE C)
set_target_properties(mpfit PROPERTIES FOLDER "libraries")

macro(find_library_path var pkg)
  find_library(${var}_RAWFIND ${pkg} ${ARGN})
  if(${var}_RAWFIND)
    set(${var} ${${var}_RAWFIND})
    message("Found ${pkg} at ${${var}}")
  else()
    message("Could not find ${pkg}")
    set(${var} ${pkg})
  endif()
endmacro()
find_library_path(CBLAS_LOCATION cblas HINTS /usr/local/opt/openblas/lib)
find_library_path(OPENBLAS_LOCATION openblas HINTS /usr/local/opt/openblas/lib)
find_library_path(LAPACKE_LOCATION lapacke HINTS /usr/local/opt/lapack/lib)

if(USE_OPENBLAS OR WIN32)
  set(BLAS_BACKEND "openblas")
  include_directories(openblas)
else()
  set(BLAS_BACKEND "${CBLAS_LOCATION}")  
  find_file(CBLAS_FULL_PATH cblas.h HINT "/usr/local/opt/openblas/include")
  message("Searching for 'cblas.h'; found at ${CBLAS_FULL_PATH}")
  IF(CBLAS_FULL_PATH)
    get_filename_component(CBLAS_PATH ${CBLAS_FULL_PATH} DIRECTORY)
    include_directories( ${CBLAS_PATH})
  ENDIF()
endif()


check_include_file(lapacke/lapacke.h LAPACKE_FILE)
if(LAPACKE_FILE)
  add_definitions(-DLAPACKE_FOLDER)
endif()

if(USE_EIGEN)
    message("Using eigen backend")
else()
    message("Using blas backend ${BLAS_BACKEND}")
endif()

IF (ENABLE_TESTS)
	add_executable(lintest linmath.c linmath.h lintest.c)
	target_link_libraries(lintest cnmatrix)
	set_target_properties(lintest PROPERTIES FOLDER "tests")

	add_test(NAME lintest COMMAND lintest)
ENDIF()

install(TARGETS mpfit DESTINATION lib)
