project( vym )
cmake_minimum_required( VERSION 2.6 )

if( NOT CMAKE_BUILD_TYPE )
	set( CMAKE_BUILD_TYPE Debug )
endif( NOT CMAKE_BUILD_TYPE )

if( CMAKE_COMPILER_IS_GNUCXX )
	add_definitions ( -Wall )
endif( CMAKE_COMPILER_IS_GNUCXX )

if( UNIX AND NOT APPLE )
    set( NO_DBUS_DEFAULT OFF )
else( UNIX AND NOT APPLE )
    set( NO_DBUS_DEFAULT ON )
endif( UNIX AND NOT APPLE )

option( NO_DBUS "Build vym without dbus support" ${NO_DBUS_DEFAULT} )

find_package ( Qt4 REQUIRED )
include ( ${QT_USE_FILE} )
add_definitions( ${QT_DEFINITIONS} )

if( WIN32 )
	add_definitions( -DUNICODE -D_USE_MATH_DEFINES )
	if( MSVC )
		set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:wchar_t-" )
	endif( MSVC )
endif( WIN32 )

find_package( cppcheck )
if(CPPCHECK_FOUND)
	set(_cppcheck_args)
	list(APPEND _cppcheck_args ${CPPCHECK_INCLUDEPATH_ARG} ${CMAKE_SOURCE_DIR})
# 	list(APPEND _cppcheck_args ${CPPCHECK_INCLUDEPATH_ARG} ${QT_QTCORE_INCLUDE_DIR})
# 	list(APPEND _cppcheck_args ${CPPCHECK_INCLUDEPATH_ARG} ${QT_QTDBUS_INCLUDE_DIR})
# 	list(APPEND _cppcheck_args ${CPPCHECK_INCLUDEPATH_ARG} ${QT_QTGUI_INCLUDE_DIR})
# 	list(APPEND _cppcheck_args ${CPPCHECK_INCLUDEPATH_ARG} ${QT_QTNETWORK_INCLUDE_DIR})
# 	list(APPEND _cppcheck_args ${CPPCHECK_INCLUDEPATH_ARG} ${QT_QTXML_INCLUDE_DIR})
# 	list(APPEND _cppcheck_args ${CPPCHECK_INCLUDEPATH_ARG} ${QT_QTSVG_INCLUDE_DIR})

	list(APPEND _cppcheck_args "enable" "all")
	
	add_custom_target(
		cppcheck
		COMMAND 
		"${CPPCHECK_EXECUTABLE}"
		${CPPCHECK_TEMPLATE_ARG}
		${CPPCHECK_QUIET_ARG}
		"--force"
#		"--std=c++11"
		${_cppcheck_args}
		${CMAKE_SOURCE_DIR}
	)

	message(STATUS "cppcheck target added.")
endif(CPPCHECK_FOUND)

include_directories (
	${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
	${QT_QTCORE_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR} ${QT_QTNETWORK_INCLUDE_DIR} ${QT_QTXML_INCLUDE_DIR} ${QT_QTSVG_INCLUDE_DIR}
	)

if(NOT NO_DBUS )
    include_directories( ${QT_QTDBUS_INCLUDE_DIR} )
endif(NOT NO_DBUS )

set ( vym_HDRS
      aboutdialog.h
      taskfiltermodel.h
      animpoint.h
      attribute.h
      attributeitem.h
      #   attributedelegate.h
      #   attributedialog.h
      #   attributewidget.h
      branchitem.h
      branchobj.h
      branchpropeditor.h
      bugagent.h
      command.h
      dockeditor.h
      downloadagent.h
      editxlinkdialog.h
      exportoofiledialog.h
      exporthtmldialog.h
      exports.h
      extrainfodialog.h
      file.h
      findwidget.h
      findresultwidget.h
      findresultitem.h
      findresultmodel.h
      flag.h
      flagobj.h
      flagrowobj.h
      flagrow.h
      floatimageobj.h
      floatobj.h
      frameobj.h
      geometry.h
      headingeditor.h
      headingobj.h
      highlighter.h
      historywindow.h
      imageitem.h
      imageobj.h
      imports.h
      lineeditdialog.h
      linkablemapobj.h
      macros.h
      mainwindow.h
      mapeditor.h
      mapitem.h
      mapobj.h
      misc.h
      mysortfilterproxymodel.h
      noteeditor.h
      noteobj.h
      options.h
      ornamentedobj.h
      parser.h
      process.h
      scripteditor.h
      settings.h
      shortcuts.h
      showtextdialog.h
      slidecontrolwidget.h
      slideeditor.h
      slideitem.h
      slidemodel.h
      task.h
      taskeditor.h
      taskmodel.h
      treedelegate.h
      treeeditor.h
      treeitem.h
      treemodel.h
      texteditor.h
      version.h
      vymmodel.h
      vymview.h
      winter.h
      warningdialog.h
      xlink.h
      xlinkitem.h
      xlinkobj.h
      xml-base.h
      xml-vym.h
      xml-freemind.h
      xmlobj.h
      xsltproc.h
	)

set ( vym_SRCS
      aboutdialog.cpp
      taskfiltermodel.cpp
      animpoint.cpp
      attribute.cpp
      attributeitem.cpp
      #   attributedelegate.cpp
      #   attributedialog.cpp
      #   attributewidget.cpp
      branchitem.cpp
      branchobj.cpp
      branchpropeditor.cpp
      bugagent.cpp
      command.cpp
      dockeditor.cpp
      downloadagent.cpp
      editxlinkdialog.cpp
      exportoofiledialog.cpp
      exports.cpp
      exporthtmldialog.cpp
      extrainfodialog.cpp
      file.cpp
      findwidget.cpp
      findresultwidget.cpp
      findresultitem.cpp
      findresultmodel.cpp
      flag.cpp
      flagobj.cpp
      flagrow.cpp
      flagrowobj.cpp
      floatimageobj.cpp
      floatobj.cpp
      frameobj.cpp
      geometry.cpp
      headingeditor.cpp
      headingobj.cpp
      highlighter.cpp
      historywindow.cpp
      imageitem.cpp
      imageobj.cpp
      imports.cpp
      lineeditdialog.cpp
      linkablemapobj.cpp
      macros.cpp
      main.cpp
      mainwindow.cpp
      mapeditor.cpp
      mapitem.cpp
      mapobj.cpp
      misc.cpp
      mysortfilterproxymodel.cpp
      noteeditor.cpp
      noteobj.cpp
      options.cpp
      ornamentedobj.cpp
      parser.cpp
      process.cpp
      scripteditor.cpp
      settings.cpp
      shortcuts.cpp
      showtextdialog.cpp
      slidecontrolwidget.cpp
      slideeditor.cpp
      slideitem.cpp
      slidemodel.cpp
      task.cpp
      taskeditor.cpp
      taskmodel.cpp
      texteditor.cpp
      treedelegate.cpp
      treeeditor.cpp
      treeitem.cpp
      treemodel.cpp
      version.cpp
      vymmodel.cpp
      vymview.cpp
      winter.cpp
      warningdialog.cpp
      xlink.cpp
      xlinkitem.cpp
      xlinkobj.cpp
      xml-base.cpp
      xml-vym.cpp
      xml-freemind.cpp
      xmlobj.cpp
      xsltproc.cpp
	)

set ( vym_UIS
      attributewidget.ui
      branchpropeditor.ui
      exporthtmldialog.ui
      extrainfodialog.ui
      editxlinkdialog.ui
      historywindow.ui
      lineeditdialog.ui
      scripteditor.ui
      showtextdialog.ui
      warningdialog.ui
	)
QT4_WRAP_UI(UIS ${vym_UIS})

set ( vym_TRS
	lang/vym_de_DE.ts
	lang/vym_en.ts
	lang/vym_es.ts
	lang/vym_fr.ts
	lang/vym_it.ts
	lang/vym_pt_BR.ts
	lang/vym_ru.ts
	lang/vym_sv.ts
	lang/vym_zh_CN.ts
	lang/vym_zh_TW.ts
	lang/vym_cs_CZ.ts
	)
QT4_ADD_TRANSLATION(TRS ${vym_TRS})

set ( vym_MOCS
      aboutdialog.h
      branchpropeditor.h
      bugagent.h
      dockeditor.h
      downloadagent.h
      editxlinkdialog.h
      exportoofiledialog.h
      exporthtmldialog.h
      extrainfodialog.h
      findwidget.h
      findresultwidget.h
      findresultmodel.h
      headingeditor.h
      highlighter.h
      historywindow.h
      lineeditdialog.h
      mainwindow.h
      mapeditor.h
      mysortfilterproxymodel.h
      noteeditor.h
      process.h
      scripteditor.h
      showtextdialog.h
      slidecontrolwidget.h
      slideeditor.h
      slidemodel.h
      taskeditor.h
      taskmodel.h
      treedelegate.h
      treeeditor.h
      treemodel.h
      texteditor.h
      vymmodel.h
      vymview.h
      winter.h
      warningdialog.h
	)
if( NOT NO_DBUS )
    add_definitions(-DVYM_DBUS)
    list(APPEND vym_HDRS adaptormodel.h adaptorvym.h)
    list(APPEND vym_SRCS adaptormodel.cpp adaptorvym.cpp)
    list(APPEND vym_MOCS adaptormodel.h adaptorvym.h)
endif( NOT NO_DBUS )
QT4_WRAP_CPP(MOCS ${vym_MOCS})



if( WIN32 )
	set( vym_SRCS ${vym_SRCS} mkdtemp.cpp vym.rc )
endif( WIN32 )

add_executable ( vym WIN32 ${vym_SRCS} ${UIS} ${RSCS} ${TRS} ${MOCS} )
target_link_libraries ( vym  ${QT_QTMAIN_LIBRARY} ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTXML_LIBRARY} ${QT_QTSVG_LIBRARY} )
if( NOT NO_DBUS )
    target_link_libraries( vym ${QT_QTDBUS_LIBRARY} )
endif( NOT NO_DBUS )

install( TARGETS vym RUNTIME DESTINATION bin )

set( _installfolders demos exports flags icons macros scripts styles )
install( DIRECTORY ${_installfolders} DESTINATION share/vym )
install( FILES ${TRS} DESTINATION share/vym/lang )
