include(${QT_USE_FILE})

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include(Qt4WrapTs)

include_directories(
		command
		gui
		gui/fit
		gui/main
		gui/opt
		gui/opt/style
		gui/opt/terminal
		gui/plot
		opt
		opt/style
		opt/terminal
)

set(cueplot_SRC
		command/fit.cpp
		command/fitmodifier.cpp
		command/fitrange.cpp
		command/plot.cpp
		command/plotmodifier.cpp
		command/plotrange.cpp
		command/plotstyle.cpp
		command/plottitle.cpp
		command/splot.cpp
		gui/configdialog.cpp
		gui/consoledialog.cpp
		gui/filelineedit.cpp
		gui/fitdialog.cpp
		gui/mainwindow.cpp
		gui/optiondialog.cpp
		gui/plotoptiondialog.cpp
		gui/process.cpp
		gui/misc.cpp
		gui/rawcommanddialog.cpp
		gui/fit/fitbasicwidget.cpp
		gui/fit/fitmodifierwidget.cpp
		gui/fit/fitotherswidget.cpp
		gui/fit/fitrangewidget.cpp
		gui/main/plotdatawidget.cpp
		gui/main/plotinputwidget.cpp
		gui/main/plotlistmodel.cpp
		gui/main/plotlistview.cpp
		gui/opt/anglesoptionwidget.cpp
		gui/opt/axisdataoptionwidget.cpp
		gui/opt/axislabeloptionwidget.cpp
		gui/opt/axisoptionwidget.cpp
		gui/opt/axisrangeoptionwidget.cpp
		gui/opt/axisticsoptionwidget.cpp
		gui/opt/baroptionwidget.cpp
		gui/opt/boxwidthoptionwidget.cpp
		gui/opt/dummyoptionwidget.cpp
		gui/opt/encodingoptionwidget.cpp
		gui/opt/formatoptionwidget.cpp
		gui/opt/gridoptionwidget.cpp
		gui/opt/keyoptionwidget.cpp
		gui/opt/logscaleoptionwidget.cpp
		gui/opt/maxisticsoptionwidget.cpp
		gui/opt/mappingoptionwidget.cpp
		gui/opt/outputoptionwidget.cpp
		gui/opt/parametricoptionwidget.cpp
		gui/opt/samplesoptionwidget.cpp
		gui/opt/sizeoptionwidget.cpp
		gui/opt/styleoptionwidget.cpp
		gui/opt/terminaloptionwidget.cpp
		gui/opt/titleoptionwidget.cpp
		gui/opt/viewoptionwidget.cpp
		gui/opt/style/styledataoptionwidget.cpp
		gui/opt/style/stylefilloptionwidget.cpp
		gui/opt/style/stylefunctionoptionwidget.cpp
		gui/opt/terminal/terminalemtexoptionwidget.cpp
		gui/opt/terminal/terminallatexemtexoptionwidget.cpp
		gui/opt/terminal/terminallatexoptionwidget.cpp
		gui/opt/terminal/terminalpbmoptionwidget.cpp
		gui/opt/terminal/terminalpostscriptoptionwidget.cpp
		gui/plot/plotmodifierwidget.cpp
		gui/plot/plototherswidget.cpp
		gui/plot/plotstylewidget.cpp
		gui/plot/plottitlewidget.cpp
		main.cpp
		opt/angles.cpp
		opt/axisdata.cpp
		opt/axislabel.cpp
		opt/axisrange.cpp
		opt/axistics.cpp
		opt/bar.cpp
		opt/boxwidth.cpp
		opt/dummy.cpp
		opt/encoding.cpp
		opt/format.cpp
		opt/grid.cpp
		opt/key.cpp
		opt/logscale.cpp
		opt/maxistics.cpp
		opt/mapping.cpp
		opt/output.cpp
		opt/parametric.cpp
		opt/samples.cpp
		opt/size.cpp
		opt/terminal.cpp
		opt/title.cpp
		opt/view.cpp
		opt/style/styledata.cpp
		opt/style/stylefill.cpp
		opt/style/stylefunction.cpp
		opt/terminal/terminallatexemtex.cpp
		opt/terminal/terminalpbm.cpp
		opt/terminal/terminalpostscript.cpp
)

set(cueplot_MOC_HEADER
		gui/configdialog.h
		gui/consoledialog.h
		gui/filelineedit.h
		gui/fitdialog.h
		gui/mainwindow.h
		gui/optiondialog.h
		gui/plotoptiondialog.h
		gui/process.h
		gui/rawcommanddialog.h
		gui/fit/fitbasicwidget.h
		gui/fit/fitmodifierwidget.h
		gui/fit/fitotherswidget.h
		gui/fit/fitrangewidget.h
		gui/main/plotdatawidget.h
		gui/main/plotinputwidget.h
		gui/main/plotlistmodel.h
		gui/main/plotlistview.h
		gui/main/plotmimedata.h
		gui/opt/abstractoptionwidget.h
		gui/opt/anglesoptionwidget.h
		gui/opt/axisdataoptionwidget.h
		gui/opt/axislabeloptionwidget.h
		gui/opt/axisoptionwidget.h
		gui/opt/axisrangeoptionwidget.h
		gui/opt/axisticsoptionwidget.h
		gui/opt/baroptionwidget.h
		gui/opt/boxwidthoptionwidget.h
		gui/opt/dummyoptionwidget.h
		gui/opt/encodingoptionwidget.h
		gui/opt/formatoptionwidget.h
		gui/opt/gridoptionwidget.h
		gui/opt/keyoptionwidget.h
		gui/opt/logscaleoptionwidget.h
		gui/opt/maxisticsoptionwidget.h
		gui/opt/mappingoptionwidget.h
		gui/opt/outputoptionwidget.h
		gui/opt/parametricoptionwidget.h
		gui/opt/samplesoptionwidget.h
		gui/opt/sizeoptionwidget.h
		gui/opt/styleoptionwidget.h
		gui/opt/terminaloptionwidget.h
		gui/opt/titleoptionwidget.h
		gui/opt/viewoptionwidget.h
		gui/opt/style/styledataoptionwidget.h
		gui/opt/style/stylefilloptionwidget.h
		gui/opt/style/stylefunctionoptionwidget.h
		gui/opt/terminal/terminalemtexoptionwidget.h
		gui/opt/terminal/terminallatexemtexoptionwidget.h
		gui/opt/terminal/terminallatexoptionwidget.h
		gui/opt/terminal/terminalpbmoptionwidget.h
		gui/opt/terminal/terminalpostscriptoptionwidget.h
		gui/plot/abstractplotoptionwidget.h
		gui/plot/plotmodifierwidget.h
		gui/plot/plototherswidget.h
		gui/plot/plotstylewidget.h
		gui/plot/plottitlewidget.h
)

if (APPLE)
	set(cueplot_MOC_HEADER ${cueplot_MOC_HEADER} translator.h)
endif (APPLE)

set(cueplot_TS lang/cueplot_ja_JP.ts lang/qt_ja_JP.ts)

# check for Unix-like OSes except for Mac OS X
# Qt 4.3 and greater contain a Japanese translation (qt_ja_jp.qm).
if (UNIX AND NOT APPLE)
	# Note that CMake 2.4 defines 
	# neither ${QT_VERSION_MAJOR} nor ${QT_VERSION_MINOR}
	if (DEFINED QT_VERSION_MAJOR AND DEFINED QT_VERSION_MINOR)
		# don't install qt_ja_JP.qm if Qt > 4.2 i.e. Qt >= 4.3
		if (QT_VERSION_MAJOR EQUAL 4 AND QT_VERSION_MINOR GREATER 2)
			list(REMOVE_ITEM cueplot_TS lang/qt_ja_JP.ts)
		endif (QT_VERSION_MAJOR EQUAL 4 AND QT_VERSION_MINOR GREATER 2)
	endif (DEFINED QT_VERSION_MAJOR AND DEFINED QT_VERSION_MINOR)
endif (UNIX AND NOT APPLE)

qt4_add_resources(cueplot_QRC cueplot.qrc)
qt4_automoc(${cueplot_SRC})

qt4_wrap_cpp(cueplot_MOC_SRC ${cueplot_MOC_HEADER})
qt4_wrap_ts(cueplot_QM ${cueplot_TS})

# SET_DIR(var value comment)
# set a directory.
# a default directory of ${var} is ${value}.
macro(SET_DIR var value comment)
	set(predefinedvalue "${value}")
	if (NOT DEFINED ${var})
		set(${var} ${predefinedvalue})
	else (NOT DEFINED ${var})
		set(${var} "${${predefinedvalue}}" CACHE PATH "${comment}")
	endif (NOT DEFINED ${var})
endmacro(SET_DIR)

# Mac OS X
if (APPLE)
	set(cueplot_PLIST lang/locversion.plist)
	set(cueplot_LPROJ lang/ja_JP.lproj)
	add_executable(Cueplot MACOSX_BUNDLE ${cueplot_PLIST}
		${cueplot_QM} ${cueplot_SRC} ${cueplot_MOC_SRC} ${cueplot_QRC})
	set_source_files_properties(${cueplot_QM} PROPERTIES 
		MACOSX_PACKAGE_LOCATION MacOS)
	set_source_files_properties(${cueplot_PLIST} PROPERTIES 
		MACOSX_PACKAGE_LOCATION Resources)

	# need more options?
	set_target_properties(Cueplot PROPERTIES LINK_FLAGS 
		"-framework AppKit -liconv")
	
	target_link_libraries(Cueplot ${QT_LIBRARIES})

	# set install dir
	set_dir(BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/Applications"
			"The install dir for executables (default is ${CMAKE_INSTALL_PREFIX}/Applications)")

	file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${cueplot_LPROJ})

	install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Cueplot.app 
		DESTINATION ${BIN_INSTALL_DIR}
		# "Cueplot" file is executable
		REGEX "Cueplot.app$|Contents$|MacOS$|Resources$|Cueplot$"
		# rwxrwxr-x
		PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
		GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
		REGEX "qm$|plist$"
		# rw-rw-r--
		PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE WORLD_READ)
	install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${cueplot_LPROJ} 
		DESTINATION ${BIN_INSTALL_DIR}/Cueplot.app/Contents/Resources
		PATTERN "*.lproj"
		# rwxrwxr-x
		PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
		GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
		PATTERN svn EXCLUDE)

else (APPLE)
	add_executable(cueplot 
		${cueplot_QM} ${cueplot_SRC} ${cueplot_MOC_SRC} ${cueplot_QRC})
	target_link_libraries(cueplot ${QT_LIBRARIES})
	# Unix-like OSes except for Mac OS X
	if (UNIX)
		# set install dir
		set_dir(BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin"
			"The install dir for executables (default is ${CMAKE_INSTALL_PREFIX}/bin)")
		set_dir(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib" 
			"The install dir for libraries (default is ${CMAKE_INSTALL_PREFIX}/lib)")
		set_dir(XDG_APPS_INSTALL_DIR
			"${CMAKE_INSTALL_PREFIX}/share/applications" "The XDG apps dir")

		install(FILES ${cueplot_QM} DESTINATION ${LIB_INSTALL_DIR}/cueplot)
		install(FILES cueplot.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
		install(TARGETS cueplot RUNTIME DESTINATION ${LIB_INSTALL_DIR}/cueplot)
		# file(MAKE_DIRECTORY "$ENV{DESTDIR}/usr/bin")
		install(SCRIPT CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${BIN_INSTALL_DIR}\")")
		# exec_program(/usr/bin/cmake ARGS -E create_symlink 
		# 		/usr/lib/cueplot/cueplot "$ENV{DESTDIR}/usr/bin/cueplot")
		install(SCRIPT CODE "exec_program(${CMAKE_COMMAND} ARGS -E create_symlink ${LIB_INSTALL_DIR}/cueplot/cueplot \"\$ENV{DESTDIR}${BIN_INSTALL_DIR}/cueplot\")")
	endif (UNIX)
endif (APPLE)
