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

PROJECT(MRIConvert)

cmake_minimum_required( VERSION 2.6 )

if (WIN32)
  set( wxWidgets_ROOT_DIR C:/wxWidgets-2.8.12 )
  set( BOOST_ROOT c:/boost_1_52_0 )
else (WIN32)
  set( wxWidgets_ROOT_DIR /usr )
  set( wxWidgets_USE_DEBUG OFF )
  set( wxWidgets_USE_UNICODE ON )
  set( wxWidgets_USE_SHARED OFF )
  set( wxWidgets_USE_UNIVERSAL OFF )
  ## Uncomment for gnu debug.
  ##set( CMAKE_CXX_FLAGS " -ggdb ${CMAKE_CXX_FLAGS} " )
endif (WIN32)

set(CMAKE_VERBOSE_MAKEFILE TRUE)
set(EXECUTABLE_OUTPUT_PATH "release")

## Setup for wxWidgets
set( wxWidgets_USE_LIBS adv core base )
find_package(wxWidgets REQUIRED)
if (wxWidgets_FOUND)
  message ( "wxWidgets_FOUND" )
  include( ${wxWidgets_USE_FILE} )
endif (wxWidgets_FOUND)
  
## Setup for Boost.
set( Boost_USE_STATIC_LIBS TRUE )
find_package( Boost COMPONENTS program_options REQUIRED )
if (Boost_FOUND)
  include_directories( ${Boost_INCLUDE_DIRS} )
  link_directories( ${Boost_LIBRARY_DIRS} )
endif (Boost_FOUND)
  
message ( "boost libraries: ${Boost_LIBRARIES}" )
message ( "wx lib: ${wxWidgets_LIBRARIES}" )
    
message( "System name ${CMAKE_HOST_SYSTEM_NAME}" )

if ( ${CMAKE_HOST_APPLE} )
  message( "OS X build" )

  ##set( CMAKE_OSX_ARCHITECTURES "x86_64")
  set( CMAKE_OSX_ARCHITECTURES "i386")

  set( MACOSX_BUNDLE_INFO_STRING "MRIConvert-mcverter" )
  set( MACOSX_BUNDLE_ICON_FILE "MRIConvert.icns" )
  set( MACOSX_BUNDLE_GUI_IDENTIFIER "edu.uoregon.lcni.MRIConvert" )
  set( MACOSX_BUNDLE_LONG_VERSION_STRING "version 2.0.x" )
  set( MACOSX_BUNDLE_BUNDLE_NAME "MRIConvert" )
  set( MACOSX_BUNDLE_SHORT_VERSION_STRING "version short" )
  set( MACOSX_BUNDLE_BUNDLE_VERSION "2.0" )
  set( MACOSX_BUNDLE_COPYRIGHT "copyright" )
endif ( ${CMAKE_HOST_APPLE} )

ADD_EXECUTABLE ( MRIConvert WIN32 MACOSX_BUNDLE
	AchievaDtiHandler.cpp
  AnalyzeOptionsDlg.cpp
  AnalyzeOutputter.cpp
	AnalyzeVolume.cpp
	Basic3DOutputter.cpp
  BasicOptionsDlg.cpp
	BasicVolumeFormat.cpp
	BvFiles.cpp
  BvOptionsDlg.cpp
	Converter.cpp
  DicomElement.cpp
  DicomElementInstance.cpp
	DicomFile.cpp
  DicomTag.cpp
	DicomTree.cpp
	DicomViewer.cpp
	Dictionary.cpp
  EnhancedMrHandler.cpp
	FslNiftiOutputter.cpp
  GeDti2Handler.cpp
  GeDtiRbHandler.cpp
  GeEpiHandler.cpp
  Globals.cpp
	HandlerFactory.cpp
	ImageView.cpp
	InfoFrame.cpp
  MainHeader.cpp
	MRIConvert.cpp
	McFrame.cpp
	McPanel.cpp
	MessageList.cpp
  MetaHeader.cpp
  MetaOptionsDlg.cpp
	NewBvOutputter.cpp
	NewMetaOutputter.cpp
	NewMetaVolume.cpp
	NewSpmOutputter.cpp
	NewSpmVolume.cpp
  NiftiOptionsDlg.cpp
	NiftiOutputter.cpp
	NiftiVolume.cpp
  NoOptionsDlg.cpp
  NumarisMosaicHandler.cpp
	OutputFactory.cpp
	OutputList.cpp
	OutputTreeNew.cpp
	OutputterBase.cpp
  OverrideDlg.cpp
	OverwriteDlg.cpp
	OptionsDialogs.cpp
  Preamble.cpp
	SeriesHandler.cpp
  SpmOptionsDlg.cpp
	StringConvert.cpp
  SyngoHandler.cpp
  SyngoMosaicHandler.cpp
	TextFileViewer.cpp
  ValueRepresentations.cpp
	Volume.cpp
	jcsTree.cpp

	AchievaDtiHandler.h
  AnalyzeOptionsDlg.h
  AnalyzeOutputter.h
	AnalyzeVolume.h
	Basic3DOutputter.h
  BasicOptionsDlg.h
	BasicVolumeFormat.h
	BvFiles.h
  BvOptionsDlg.h
	ByteSwap.h
	Converter.h
  DicomElement.h
  DicomElementInstance.h
	DicomFile.h
  DicomTag.h
  DicomTags.h
	DicomTree.h
	DicomViewer.h
	Dictionary.h
  EnhancedMrHandler.h
	FslNiftiOutputter.h
  GeDti2Handler.h
  GeDtiRbHandler.h
  GeEpiHandler.h
  Globals.h
	HandlerFactory.h
	ImageView.h
	InfoFrame.h
  MainHeader.h
	MRIConvert.h
	McFrame.h
	McPanel.h
	MessageList.h
  MetaHeader.h
  MetaOptionsDlg.h
	NewBvOutputter.h
	NewMetaOutputter.h
	NewMetaVolume.h
	NewSpmOutputter.h
	NewSpmVolume.h
  NiftiOptionsDlg.h
	NiftiOutputter.h
	NiftiVolume.h
  NoOptionsDlg.h
  NumarisMosaicHandler.h
	OptionsDialogs.h
	OutputFactory.h
	OutputList.h
	OutputTreeNew.h
	OutputterBase.h
  OverrideDlg.h
	OverwriteDlg.h
  Preamble.h
	ReadStream.h
	SeriesHandler.h
  SpmOptionsDlg.h
	StringConvert.h
  SyngoHandler.h
  SyngoMosaicHandler.h
	TextFileViewer.h
  ValueRepresentations.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
  MRIConvert.icns
)

ADD_EXECUTABLE ( mcverter
	McVerter.cpp
  AchievaDtiHandler.cpp
  AnalyzeOutputter.cpp
	AnalyzeVolume.cpp
	Basic3DOutputter.cpp
	BasicVolumeFormat.cpp
	BvFiles.cpp
	Converter.cpp
  DicomElement.cpp
  DicomElementInstance.cpp
	DicomFile.cpp
  DicomTag.cpp
	Dictionary.cpp
  EnhancedMrHandler.cpp
	FslNiftiOutputter.cpp
  GeDti2Handler.cpp
  GeDtiRbHandler.cpp
  GeEpiHandler.cpp
  Globals.cpp
	HandlerFactory.cpp
  MainHeader.cpp
  MetaHeader.cpp
	NewBvOutputter.cpp
	NewMetaOutputter.cpp
	NewMetaVolume.cpp
	NewSpmOutputter.cpp
	NewSpmVolume.cpp
	NiftiOutputter.cpp
	NiftiVolume.cpp
  NumarisMosaicHandler.cpp
	OutputFactory.cpp
	OutputList.cpp
	OutputterBase.cpp
  Preamble.cpp
	SeriesHandler.cpp
	StringConvert.cpp
  SyngoHandler.cpp
  SyngoMosaicHandler.cpp
  ValueRepresentations.cpp
	Volume.cpp

	McVerter.h
  AchievaDtiHandler.h
	AnalyzeOutputter.h
	AnalyzeVolume.h
	Basic3DOutputter.h
	BasicVolumeFormat.h
	BvFiles.h
	ByteSwap.h
	Converter.h
  DicomElement.h
  DicomElementInstance.h
	DicomFile.h
  DicomTag.h
  DicomTags.h
	Dictionary.h
  EnhancedMrHandler.h
	FslNiftiOutputter.h
  GeDti2Handler.h
  GeDtiRbHandler.h
  GeEpiHandler.h
  Globals.h
	HandlerFactory.h
  MainHeader.h
  MetaHeader.h
	NewBvOutputter.h
	NewMetaOutputter.h
	NewMetaVolume.h
	NewSpmOutputter.h
	NewSpmVolume.h
	NiftiOutputter.h
	NiftiVolume.h
  NumarisMosaicHandler.h
	OutputFactory.h
	OutputterBase.h
  Preamble.h
	ReadStream.h
	SeriesHandler.h
	StringConvert.h
  SyngoHandler.h
  SyngoMosaicHandler.h
  ValueRepresentations.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
	  comctl32
	  rpcrt4
	  ${Boost_LIBRARIES}
    ${wxWidgets_LIBRARIES}
  )

  TARGET_LINK_LIBRARIES ( mcverter
	  comctl32
	  rpcrt4
	  ${Boost_LIBRARIES}
    ${wxWidgets_LIBRARIES}
  )

else (WIN32)

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

  set_source_files_properties(
        MRIConvert.icns
        PROPERTIES
        MACOSX_PACKAGE_LOCATION Resources
        )

endif (WIN32)
