PROJECT(maxflowmex)

IF(WIN32)	# Windows
	
	SET(MATLAB_LIB [HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.11;MATLABROOT]/extern/lib/win64/microsoft
		[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.10;MATLABROOT]/extern/lib/win64/microsoft
		[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.8;MATLABROOT]/extern/lib/win64/microsoft
		[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.7;MATLABROOT]/extern/lib/win64/microsoft
		[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.11;MATLABROOT]/extern/lib/win32/microsoft
		[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.10;MATLABROOT]/extern/lib/win32/microsoft
    		[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.8;MATLABROOT]/extern/lib/win32/microsoft
		[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.7;MATLABROOT]/extern/lib/win32/microsoft)
	SET(MATLAB_INC "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.11;MATLABROOT]/extern/include"
		"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.10;MATLABROOT]/extern/include"
		"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.8;MATLABROOT]/extern/include"
		"[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\7.7;MATLABROOT]/extern/include")

	FIND_LIBRARY(MATLAB_MEX_LIBRARY
    		libmex
		${MATLAB_LIB}
    	)
  	FIND_LIBRARY(MATLAB_MX_LIBRARY
    		libmx
    		${MATLAB_LIB}
    	)
  	FIND_LIBRARY(MATLAB_ENG_LIBRARY
    		libeng
    		${MATLAB_LIB}
    	)

	FIND_PATH(MATLAB_INCLUDE
		"mex.h"
		${MATLAB_INC}
	)

ELSE(WIN32)	# Linux

	SET(MATLAB_LIB $ENV{HOME}/Matlab/bin/glnxa64 
		/opt/Matlab/bin/glnxa64
		$ENV{HOME}/Matlab/bin/glnx86
		/opt/Matlab/bin/glnx86)
	SET(MATLAB_INC "$ENV{HOME}/Matlab/extern/include/"
		"/opt/Matlab/extern/include/")

	FIND_LIBRARY(MATLAB_MEX_LIBRARY
    		mex
		${MATLAB_LIB}
    	)
  	FIND_LIBRARY(MATLAB_MX_LIBRARY
    		mx
    		${MATLAB_LIB}
    	)
  	FIND_LIBRARY(MATLAB_ENG_LIBRARY
    		eng
    		${MATLAB_LIB}
    	)

	FIND_PATH(MATLAB_INCLUDE
		"mex.h"
		${MATLAB_INC}
	)

ENDIF(WIN32)

INCLUDE_DIRECTORIES(
	${MATLAB_INCLUDE}
)

#FIND_PACKAGE(ITK REQUIRED)
#INCLUDE(${ITK_USE_FILE})

ADD_LIBRARY(maxflowmex MODULE
	maxflowmex.cpp
	maxflow-3.01/maxflow.cpp
	maxflow-3.01/graph.cpp
	maxflow-3.01/graph.h
	maxflow-3.01/instances.inc
	maxflow-3.01/block.h
)

IF(WIN32)	# Windows
	IF(CMAKE_SIZEOF_VOID_P EQUAL 4)		# 32 bits
    		SET_TARGET_PROPERTIES(maxflowmex PROPERTIES SUFFIX ".mexw32")

	ELSE(CMAKE_SIZEOF_VOID_P EQUAL 4)	# 64 bits
    		SET_TARGET_PROPERTIES(maxflowmex PROPERTIES SUFFIX ".mexw64")
  	ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 4)

ELSE(WIN32)	# Linux

	IF(CMAKE_SIZEOF_VOID_P EQUAL 4)		# Linux x86
    		SET_TARGET_PROPERTIES(maxflowmex PROPERTIES SUFFIX ".mexglx" PREFIX "")

	ELSE(CMAKE_SIZEOF_VOID_P EQUAL 4)	# Linux x64
    		SET_TARGET_PROPERTIES(maxflowmex PROPERTIES SUFFIX ".mexa64" PREFIX "")
  	ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 4)
		
ENDIF(WIN32)

ADD_DEFINITIONS(-DMATLAB_MEX_FILE)

IF(WIN32)
	SET_TARGET_PROPERTIES(maxflowmex
		PROPERTIES
		LINK_FLAGS "/export:mexFunction"
	)
ENDIF(WIN32)

SET(MATLAB_LIBRARIES
  	${MATLAB_MEX_LIBRARY}
  	${MATLAB_MX_LIBRARY}
  	${MATLAB_ENG_LIBRARY}
)

TARGET_LINK_LIBRARIES(maxflowmex 
#	${ITK_LIBRARIES}
	${MATLAB_LIBRARIES}	
)

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
