###############################################################################
# CMakefile for mirapackage
###############################################################################

if (WIN32)
	if(CMAKE_SIZEOF_VOID_P EQUAL 8)
		MESSAGE("64 bit build detected. SVN is not available and mirapackage will not be built.")
		RETURN()
	endif()
endif()

###############################################################################

INSOURCE_MAKEFILE()

MIRA_REQUIRE_PACKAGE(MIRAPackage)

###############################################################################

INCLUDE(Qt) 

IF(USING_QT5)
	# QtFtp was removed in Qt5. Therefore, we have to include QtFtp as a
	# separate component.
	INCLUDE(${CMAKE_CURRENT_LIST_DIR}/QtFTP.cmake)

	# Furtheremore, we need QWebView from WebKitWidgets
	find_package(Qt5 REQUIRED WebKitWidgets)
ENDIF()

###############################################################################

INCLUDE(${CMAKE_CURRENT_LIST_DIR}/QuaZIP.cmake)
INCLUDE(${CMAKE_CURRENT_LIST_DIR}/FindSubversionDevel.cmake)

LINK_DIRECTORIES(${QUAZIP_LIBRARY_DIRS})
LINK_DIRECTORIES(${SUBVERSION_LIBRARY_DIRS})

IF(WIN32)
	SET(WINCRYPT_LIBRARY "Crypt32.lib")
ELSE()
	SET(WINCRYPT_LIBRARY "")
ENDIF()

###############################################################################

IF(USING_QT5)
	# Qt5

	INCLUDE_DIRECTORIES(
		${Qt5WebKitWidgets_INCLUDE_DIRS}
		./include
		./src
		${SUBVERSION_INCLUDE_DIRS}
		${QUAZIP_INCLUDE_DIRS}
		${QTFTP_INCLUDE_DIRS}
	)

	LINK_DIRECTORIES(${QTFTP_LIBRARY_DIRS})

	SET(MIRAPACKAGE_LIBS
		MIRABase
		${QT_QTCORE_LIBRARY}
		${QT_QTGUI_LIBRARY}
		${QT_QTWEBKIT_LIBRARY}
		${QT_QTNETWORK_LIBRARY}
		${Qt5WebKitWidgets_LIBRARIES}
		${SUBVERSION_LIBRARIES}
		${QUAZIP_LIBRARY}
		${QTFTP_LIBRARY}
		${WINCRYPT_LIBRARY}
	)
ELSE()
	# Qt4

	INCLUDE_DIRECTORIES(
		${QT_INCLUDE_DIR}/QtCore
		./include
		./src
		${SUBVERSION_INCLUDE_DIRS}
		${QUAZIP_INCLUDE_DIRS}
	)

	SET(MIRAPACKAGE_LIBS
		MIRABase
		${QT_QTCORE_LIBRARY}
		${QT_QTGUI_LIBRARY}
		${QT_QTWEBKIT_LIBRARY}
		${QT_QTNETWORK_LIBRARY}
		${SUBVERSION_LIBRARIES}
		${QUAZIP_LIBRARY}
		${WINCRYPT_LIBRARY}
	)
ENDIF()

###############################################################################

MIRA_ADD_BINARY(mirapackage
	PACKAGE
		MIRAPackage
	SOURCE
		src/app/CmdLineOptions.C
		src/app/main.C
		src/app/MIRAPackageGUI.C
		src/core/Database.C
		src/core/Dependency.C
		src/core/FileRepository.C
		src/core/FTPRepository.C
		src/core/LocalRepository.C
		src/core/Package.C
		src/core/PackageGroup.C
		src/core/PackageParser.C
		src/core/Repository.C
		src/core/MIRAPackage.C
		src/core/SVNRepository.C
		src/core/Tools.C
		src/core/Url.C
		src/gui/IconProvider.C
		src/gui/PackageListWidget.C
		src/gui/PackageTreeModel.C
		src/gui/PromptProviderGui.C
		src/gui/dialogs/DependencyDialog.C
		src/gui/dialogs/InstallOverviewDialog.C
	QT_UIs
		forms/AddRepositoryDialog.ui
		forms/InstallOverviewDialog.ui
		forms/PackageListWidget.ui
		forms/PathSelectDialog.ui
		forms/MIRAPackageGUI.ui
		forms/RepositoryListDialog.ui
		forms/UpdateDialog.ui
		forms/ExportDialog.ui
	QT_MOCs
		include/app/MIRAPackageGUI.h
		include/app/MIRAPackageApp.h
		include/core/Database.h
		include/core/FileRepository.h
		include/core/FTPRepository.h
		include/core/LocalRepository.h
		include/core/Repository.h
		include/gui/PackageFilterModel.h
		include/gui/PackageListWidget.h
		include/gui/PackageTreeModel.h
		include/gui/PromptProviderGui.h
		include/gui/TagFilterModel.h
		include/gui/TagTableModel.h
		src/gui/dialogs/AddRepositoryDialog.h
		src/gui/dialogs/DependencyDialog.h
		src/gui/dialogs/InstallOverviewDialog.h
		src/gui/dialogs/PathSelectDialog.h
		src/gui/dialogs/RepositoryListDialog.h
		src/gui/dialogs/UpdateDialog.h
		src/gui/dialogs/ExportDialog.h
	QT_QRCs
		etc/images.qrc
	LINK_LIBS
		${MIRAPACKAGE_LIBS}
)

ADD_DEPENDENCIES(mirapackage QuaZIP)

IF(USING_QT5)
	ADD_DEPENDENCIES(mirapackage QtFTP)
ENDIF()

###############################################################################

MIRA_INSTALL_PACKAGE_BASICS(
	DESTINATION tools/mirapackage
	PACKAGE     MIRAPackage)

MIRA_INSTALL(
	TARGETS     mirapackage
	DESTINATION bin
	PACKAGE     MIRAPackage
)

MIRA_INSTALL(
	FILES       "etc/Package.xhtml"
	DESTINATION resources/templates
	PACKAGE     MIRAPackage
)

###############################################################################

