# synergy -- mouse and keyboard sharing utility
# Copyright (C) 2009 Chris Schoeneman, Nick Bolton, Sorin Sbarnea
# 
# This package is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# found in the file COPYING that should have accompanied this file.
# 
# This package is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# List of CPack variables:
# http://www.vtk.org/Wiki/CMake:CPackConfiguration

if(WIN32)
	
	install(TARGETS
		synergys
		synergyc
		synrgyhk
		COMPONENT core
		DESTINATION bin)

	set(CPACK_COMPONENT_CORE_REQUIRED true)
	set(CPACK_COMPONENT_CORE_DISPLAY_NAME "Server and Client")
	
	INSTALL(
		FILES
		bin/Release/qsynergy.exe
		${QT_DIR}/qt/bin/libgcc_s_dw2-1.dll
		${QT_DIR}/qt/bin/mingwm10.dll
		${QT_DIR}/qt/bin/QtGui4.dll
		${QT_DIR}/qt/bin/QtCore4.dll
		${QT_DIR}/qt/bin/QtNetwork4.dll
		COMPONENT gui
		DESTINATION bin)

	set(CPACK_COMPONENT_GUI_DISPLAY_NAME "Graphical User Interface")
	
	set(VCREDIST_PATH "${VCREDIST_DIR}/${VCREDIST_FILE}")
	
	install(
		PROGRAMS
		${VCREDIST_PATH}
		COMPONENT vcredist
		DESTINATION redist)
	
	set(CPACK_COMPONENT_VCREDIST_DISPLAY_NAME "Visual C++ Redistributable")

	set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
	  ExecWait '\\\"$INSTDIR\\\\redist\\\\${VCREDIST_FILE}\\\" /install /q'")

else()

	IF(APPLE)
		# TODO: how the hell do we distribute mac apps?
		#INSTALL(
		#	MACOSX_BUNDLE
		#	bin/QSynergy.app
		#	DESTINATION bin)
	ELSE(APPLE)
		INSTALL(
			FILES
			bin/qsynergy
			DESTINATION bin)
	ENDIF(APPLE)

endif()

# The default CPack behaviour is not to append the system processor
# type, which is undesirable in our case, since we want to support 
# both 32-bit and 64-bit processors.
SET(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR})

# Hack: When running CMake on 64-bit Windows 7, the value of 
# CMAKE_SYSTEM_PROCESSOR always seems to be x86, regardless of if the
# CMake build is 32-bit or 64-bit. As a work around, we will prefix either
# x86 or x64 (in the same style as Microsoft do with their installers).
# However, some confusion may be caused when the user sees that Synergy
# is installed in the x86 Program Files directory (even though it's a 
# 64-bit build). This is caused by NSIS only supporting the 32-bit 
# installs structure (also uses 32-bit registry key locations).
IF(WIN32)
	IF(CMAKE_CL_64)
		SET(CPACK_SYSTEM_NAME Windows-x64)
	ELSE(CMAKE_CL_64)
		SET(CPACK_SYSTEM_NAME Windows-x86)
	ENDIF(CMAKE_CL_64)
ENDIF(WIN32)

# For source code, use .tar.gz on Unix, and .zip on Windows
IF(UNIX)
	SET(CPACK_SOURCE_GENERATOR TGZ)
ELSE(UNIX)
	SET(CPACK_SOURCE_GENERATOR ZIP)
ENDIF(UNIX)

if(APPLE)
    set(CPACK_SYSTEM_NAME "MacOSX-Universal")
endif(APPLE)

SET(CPACK_PACKAGE_NAME "synergy")
SET(CPACK_PACKAGE_VENDOR "The Synergy Project")
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Installs Synergy server and client")
SET(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
SET(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
SET(CPACK_PACKAGE_VERSION_PATCH ${VERSION_REV})
SET(CPACK_PACKAGE_VERSION ${VERSION})
SET(CPACK_PACKAGE_CONTACT http://synergy-foss.org/)
SET(CPACK_RESOURCE_FILE_LICENSE "${cmake_dir}/License.rtf")
SET(CPACK_RESOURCE_FILE_README "${cmake_dir}/Readme.txt")

IF(WIN32)
	SET(WIN32_ICON "${root_dir}/gui/res/win/QSynergy.ico")
	set(CPACK_NSIS_URL_INFO_ABOUT "http://synergy-foss.org")
	set(CPACK_NSIS_HELP_LINK "http://synergy-foss.org/support")
	SET(CPACK_NSIS_MUI_ICON ${WIN32_ICON})
	SET(CPACK_NSIS_MUI_UNIICON ${WIN32_ICON})
	SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin/qsynergy.exe")
	SET(CPACK_PACKAGE_INSTALL_DIRECTORY "Synergy")
	set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "Synergy")	
	SET(CPACK_PACKAGE_EXECUTABLES qsynergy;Synergy)
ENDIF(WIN32)

# files to exclude from src package (regex patterns)
# to escape, use 4 backslashes (\\\\) -- yuck!
SET(CPACK_SOURCE_IGNORE_FILES
	# temp output dir in root
	"/bin/"

	# generated config.h file
	"/config\\\\.h$"

	# buildbot stuff
	"\\\\.buildbot\\\\-sourcedata$"

	# qt temp build dir
	"/gui/tmp/.*"

	# qt make file
	"/gui/Makefile$"

	# qt generated ui headers
	"/gui/ui_.*\\\\.h$"

	# compiled python files
	".*\\\\.pyc$"

	# subversion caches (all dirs)
	".*/\\\\.svn/.*"

	# emacs temporary files
	".*~$"
)

# Must be last (since it relies of CPACK_ vars).
INCLUDE(CPack)
