## NOTE: On mavericks you need to edit mexopts.sh to match required compiler options.
##  vim /Applications/Matlab_R2013b.app/bin/mexopts.sh
find_package(Matlab COMPONENTS MX_LIBRARY ENG_LIBRARY REQUIRED)

find_package(VTK 7 REQUIRED)
include(${VTK_USE_FILE})

find_package(ITK 4.5 REQUIRED)
include(${ITK_USE_FILE})

#####################
#####################
# Provide a macro to build the mex files from
# within CMake
#####################
# BuildMex.cmake
# \author Kent Williams norman-k-williams@uiowa.edu
# \author Hans J. Johnson hans-johnson@uiowa.edu
include(CMakeParseArguments)
#
# BuildMex -- arguments
# MEXNAME = root of mex library name
# TARGETDIR = location for the mex library files to be created
# SOURCE = list of source files
# LIBRARIES = libraries needed to link mex library
macro(BuildMex)
  set(oneValueArgs MEXNAME TARGETDIR)
  set(multiValueArgs SOURCE LIBRARIES)
  cmake_parse_arguments(BuildMex "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

  # message("MEXNAME=${BuildMex_MEXNAME} SOURCE=${BuildMex_SOURCE} LIBRARIES=${BuildMex_LIBRARIES}")
#--  set_source_files_properties(${BuildMex_SOURCE} COMPILE_DEFINITIONS -DMatlab_MEX_FILE )
  matlab_add_mex(
      NAME ${BuildMex_MEXNAME}
      SRC ${BuildMex_SOURCE}
#--      [OUTPUT_NAME output_name]
#--      [DOCUMENTATION file.txt]
      LINK_TO ${BuildMex_LIBRARIES}
#--      [...]
  )
endmacro()

matlab_add_mex(
      NAME itkLoadWithMetadata
      SRC itkLoadWithMetadata.cxx nrrdCommon.cxx
#--      [DOCUMENTATION file.txt]
      LINK_TO ${ITK_LIBRARIES} ${VTK_LIBRARIES}
)
target_include_directories(itkLoadWithMetadata PRIVATE ${Matlab_INCLUDE_DIRS})

matlab_add_mex(
      NAME itkSaveWithMetadata
      SRC itkSaveWithMetadata.cxx nrrdCommon.cxx
#--      [DOCUMENTATION file.txt]
      LINK_TO ${ITK_LIBRARIES} ${VTK_LIBRARIES}
)
target_include_directories(itkSaveWithMetadata PRIVATE ${Matlab_INCLUDE_DIRS})

matlab_add_mex(
      NAME vtkLoadPolyData
      SRC vtkLoadPolyData.cxx
#--      [DOCUMENTATION file.txt]
      LINK_TO ${VTK_LIBRARIES}
)
target_include_directories(vtkLoadPolyData PRIVATE ${Matlab_INCLUDE_DIRS})

matlab_add_mex(
      NAME vtkSavePolyData
      SRC vtkSavePolyData.cxx
#--      [DOCUMENTATION file.txt]
      LINK_TO ${VTK_LIBRARIES}
)
target_include_directories(vtkSavePolyData PRIVATE ${Matlab_INCLUDE_DIRS})


if(0)
BuildMex(MEXNAME itkLoadWithMetadata
  TARGETDIR "${${SUPERBUILD_TOPLEVEL_PROJECT}_SOURCE_DIR}/MATLAB_SCRIPTS"
  SOURCE itkLoadWithMetadata.cxx nrrdCommon.cxx
  LIBRARIES ${ITK_LIBRARIES} ${VTK_LIBRARIES})
BuildMex(MEXNAME itkSaveWithMetadata
  TARGETDIR "${${SUPERBUILD_TOPLEVEL_PROJECT}_SOURCE_DIR}/MATLAB_SCRIPTS"
  SOURCE itkSaveWithMetadata.cxx nrrdCommon.cxx
  LIBRARIES ${ITK_LIBRARIES} ${VTK_LIBRARIES})

BuildMex(MEXNAME vtkLoadPolyData
  TARGETDIR "${${SUPERBUILD_TOPLEVEL_PROJECT}_SOURCE_DIR}/MATLAB_SCRIPTS"
  SOURCE vtkLoadPolyData.cxx
  LIBRARIES ${VTK_LIBRARIES} )

BuildMex(MEXNAME vtkSavePolyData
  TARGETDIR "${${SUPERBUILD_TOPLEVEL_PROJECT}_SOURCE_DIR}/MATLAB_SCRIPTS"
  SOURCE vtkSavePolyData.cxx
  LIBRARIES ${VTK_LIBRARIES} )

endif()
