project(simon)

cmake_minimum_required(VERSION 2.6)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})

if(WIN32)
SET(CPACK_GENERATOR "NSIS")
endif(WIN32)
if(UNIX)
SET(DESTDIR "/usr")
SET(CPACK_SET_DESTDIR "ON") 
SET(CPACK_GENERATOR "DEB;STGZ")
#SET(CPACK_GENERATOR "RPM")
endif(UNIX)

INCLUDE(InstallRequiredSystemLibraries)

IF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
	SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE amd64)
	SET(CPACK_RPM_PACKAGE_ARCHITECTURE "x86_64")
ELSEIF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i686")
	SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386)
	SET(CPACK_RPM_PACKAGE_ARCHITECTURE "i386")
ENDIF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")

SET(CPACK_DEBIAN_PACKAGE_DEPENDS  "kdelibs5 (>=4.1.4-0ubuntu1), kdebase-runtime, libqtcore4, libqtgui4, libstdc++6, libasound2, zlib1g, libc6, libportaudio2, libqt4-sql-sqlite, flex")
SET(CPACK_DEBIAN_PACKAGE_CONFLICTS  "julius julius-simon")
SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA 
	"${CMAKE_CURRENT_SOURCE_DIR}/package/deb/postinst;${CMAKE_CURRENT_SOURCE_DIR}/package/deb/postrm")

SET(CPACK_PACKAGE_CONTACT "SIMON listens <support@simon-listens.org>")
SET(CPACK_DEBIAN_PACKAGE_SECTION "utils")
SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")

SET(CPACK_RPM_PACKAGE_LICENCE "GNU General Public License (GPL)")
SET(CPACK_RPM_PACKAGE_GROUP " Productivity/Multimedia/Sound/Utilities")
SET(CPACK_RPM_PACKAGE_REQUIRES "kdelibs4 >= 4.1.0, kdebase4-runtime, libasound2, zlib, portaudio, libqt4-sql, libqt4-sql-sqlite, libqt4-x11, libqt4")

SET(CPACK_PACKAGE_NAME "simon")
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Open-Source Speech Recognition")
SET(CPACK_PACKAGE_DESCRIPTION "simon provides an easy to use interface to the open-source speech recognizer julius (this package shipps it's own modified version of julius) and the HTK (has to be installed sperately).\n\nsimon does not include a speech model but provides the means to create it's own.\n\nWith the recognition results simon can type, open programs and places and more.")
SET(CPACK_PACKAGE_VENDOR "SIMON listens e.V.")
#SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENCE.txt")
set(CPACK_PACKAGE_VERSION "0.2")
SET(CPACK_PACKAGE_VERSION_MAJOR "0")
SET(CPACK_PACKAGE_VERSION_MINOR "2")
SET(CPACK_PACKAGE_VERSION_PATCH "4")
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "simon ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
SET(CPACK_STRIP_FILES TRUE)
SET(CPACK_SOURCE_STRIP_FILES TRUE)

set(CPACK_SOURCE_IGNORE_FILES
"~$"
"/.svn/"
"/build/"
"\\\\.svn\\\\"
"\\\\build\\\\"
)

# Devel
set(CPACK_COMPONENTS_ALL  kdecore julius juliusdevel ksimond simondoc translations simoncommandaipluginaimlsalice
		simoncommandaipluginaimlsgerman simoncommandaiplugin simoncommandcompositeplugin simoncommandlistplugin 
		simoncommandinputnumberplugin simoncommanddesktopgridplugin simoncommanddictationplugin
		simoncommandexecutableplugin simoncommandplaceplugin simoncommandshortcutplugin simoncommandtextmacroplugin
		simon simond simoncore simoncoredevel simondevel simonddevel)

#SET(CPACK_COMPONENT_DEVEL_DISPLAY_NAME "simon System Files")
SET(CPACK_COMPONENT_KDECORE_DISPLAY_NAME "KDE System Files")
SET(CPACK_COMPONENT_JULIUS_DISPLAY_NAME "Julius")
SET(CPACK_COMPONENT_JULIUSDEVEL_DISPLAY_NAME "Julius Development Files")
SET(CPACK_COMPONENT_KSIMOND_DISPLAY_NAME "ksimond")
SET(CPACK_COMPONENT_SIMONDOC_DISPLAY_NAME "Simon Documentation")
SET(CPACK_COMPONENT_SIMONCOMMANDAIPLUGINAIMLSALICE_DISPLAY_NAME "AI: Alice AIMLS")
SET(CPACK_COMPONENT_SIMONCOMMANDAIPLUGINAIMLSGERMAN_DISPLAY_NAME "AI: German AIMLS")
SET(CPACK_COMPONENT_SIMONCOMMANDAIPLUGIN_DISPLAY_NAME "AI")
SET(CPACK_COMPONENT_SIMONCOMMANDCOMPOSITEPLUGIN_DISPLAY_NAME "Composite")
SET(CPACK_COMPONENT_SIMONCOMMANDDESKTOPGRIDPLUGIN_DISPLAY_NAME "Desktop Grid")
SET(CPACK_COMPONENT_SIMONCOMMANDDICTATIONPLUGIN_DISPLAY_NAME "Dictation")
SET(CPACK_COMPONENT_SIMONCOMMANDEXECUTABLEPLUGIN_DISPLAY_NAME "Executables")
SET(CPACK_COMPONENT_SIMONCOMMANDINPUTNUMBERPLUGIN_DISPLAY_NAME "Input Number")
SET(CPACK_COMPONENT_SIMONCOMMANDLISTPLUGIN_DISPLAY_NAME "List")
SET(CPACK_COMPONENT_SIMONCOMMANDSHORTCUTPLUGIN_DISPLAY_NAME "Shortcut")
SET(CPACK_COMPONENT_SIMONCOMMANDTEXTMACROPLUGIN_DISPLAY_NAME "Text-Macro")
SET(CPACK_COMPONENT_SIMON_DISPLAY_NAME "simon")
SET(CPACK_COMPONENT_SIMONDEVEL_DISPLAY_NAME "simon Development Files")
SET(CPACK_COMPONENT_SIMOND_DISPLAY_NAME "simond")
SET(CPACK_COMPONENT_SIMONDDEVEL_DISPLAY_NAME "simond Development Files")
SET(CPACK_COMPONENT_SIMONCORE_DISPLAY_NAME "Shared Components")
SET(CPACK_COMPONENT_SIMONCOREDEVEL_DISPLAY_NAME "Shared Components Development Files")
SET(CPACK_COMPONENT_TRANSLATIONS_DISPLAY_NAME "Translations")



#SET(CPACK_COMPONENT_DEVEL_DISPLAY_DESCRIPTION "Contains a needed set of libraries.")
SET(CPACK_COMPONENT_KDECORE_DISPLAY_DESCRIPTION "This contains a subset of the kde system files needed to run simon / simond / ksimond.")
SET(CPACK_COMPONENT_JULIUS_DISPLAY_DESCRIPTION "The Julius Recognition Engine")
SET(CPACK_COMPONENT_JULIUSDEVEL_DISPLAY_DESCRIPTION "The Julius Recognition Engine Development Files")
SET(CPACK_COMPONENT_KSIMOND_DISPLAY_DESCRIPTION "A KDE4 Front-End to simond")
SET(CPACK_COMPONENT_SIMONCOMMANDAIPLUGINAIMLSALICE_DISPLAY_DESCRIPTION "The Alice-Personality for the AI Command Plug-In")
SET(CPACK_COMPONENT_SIMONCOMMANDAIPLUGINAIMLSGERMAN_DISPLAY_DESCRIPTION "A German Personality for the AI Command Plug-In")
SET(CPACK_COMPONENT_SIMONCOMMANDAIPLUGIN_DISPLAY_DESCRIPTION "The AI Command Plug-In")
SET(CPACK_COMPONENT_SIMONCOMMANDCOMPOSITEPLUGIN_DISPLAY_DESCRIPTION "The Composite Command Plug-In")
SET(CPACK_COMPONENT_SIMONCOMMANDDESKTOPGRIDPLUGIN_DISPLAY_DESCRIPTION "The Desktop Grid Command Plug-In")
SET(CPACK_COMPONENT_SIMONCOMMANDDICTATIONPLUGIN_DISPLAY_DESCRIPTION "The Dictation Command Plug-In")
SET(CPACK_COMPONENT_SIMONCOMMANDEXECUTABLEPLUGIN_DISPLAY_DESCRIPTION "The Executables Command Plug-In")
SET(CPACK_COMPONENT_SIMONCOMMANDLISTPLUGIN_DISPLAY_DESCRIPTION "The List Command Plug-In")
SET(CPACK_COMPONENT_SIMONCOMMANDINPUTNUMBERPLUGIN_DISPLAY_DESCRIPTION "The Input Number Command Plug-In")
SET(CPACK_COMPONENT_SIMONCOMMANDPLACEPLUGIN_DISPLAY_DESCRIPTION "The Place Command Plug-In")
SET(CPACK_COMPONENT_SIMONCOMMANDSHORTCUTPLUGIN_DISPLAY_DESCRIPTION "The Shortcut Command Plug-In")
SET(CPACK_COMPONENT_SIMONCOMMANDTEXTMACROPLUGIN_DISPLAY_DESCRIPTION "The Text-Macro Command Plug-In")
SET(CPACK_COMPONENT_SIMON_DISPLAY_DESCRIPTION "The simon application; Acts as a client to the simond recognition server and provides means to manage the speech- and acoustic model.")
SET(CPACK_COMPONENT_SIMONDEVEL_DISPLAY_DESCRIPTION "The simon Development Files")
SET(CPACK_COMPONENT_SIMONDOC_DISPLAY_DESCRIPTION "The simon Documentation")
SET(CPACK_COMPONENT_SIMOND_DISPLAY_DESCRIPTION "The simond recognition server; Stores and compiles the models of the simon clients. Uses Julius for the recognition.")
SET(CPACK_COMPONENT_SIMONDDEVEL_DISPLAY_DESCRIPTION "Development Files for the simond recognition server")
SET(CPACK_COMPONENT_SIMONCORE_DISPLAY_DESCRIPTION "Required shared components.")
SET(CPACK_COMPONENT_SIMONCOREDEVEL_DISPLAY_DESCRIPTION "Development Files of the shared components")
SET(CPACK_COMPONENT_TRANSLATIONS_DISPLAY_DESCRIPTION "Translations of all the components.")


set(CPACK_COMPONENT_KSIMOND_DEPENDS simond )
set(CPACK_COMPONENT_SIMONCOMMANDAIPLUGINAIMLSALICE_DEPENDS simoncommandaiplugin )
set(CPACK_COMPONENT_SIMONCOMMANDAIPLUGINAIMLSGERMAN_DEPENDS simoncommandaiplugin )
set(CPACK_COMPONENT_SIMONCOMMANDAIPLUGIN_DEPENDS simon)
set(CPACK_COMPONENT_SIMONCOMMANDCOMPOSITEPLUGIN_DEPENDS simon)
set(CPACK_COMPONENT_SIMONCOMMANDDESKTOPGRIDPLUGIN_DEPENDS simon)
set(CPACK_COMPONENT_SIMONCOMMANDDICTATIONPLUGIN_DEPENDS simon)
set(CPACK_COMPONENT_SIMONCOMMANDEXECUTABLEPLUGIN_DEPENDS simon)
set(CPACK_COMPONENT_SIMONCOMMANDLISTPLUGIN_DEPENDS simon)
set(CPACK_COMPONENT_SIMONCOMMANDINPUTNUMBERPLUGIN_DEPENDS simon)
set(CPACK_COMPONENT_SIMONCOMMANDPLACEPLUGIN_DEPENDS simon)
set(CPACK_COMPONENT_SIMONCOMMANDSHORTCUTPLUGIN_DEPENDS simon)
set(CPACK_COMPONENT_SIMONCOMMANDTEXTMACROPLUGIN_DEPENDS simon)
set(CPACK_COMPONENT_SIMON_DEPENDS simoncore)
set(CPACK_COMPONENT_SIMOND_DEPENDS simoncore)
set(CPACK_COMPONENT_KSIMOND_DEPENDS simoncore)
set(CPACK_COMPONENT_SIMONCORE_DEPENDS kdecore )#Devel


#set(CPACK_COMPONENT_DEVEL_GROUP "Applications")
set(CPACK_COMPONENT_KDECORE_GROUP "Applications")
SET(CPACK_COMPONENT_JULIUS_GROUP "Applications")
SET(CPACK_COMPONENT_JULIUSDEVEL_GROUP "Development")
SET(CPACK_COMPONENT_KSIMOND_GROUP "Applications")
SET(CPACK_COMPONENT_SIMONCOMMANDAIPLUGINAIMLSALICE_GROUP "Commands")
SET(CPACK_COMPONENT_SIMONCOMMANDAIPLUGINAIMLSGERMAN_GROUP "Commands")
SET(CPACK_COMPONENT_SIMONCOMMANDAIPLUGIN_GROUP "Commands")
SET(CPACK_COMPONENT_SIMONCOMMANDLISTPLUGIN_GROUP "Commands")
SET(CPACK_COMPONENT_SIMONCOMMANDDESKTOPGRIDPLUGIN_GROUP "Commands")
SET(CPACK_COMPONENT_SIMONCOMMANDDICTATIONPLUGIN_GROUP "Commands")
SET(CPACK_COMPONENT_SIMONCOMMANDEXECUTABLEPLUGIN_GROUP "Commands")
SET(CPACK_COMPONENT_SIMONCOMMANDLISTPLUGIN_GROUP "Commands")
SET(CPACK_COMPONENT_SIMONCOMMANDINPUTNUMBERPLUGIN_GROUP "Commands")
SET(CPACK_COMPONENT_SIMONCOMMANDPLACEPLUGIN_GROUP "Commands")
SET(CPACK_COMPONENT_SIMONCOMMANDSHORTCUTPLUGIN_GROUP "Commands")
SET(CPACK_COMPONENT_SIMONCOMMANDTEXTMACROPLUGIN_GROUP "Commands")
SET(CPACK_COMPONENT_SIMON_GROUP "Applications")
SET(CPACK_COMPONENT_SIMONDEVEL_GROUP "Development")
SET(CPACK_COMPONENT_SIMONDOC_GROUP "Documentation")
SET(CPACK_COMPONENT_SIMOND_GROUP "Applications")
SET(CPACK_COMPONENT_SIMONDDEVEL_GROUP "Development")
SET(CPACK_COMPONENT_SIMONCORE_GROUP "Applications")
SET(CPACK_COMPONENT_SIMONCOREDEVEL_GROUP "Development")
SET(CPACK_COMPONENT_TRANSLATIONS_GROUP "Localization")

set(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION
   "Development Files (Headers,...)")
set(CPACK_COMPONENT_GROUP_APPLICATIONS_DESCRIPTION
   "Runtime files. You will definitely want those if you want to use simon / simond or ksimond.")
set(CPACK_COMPONENT_GROUP_COMMANDS_DESCRIPTION
   "Command Plug-Ins. Those add actions to simon.")
set(CPACK_COMPONENT_GROUP_DOCUMENTATION_DESCRIPTION
   "Manuals and other documentation.")
set(CPACK_COMPONENT_GROUP_LOCALIZATION_DESCRIPTION
   "Translations and other localization files.")

   
set(CPACK_ALL_INSTALL_TYPES Full User Developer)


#SET(CPACK_COMPONENT_DEVEL_INSTALL_TYPES Full User Devel
SET(CPACK_COMPONENT_KDECORE_INSTALL_TYPES Full User Developer) 	 
SET(CPACK_COMPONENT_JULIUS_INSTALL_TYPES Full User Developer) 	 
SET(CPACK_COMPONENT_JULIUSDEVEL_INSTALL_TYPES Developer) 	 
SET(CPACK_COMPONENT_KSIMOND_INSTALL_TYPES Full User Developer) 	 
SET(CPACK_COMPONENT_SIMONCOMMANDAIPLUGINAIMLSALICE_INSTALL_TYPES Full User) 	 
SET(CPACK_COMPONENT_SIMONCOMMANDAIPLUGINAIMLSGERMAN_INSTALL_TYPES Full User) 	 
SET(CPACK_COMPONENT_SIMONCOMMANDAIPLUGIN_INSTALL_TYPES Full User) 	 
SET(CPACK_COMPONENT_SIMONCOMMANDCOMPOSITEPLUGIN_INSTALL_TYPES Full User) 	 
SET(CPACK_COMPONENT_SIMONCOMMANDDESKTOPGRIDPLUGIN_INSTALL_TYPES Full User) 	 
SET(CPACK_COMPONENT_SIMONCOMMANDDICTATIONPLUGIN_INSTALL_TYPES Full User) 	 
SET(CPACK_COMPONENT_SIMONCOMMANDEXECUTABLEPLUGIN_INSTALL_TYPES Full User) 	 
SET(CPACK_COMPONENT_SIMONCOMMANDLISTPLUGIN_INSTALL_TYPES Full User) 	 
SET(CPACK_COMPONENT_SIMONCOMMANDINPUTNUMBERPLUGIN_INSTALL_TYPES Full User) 	 
SET(CPACK_COMPONENT_SIMONCOMMANDPLACEPLUGIN_INSTALL_TYPES Full User) 	 
SET(CPACK_COMPONENT_SIMONCOMMANDSHORTCUTPLUGIN_INSTALL_TYPES Full User) 	 
SET(CPACK_COMPONENT_SIMONCOMMANDTEXTMACROPLUGIN_INSTALL_TYPES Full User) 	 
SET(CPACK_COMPONENT_SIMON_INSTALL_TYPES Full User Developer) 	 
SET(CPACK_COMPONENT_SIMONDEVEL_INSTALL_TYPES Developer) 	 
SET(CPACK_COMPONENT_SIMONDOC_INSTALL_TYPES Full User) 	 
SET(CPACK_COMPONENT_SIMOND_INSTALL_TYPES Full User Developer) 	 
SET(CPACK_COMPONENT_SIMONDDEVEL_INSTALL_TYPES Developer) 	 
SET(CPACK_COMPONENT_SIMONCORE_INSTALL_TYPES Full User Developer) 	 
SET(CPACK_COMPONENT_SIMONCOREDEVEL_INSTALL_TYPES Developer) 	 
SET(CPACK_COMPONENT_TRANSLATIONS_INSTALL_TYPES Full User) 	 
 
#SET(CPACK_COMPONENT_DEVEL_REQUIRED) 	 
SET(CPACK_COMPONENT_KDECORE_REQUIRED) 	 
SET(CPACK_COMPONENT_SIMONCORE_REQUIRED) 	 
SET(CPACK_COMPONENT_SIMONCOMMANDAIPLUGIN_DISABLED) 	 
SET(CPACK_COMPONENT_SIMONCOMMANDAIPLUGINAIMLSALICE_DISABLED) 	 
SET(CPACK_COMPONENT_SIMONCOMMANDAIPLUGINAIMLSGERMAN_DISABLED) 	 
 
 
SET(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\simon.ico") 	 
 
IF(WIN32 AND NOT UNIX) 	 
	# There is a bug in NSI that does not handle full unix paths properly. Make 	 
	# sure there is at least one set of four (4) backlasshes. 	 
	SET(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\installbanner.bmp") 	 
	#SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\simon.exe") 	 
	SET(CPACK_NSIS_INSTALLER_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\simon.ico") 	 
	SET(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\simon.ico") 	 
	SET(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\simon.ico") 	 
	SET(CPACK_NSIS_COMPRESSOR "/SOLID lzma") 	 
	 
	SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} simon") 	 
	SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\www.simon-listens.org/wiki") 	 
	SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.simon-listens.com") 	 
	SET(CPACK_NSIS_CONTACT "support@simon-listens.org") 	 
	SET(CPACK_NSIS_MODIFY_PATH ON) 	 
	 
	SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\simon.lnk\\\" \\\"$INSTDIR\\\\bin\\\\simon.exe\\\" \\\"\\\" \\\"$INSTDIR\\\\bin\\\\simon.exe\\\" 0 	 
	CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\simond.lnk\\\" \\\"$INSTDIR\\\\bin\\\\simond.exe\\\" \\\"\\\" \\\"$INSTDIR\\\\bin\\\\simond.exe\\\" 0 	 
	CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\ksimond.lnk\\\" \\\"$INSTDIR\\\\bin\\\\ksimond.exe\\\" \\\"\\\" \\\"$INSTDIR\\\\bin\\\\ksimond.exe\\\" 0") 	 
	 
	 
	 
   SET(CPACK_NSIS_DELETE_ICONS_EXTRA " 	 
	 !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP 	 
	 Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\simon.lnk\\\" 	 
	 Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\simond.lnk\\\" 	 
	 Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\ksimond.lnk\\\" 	 
	 ") 	 
ENDIF(WIN32 AND NOT UNIX) 	 
 
SET(CPACK_PACKAGE_EXECUTABLES "simon" "simon")

include(CPack)

add_subdirectory(julius)

find_package(KDE4 REQUIRED)


add_subdirectory(simonlib)
add_subdirectory(simon)
add_subdirectory(simond)
add_subdirectory(ksimond)
add_subdirectory(plugins)

if(WIN32)
add_subdirectory(package/KDE)
ENDIF(WIN32)
