cmake_minimum_required(VERSION 3.8.0)
project(meschach)

if(MSVC)
  add_compile_options(/W3 /wd4005 /wd4996 /wd4018 -D_CRT_SECURE_NO_WARNINGS)
endif()

set(meschach_srcs
  bdfactor.c
  bkpfacto.c
  chfactor.c
  copy.c
  err.c
  extras.c
  fft.c
  givens.c
  hessen.c
  hsehldr.c
  init.c
  iter0.c
  iternsym.c
  itersym.c
  ivecop.c
  lufactor.c
  machine.c
  matlab.c
  matop.c
  matrixio.c
  meminfo.c
  memory.c
  memstat.c
  mfunc.c
  norm.c
  otherio.c
  pxop.c
  qrfactor.c
  schur.c
  solve.c
  sparse.c
  sparseio.c
  spbkp.c
  spchfctr.c
  splufctr.c
  sprow.c
  spswap.c
  submat.c
  svd.c
  symmeig.c
  update.c
  vecop.c
  version.c
  zcopy.c
  zfunc.c
  zgivens.c
  zhessen.c
  zhsehldr.c
  zlufctr.c
  zmachine.c
  zmatio.c
  zmatlab.c
  zmatop.c
  zmemory.c
  znorm.c
  zqrfctr.c
  zschur.c
  zsolve.c
  ztorture.c
  zvecop.c
)
file(GLOB  meschach_headers "*.h")

include_directories(".")

if(BUILD_SHARED_LIBS)
  set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
endif()

add_library(meschach ${meschach_srcs})
target_compile_definitions(meschach PRIVATE -DHAVE_MEMORY_H -DHAVE_COMPLEX_H)

install(
  TARGETS meschach
  RUNTIME DESTINATION bin
  LIBRARY DESTINATION lib
  ARCHIVE DESTINATION lib
)
if(NOT DISABLE_INSTALL_HEADERS)
  install(FILES ${meschach_headers} DESTINATION include/meschach)
endif()
