###############################################################################
# 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(NOT MIRA_QT_VERSION EQUAL 4)
	# 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}/LibGit2.cmake)
INCLUDE(${CMAKE_CURRENT_LIST_DIR}/FindSubversionDevel.cmake)

#INCLUDE(${CMAKE_CURRENT_LIST_DIR}/FindGit2Devel.cmake)

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

find_package(CURL REQUIRED)

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

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

IF(MIRA_QT_VERSION EQUAL 4)
	# Qt4

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

	SET(MIRAPACKAGE_LIBS
		MIRABase
		${QT_QTCORE_LIBRARY}
		${QT_QTGUI_LIBRARY}
		${QT_QTWEBKIT_LIBRARY}
		${QT_QTNETWORK_LIBRARY}
		${SUBVERSION_LIBRARIES}
		${LIBGIT2_LIBRARY}
		${QUAZIP_LIBRARY}
		${WINCRYPT_LIBRARY}
	)
ELSE()
	# Qt5 ff

	INCLUDE_DIRECTORIES(
		${Qt5WebKitWidgets_INCLUDE_DIRS}
		./include
		./src
		${SUBVERSION_INCLUDE_DIRS}
		${LIBGIT2_INCLUDE_DIRS}
		${QUAZIP_INCLUDE_DIRS}
		${QTFTP_INCLUDE_DIRS}
		${CURL_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}
		${LIBGIT2_LIBRARY}
		${QUAZIP_LIBRARY}
		${QTFTP_LIBRARY}
		${WINCRYPT_LIBRARY}
	)
ENDIF()

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

MIRA_ADD_LIBRARY(MIRAPackage
	SHARED
	PACKAGE
		MIRAPackage
	SOURCE
		src/app/CmdLineOptions.C
		src/app/CmdLinePromptProvider.C
		src/app/MIRAPackageGUI.C
		src/app/MIRAPackageShell.C
		src/app/GitUtils.C
		src/app/GitlabAPI.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/GitlabRepository.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/PackageSortModel.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}
		${LIBGIT2_LIBRARY}
		${CURL_LIBRARIES}
)

MIRA_ADD_BINARY(mirapackage
	PACKAGE
		MIRAPackage
	SOURCE
		src/app/main.C
	LINK_LIBS
		MIRAPackage
)

ADD_DEPENDENCIES(MIRAPackage QuaZIP)
ADD_DEPENDENCIES(MIRAPackage LibGit2)

IF(NOT MIRA_QT_VERSION EQUAL 4)
	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
)

###############################################################################
ADD_SUBDIR(tests)
###############################################################################

