#####################################################
## CMakeLists.txt for MRIConvert and mcverter
##

PROJECT(MRIConvert)

cmake_minimum_required( VERSION 2.6 )


## The stuff under "else (win32)" should also work under windows,
## but it didn't for me.
## I didn't want to spend a lot of time getting it to work, so
## I just set up the win32 stuff manually.

IF (WIN32)
  SET(WX_PATH CACHE PATH "wxWidgets directory")
  INCLUDE_DIRECTORIES(${WX_PATH}/include ${WX_PATH}/lib/vc_lib/msw )
  LINK_DIRECTORIES( ${WX_PATH}/lib/vc_lib)
ELSE (WIN32)

  SET(CMAKE_VERBOSE_MAKEFILE TRUE)
  SET(CMAKE_OSX_ARCHITECTURES "x86_64")
  SET(EXECUTABLE_OUTPUT_PATH "release")

  
  ## Convert to UsewxWidgets.cmake.
  ## Automagically sets CXX_DEFINES; add_definitions no longer needed, 
  ## and, in fact, will pollute the time line if used.
  ## Setup for wxWidgets.
  SET(WXW_USE_DEBUG OFF)
  SET(WXW_USE_UNICODE ON)
  SET(WXW_USE_SHARED OFF)
  SET(WXW_USE_UNIV OFF)
  SET(WXW_USE_MONO OFF)
  SET(WXW_FILE_VERSION "29")
  SET(WXW_VERSION "2.9")
  SET( wxWidgets_ROOT_DIR /usr )
  SET( wxWidgets_USE_LIBS base core )
  FIND_PACKAGE( wxWidgets REQUIRED )
  INCLUDE( ${wxWidgets_USE_FILE} )
  SET( CMAKE_CXX_FLAGS " -DWX_PRECOMP ${CMAKE_CXX_FLAGS} ${wxWidgets_CXX_FLAGS} " )
  INCLUDE_DIRECTORIES( ${wxWidgets_INCLUDE_DIRS} )
  LINK_DIRECTORIES( ${wxWidgets_LIBRARY_DIRS} )
  message( "wxWidgets Library Dirs ${wxWidgets_LIBRARY_DIRS}" )
  message("XXX ${wxWidgets_LIBRARIES}")

  ## Setup for Boost.
  ##set(Boost_DEBUG 1)
  set( Boost_USE_STATIC_LIBS TRUE )
  find_package( Boost COMPONENTS program_options REQUIRED )
  include_directories( ${Boost_INCLUDE_DIRS} )
  link_directories( ${Boost_LIBRARY_DIRS} )
  ## This should reference a static library.
  message("XXX ${Boost_LIBRARIES}")

  ## Uncomment for gnu debug.
  ##SET( CMAKE_CXX_FLAGS " -ggdb ${CMAKE_CXX_FLAGS} " )
  
ENDIF (WIN32)

message( "System name ${CMAKE_HOST_SYSTEM_NAME}" )

IF ( ${CMAKE_HOST_APPLE} )
  message( "OS X build" )
message ("Shared: ${WXW_USE_SHARED}" )
  ##SET( CMAKE_CXX_FLAGS " -m32 ${CMAKE_CXX_FLAGS} " )
  SET( MACOSX_BUNDLE_INFO_STRING "MRIConvert - version 2.0" )
  SET( MACOSX_BUNDLE_BUNDLE_VERSION "2.0" )
  # Change following line to point to actual icns file in bundle.
  SET( MACOSX_BUNDLE_ICON_FILE "MRIConvert.icns" )
  SET( MACOSX_BUNDLE_GUI_IDENTIFIER "edu.uoregon.lcni.MRIConvert" )
  SET( MACOSX_BUNDLE_BUNDLE_NAME "MRIConvert" )
## SET_SOURCE_FILES_PROPERTIES(${ICON_FILE_PATH} PROPERTIES
##                             MACOSX_PACKAGE_LOCATION Resources)
ENDIF ( ${CMAKE_HOST_APPLE} )

ADD_EXECUTABLE ( MRIConvert WIN32 MACOSX_BUNDLE
	AnalyzeOutputter.cpp
	AnalyzeVolume.cpp
	Basic3DOutputter.cpp
	BasicVolumeFormat.cpp
	BvFiles.cpp
	Converter.cpp
	DicomFile.cpp
	DicomTree.cpp
	DicomViewer.cpp
	Dictionary.cpp
	FslNiftiOutputter.cpp
	HandlerFactory.cpp
	ImageView.cpp
	InfoFrame.cpp
	MRIConvert.cpp
	McFrame.cpp
	McPanel.cpp
	MessageList.cpp
	NewBvOutputter.cpp
	NewMetaOutputter.cpp
	NewMetaVolume.cpp
	NewSpmOutputter.cpp
	NewSpmVolume.cpp
	NiftiOutputter.cpp
	NiftiVolume.cpp
	OutputFactory.cpp
	OutputList.cpp
	OutputTreeNew.cpp
	OutputterBase.cpp
	OverwriteDlg.cpp
	OptionsDialogs.cpp
	SeriesHandler.cpp
	StringConvert.cpp
	TextFileViewer.cpp
	Volume.cpp
	jcsTree.cpp

	AnalyzeOutputter.h
	AnalyzeVolume.h
	Basic3DOutputter.h
	BasicVolumeFormat.h
	BvFiles.h
	ByteSwap.h
	Converter.h
	DicomFile.h
	DicomTree.h
	DicomViewer.h
	Dictionary.h
	FslNiftiOutputter.h
	HandlerFactory.h
	ImageView.h
	InfoFrame.h
	MRIConvert.h
	McFrame.h
	McPanel.h
	MessageList.h
	NewBvOutputter.h
	NewMetaOutputter.h
	NewMetaVolume.h
	NewSpmOutputter.h
	NewSpmVolume.h
	NiftiOutputter.h
	NiftiVolume.h
	OptionsDialogs.h
	OutputFactory.h
	OutputList.h
	OutputTreeNew.h
	OutputterBase.h
	OverwriteDlg.h
	ReadStream.h
	SeriesHandler.h
	StringConvert.h
	TextFileViewer.h
	Volume.h
	jcsTree.h
	nifti1.h
	metaTypes.h
	resource.h
	fileformats.h
	version_string.h

	DicomFile.txx
	SeriesHandler.txx
	NewBvOutputter.txx
	Basic3DOutputter.txx

	MRIConvert.ico
)

ADD_EXECUTABLE ( mcverter
	McVerter.cpp
	AnalyzeOutputter.cpp
	AnalyzeVolume.cpp
	Basic3DOutputter.cpp
	BasicVolumeFormat.cpp
	BvFiles.cpp
	Converter.cpp
	DicomFile.cpp
	Dictionary.cpp
	FslNiftiOutputter.cpp
	HandlerFactory.cpp
	NewBvOutputter.cpp
	NewMetaOutputter.cpp
	NewMetaVolume.cpp
	NewSpmOutputter.cpp
	NewSpmVolume.cpp
	NiftiOutputter.cpp
	NiftiVolume.cpp
	OutputFactory.cpp
	OutputList.cpp
	OutputterBase.cpp
	SeriesHandler.cpp
	StringConvert.cpp
	Volume.cpp

	McVerter.h
	AnalyzeOutputter.h
	AnalyzeVolume.h
	Basic3DOutputter.h
	BasicVolumeFormat.h
	BvFiles.h
	ByteSwap.h
	Converter.h
	DicomFile.h
	Dictionary.h
	FslNiftiOutputter.h
	HandlerFactory.h
	NewBvOutputter.h
	NewMetaOutputter.h
	NewMetaVolume.h
	NewSpmOutputter.h
	NewSpmVolume.h
	NiftiOutputter.h
	NiftiVolume.h
	OutputFactory.h
	OutputterBase.h
	ReadStream.h
	SeriesHandler.h
	StringConvert.h
	Volume.h
	nifti1.h
	metaTypes.h
	resource.h
	fileformats.h
	version_string.h

	DicomFile.txx
	SeriesHandler.txx
	NewBvOutputter.txx
	Basic3DOutputter.txx
)


IF (WIN32)

  TARGET_LINK_LIBRARIES ( MRIConvert

	optimized wxbase28u
	optimized wxmsw28u_core
	optimized wxjpeg
	optimized wxpng
	optimized wxtiff
	optimized wxzlib
	debug     wxbase28ud
	debug     wxmsw28ud_core
	debug     wxjpegd
	debug     wxtiffd
	debug     wxpngd
	debug     wxzlibd
	          comctl32
	          rpcrt4
	${Boost_LIBRARIES}
  )

  TARGET_LINK_LIBRARIES ( mcverter

	optimized wxbase28u
	optimized wxmsw28u_core
	debug     wxbase28ud
	debug     wxmsw28ud_core
	          comctl32
	      	  rpcrt4
	${Boost_LIBRARIES}
  )

ELSE (WIN32)

  TARGET_LINK_LIBRARIES( MRIConvert ${wxWidgets_LIBRARIES} ${Boost_LIBRARIES} )
  TARGET_LINK_LIBRARIES( mcverter ${wxWidgets_LIBRARIES} ${Boost_LIBRARIES} )

ENDIF (WIN32)

