######################################################################
## ______      _      _   __      _       
## | ___ \    (_)    | | / /     | |      
## | |_/ /_ __ _ ___ | |/ /  ___ | | __ _ 
## | ___ \ '__| / __||    \ / _ \| |/ _` |
## | |_/ / |  | \__ \| |\  \ (_) | | (_| |
## \____/|_|  |_|___/\_| \_/\___/|_|\__,_|
##
##      This file is part of the BrisKola Project
##      http://www.briskola.net
##
##      BrisKola Team - info(at)briskola.net
##
######################################################################

PROJECT(BrisKola)

#######################################################
#####  Setting up FIXED configuration parameters
#######################################################

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

SET( QT_USE_QTCORE TRUE )
SET( QT_USE_QTGUI TRUE )
SET( QT_USE_QTNETWORK TRUE )

FIND_PACKAGE(Qt4 REQUIRED)
INCLUDE( ${QT_USE_FILE} )

SET(BK_D_PACKAGE "briskola")
SET(BK_D_APPNAME "BrisKola")
SET(BK_D_VERSION_MAJOR "1")
SET(BK_D_VERSION_MINOR "0")
SET(BK_D_VERSION_REVISION "0")
SET(BK_D_VERSION_NAME "Reanimation")

#######################################################
#####  Setting up USER configuration parameters
#######################################################

OPTION(BK_D_DEBUG "Build the project using debugging code" OFF)

SET(BK_DIR_SHARE "/share")
SET(BK_DIR_IMG_BACKGROUND "/background")
SET(BK_DIR_IMG_CARDS "/cards")
SET(BK_DIR_IMG_DECKS "/decks")
SET(BK_DIR_IMG_MISC "/misc")
SET(BK_DIR_IMG_ICONS "/icons")
SET(BK_DIR_IMG_TEXT "/text")

SET(BK_DIR_INSTALL "/usr" CACHE PATH "Install directory where to put executables")
SET(BK_DIR_DATA "${BK_DIR_INSTALL}${BK_DIR_SHARE}/${BK_D_PACKAGE}/${BK_D_VERSION}" CACHE PATH "Data directory where to put general files")
SET(BK_DIR_DATA_IMG_BACKGROUND "${BK_DIR_DATA}${BK_DIR_IMG_BACKGROUND}" CACHE PATH "Image directory whete to put Background image file")
SET(BK_DIR_DATA_IMG_CARDS "${BK_DIR_DATA}${BK_DIR_IMG_CARDS}" CACHE PATH "Image directory whete to put Cards image files")
SET(BK_DIR_DATA_IMG_DECKS "${BK_DIR_DATA}${BK_DIR_IMG_DECKS}" CACHE PATH "Image directory whete to put Decks image files")
SET(BK_DIR_DATA_IMG_MISC "${BK_DIR_DATA}${BK_DIR_IMG_MISC}" CACHE PATH "Image directory whete to put Miscelaneus image files")
SET(BK_DIR_DATA_IMG_ICONS "${BK_DIR_DATA}${BK_DIR_IMG_ICONS}" CACHE PATH "Image directory whete to put Icons image files")
SET(BK_DIR_DATA_IMG_TEXT "${BK_DIR_DATA}${BK_DIR_IMG_TEXT}" CACHE PATH "Image directory whete to put Text image files")

IF(NOT "${BK_DIR_INSTALL}${BK_DIR_SHARE}" STREQUAL "${A_}${B_}" AND "${BK_DIR_DATA}" STREQUAL "${BK_DIR_INSTALL_}${BK_DIR_SHARE_}")
	SET(BK_DIR_DATA ${BK_DIR_INSTALL}${BK_DIR_SHARE} CACHE PATH "Data directory where to put general files" FORCE)
ENDIF(NOT "${BK_DIR_INSTALL}${BK_DIR_SHARE}" STREQUAL "${A_}${B_}" AND "${BK_DIR_DATA}" STREQUAL "${BK_DIR_INSTALL_}${BK_DIR_SHARE_}")

SET(BK_DIR_INSTALL_ ${BK_DIR_INSTALL} CACHE PATH "Install directory where to put executables" FORCE)
SET(BK_DIR_SHARE_ ${BK_DIR_SHARE} CACHE PATH "Fixed share directory" FORCE)
MARK_AS_ADVANCED(BK_DIR_INSTALL_ BK_DIR_SHARE_)

SET(CMAKE_INSTALL_PREFIX ${BK_DIR_INSTALL} CACHE PATH "Install path prefix, prepended onto install directories." FORCE)

SET(BK_ABSOLUTE_DIR_DATA "${BK_DIR_DATA}/${BrisKola_D_PACKAGE}/${BrisKola_D_VERSION}/data")

#######################################################
#####  Setting up SOURCES
#######################################################

SET(HEADERS_FILE_LIST
	src/core/BKApplication.h
	src/core/BKCard.h
	src/core/BKConfig.h
	src/core/BKController.h
	src/core/BKDeck.h
	src/core/BKMatch.h
	src/core/BKPlayer.h
	src/core/BKPlayerAI.h
	src/core/BKPlayerCPU.h
	src/core/BKPlayerHUM.h

	src/gui/gameboard/BKGameScene.h
	src/gui/gameboard/BKGameSceneItem.h
	src/gui/gameboard/BKGameSceneItemCard.h
	src/gui/gameboard/BKGameView.h
	src/gui/gameboard/BKGameBoard.h
	
	src/gui/BKAlertConnectError.h
	src/gui/BKAlertNewVersion.h
	src/gui/BKAlertNotNewVersion.h
	src/gui/BKAlert.h
	src/gui/BKHelp.h
	src/gui/BKAbout.h
	src/gui/BKOptions.h
	src/gui/BKMainWindow.h
	
	src/BKGlobal.h
	src/BK.h
)

SET(MOC_HEADERS_FILE_LIST
	src/gui/gameboard/BKGameSceneItemCard.h
	src/gui/gameboard/BKGameScene.h
	src/gui/gameboard/BKGameView.h
	src/gui/gameboard/BKGameBoard.h
	src/gui/BKAlert.h
	src/gui/BKAlertNewVersion.h
	src/gui/BKAlertNotNewVersion.h
	src/gui/BKAlertConnectError.h
	src/gui/BKHelp.h
	src/gui/BKAbout.h
	src/gui/BKOptions.h
	src/gui/BKMainWindow.h

	src/core/BKConfig.h
	src/core/BKController.h
	src/core/BKMatch.h
	src/core/BKPlayer.h
	src/core/BKPlayerAI.h
	src/core/BKPlayerCPU.h
	src/core/BKPlayerHUM.h
)

SET(SOURCES_FILE_LIST
	src/core/BKApplication.cpp
	src/core/BKCard.cpp
	src/core/BKConfig.cpp
	src/core/BKController.cpp
	src/core/BKDeck.cpp
	src/core/BKMatch.cpp
	src/core/BKPlayer.cpp
	src/core/BKPlayerAI.cpp
	src/core/BKPlayerCPU.cpp
	src/core/BKPlayerHUM.cpp
	
	src/gui/gameboard/BKGameScene.cpp
	src/gui/gameboard/BKGameSceneItem.cpp
	src/gui/gameboard/BKGameSceneItemCard.cpp
	src/gui/gameboard/BKGameView.cpp
	src/gui/gameboard/BKGameBoard.cpp
	
	src/gui/BKAlertConnectError.cpp
	src/gui/BKAlertNewVersion.cpp
	src/gui/BKAlertNotNewVersion.cpp
	src/gui/BKAlert.cpp
	src/gui/BKHelp.cpp
	src/gui/BKAbout.cpp
	src/gui/BKOptions.cpp
	src/gui/BKMainWindow.cpp
	
	src/main.cpp
)

#######################################################
#####  Setting up compilation's stuff
#######################################################

SET(DEFINITIONS	"${DEFINITIONS} ${QT_DEFINITIONS}")
SET(DEFINITIONS "${DEFINITIONS} -D_DATADIR=\\\"${BK_DIR_DATA}\\\"")
SET(DEFINITIONS "${DEFINITIONS} -D_DIR_IMG_BACKGROUND=\\\"${BK_DIR_IMG_BACKGROUND}\\\"")
SET(DEFINITIONS "${DEFINITIONS} -D_DIR_IMG_CARDS=\\\"${BK_DIR_IMG_CARDS}\\\"")
SET(DEFINITIONS "${DEFINITIONS} -D_DIR_IMG_DECKS=\\\"${BK_DIR_IMG_DECKS}\\\"")
SET(DEFINITIONS "${DEFINITIONS} -D_DIR_IMG_MISC=\\\"${BK_DIR_IMG_MISC}\\\"")
SET(DEFINITIONS "${DEFINITIONS} -D_DIR_IMG_ICONS=\\\"${BK_DIR_IMG_ICONS}\\\"")
SET(DEFINITIONS "${DEFINITIONS} -D_DIR_IMG_TEXT=\\\"${BK_DIR_IMG_TEXT}\\\"")
SET(DEFINITIONS "${DEFINITIONS} -D_PACKAGE=\\\"${BK_D_PACKAGE}\\\"")
SET(DEFINITIONS "${DEFINITIONS} -D_APPNAME=\\\"${BK_D_APPNAME}\\\"")
SET(DEFINITIONS "${DEFINITIONS} -D_VERSION_MAJOR=\\\"${BK_D_VERSION_MAJOR}\\\"")
SET(DEFINITIONS "${DEFINITIONS} -D_VERSION_MINOR=\\\"${BK_D_VERSION_MINOR}\\\"")
SET(DEFINITIONS "${DEFINITIONS} -D_VERSION_REVISION=\\\"${BK_D_VERSION_REVISION}\\\"")
SET(DEFINITIONS "${DEFINITIONS} -D_VERSION_NAME=\\\"${BK_D_VERSION_NAME}\\\"")
SET(DEFINITIONS "${DEFINITIONS} -D_VERSION_STATUS=\\\"${BK_D_VERSION_STATUS}\\\"")

IF(BK_D_DEBUG)
	SET(DEFINITIONS "${DEFINITIONS} -g -DDEBUG -Wall")
ENDIF(BK_D_DEBUG)

SET(INCLUDES
	${QT_INCLUDE}
	${CMAKE_HOME_DIRECTORY}/src
	${CMAKE_HOME_DIRECTORY}/src/gui
	${CMAKE_HOME_DIRECTORY}/src/gui/gameboard
	${CMAKE_HOME_DIRECTORY}/src/core
)

SET(LINKS
	${QT_LIBRARIES}
	m
)

QT4_WRAP_CPP( MOC_SOURCES_FILE_LIST ${MOC_HEADERS_FILE_LIST} )

INCLUDE_DIRECTORIES(${INCLUDES})

ADD_DEFINITIONS(${DEFINITIONS})

ADD_EXECUTABLE(briskola ${SOURCES_FILE_LIST} ${MOC_SOURCES_FILE_LIST})

TARGET_LINK_LIBRARIES(briskola ${LINKS})

#######################################################
##### Install Target
#######################################################

CONFIGURE_FILE(
  "${CMAKE_CURRENT_SOURCE_DIR}/admin/cmake_uninstall.cmake.in"
  "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
  IMMEDIATE @ONLY)

ADD_CUSTOM_TARGET(uninstall
  "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")

INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/briskola DESTINATION ${BK_DIR_INSTALL}/bin)

#######################################################
##### Handle other directories
#######################################################

ADD_SUBDIRECTORY(data)
