MESSAGE( STATUS "..:: CMAKE ROOT ::..")

PROJECT(skrooge)

FIND_PROGRAM(SKG_BASH bash)
MARK_AS_ADVANCED(SKG_BASH)

FIND_PACKAGE(KDE4 REQUIRED)
INCLUDE(KDE4Defaults)
INCLUDE(MacroLibrary)
MESSAGE(STATUS "     KDE4 support enabled : ${KDE4_DATA_DIR}")
add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})

SET(VERSION 0.7.4)
SET(SOVERSION 0)
SET(UPDATE_TYPE "svn")
SET( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${skrooge_SOURCE_DIR}/cmake/modules )

IF (CMAKE_BUILD_TYPE)
ELSE (CMAKE_BUILD_TYPE)
	SET(CMAKE_BUILD_TYPE profile)
#"release": optimized for speed, no debug symbols or debug messages
#"relwithdebinfo": optimized for speed, debug symbols for backtraces
#"debug": optimized, but debuggable
#"debugfull": no optimisations, full debug support
#"profile": adds coverage flags to debugfull
#"none": the build flags are manually set using the CMAKE_CXX_FLAGS option.
ENDIF (CMAKE_BUILD_TYPE)

SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
OPTION(SKG_BUILD_TEST "Build the test" ON)
MESSAGE( STATUS "     PROJECT_SOURCE_DIR  : " ${PROJECT_SOURCE_DIR} )
MESSAGE( STATUS "     PROJECT_BINARY_DIR  : " ${PROJECT_BINARY_DIR} )
MESSAGE( STATUS "     BUILD_DIR           : " ${BUILD_DIR} )
MESSAGE( STATUS "     CMAKE_BUILD_TYPE    : " ${CMAKE_BUILD_TYPE} )
MESSAGE( STATUS "     CMAKE_INSTALL_PREFIX: " ${CMAKE_INSTALL_PREFIX} )
IF(CMAKE_BUILD_TYPE="release")
  add_definitions(-DSKGNOTRACES) #To disable all traces  
  MESSAGE( STATUS "     All traces disabled")
ELSE(CMAKE_BUILD_TYPE="release")
  MESSAGE( STATUS "     Traces enabled")
ENDIF(CMAKE_BUILD_TYPE="release")
#add_definitions(-DSKGFULLTRACES) #To enable all traces
add_definitions(-DSKGVERSION=${VERSION})

cmake_minimum_required(VERSION 2.4)
if(COMMAND cmake_policy)
	cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)

include_directories( ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES}
	${CMAKE_CURRENT_SOURCE_DIR}/skgbasemodeler/
	${CMAKE_CURRENT_SOURCE_DIR}/skgbasegui/
	${CMAKE_CURRENT_BINARY_DIR}/skgbasegui/
	${CMAKE_CURRENT_SOURCE_DIR}/skgbasemodelertest
	${CMAKE_CURRENT_SOURCE_DIR}/skgbankmodeler/
	${CMAKE_CURRENT_SOURCE_DIR}/skgbankgui
	${CMAKE_CURRENT_BINARY_DIR}/skgbankgui)

#Correction bug 207249 vvvv
#SET(CMAKE_CXX_FLAGS "-Wall" )
IF(CMAKE_COMPILER_IS_GNUCXX)
  SET(CMAKE_CXX_FLAGS "-Wall ${CMAKE_CXX_FLAGS}")
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
#Correction bug 207249 ^^^^

#Default installation path
set(CMAKE_INSTALL_PREFIX ${BUILD_DIR})

# Win32 specific configuration
IF(WIN32)
    ADD_DEFINITIONS(-DSKG_PLATFORM_WIN32)
    IF(CMAKE_COMPILER_IS_GNUCXX)
	SET(CMAKE_SHARED_LINKER_FLAGS "-Wl,--enable-runtime-pseudo-reloc -Wl,--export-all-symbols" CACHE STRING "" FORCE)
    ENDIF(CMAKE_COMPILER_IS_GNUCXX)
ELSE(WIN32)
#To solve Bug 209912:"ldd -u <library>""
#doesnt work on MACOS, must be done manually		SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed" CACHE STRING "" FORCE)
ENDIF(WIN32)
MESSAGE(STATUS "     CMAKE_SHARED_LINKER_FLAGS : ${CMAKE_SHARED_LINKER_FLAGS}")


#ADD_SUBDIRECTORY(skg_dataengine) #<-- Experimental
#ADD_SUBDIRECTORY(skg_dashboard2) #<-- Experimental plugin
#ADD_SUBDIRECTORY(skgapplets) #<-- Experimental plugin
#ADD_SUBDIRECTORY(skgmyapplitest) #<-- Experimental plugin, do not activate

#ADD_SUBDIRECTORY
ADD_SUBDIRECTORY(skgbasemodeler)
ADD_SUBDIRECTORY(skgbankmodeler)
ADD_SUBDIRECTORY(skgbasegui)
ADD_SUBDIRECTORY(skgbankgui)

#generic plugins
ADD_SUBDIRECTORY(skg_advice)
ADD_SUBDIRECTORY(skg_bookmark)
ADD_SUBDIRECTORY(skg_dashboard)
ADD_SUBDIRECTORY(skg_debug)
ADD_SUBDIRECTORY(skg_delete)
ADD_SUBDIRECTORY(skg_selectall)
ADD_SUBDIRECTORY(skg_file)
ADD_SUBDIRECTORY(skg_print)
ADD_SUBDIRECTORY(skg_undoredo)
ADD_SUBDIRECTORY(skg_properties)

#bank plugins
ADD_SUBDIRECTORY(skrooge_bank)
ADD_SUBDIRECTORY(skrooge_calculator)
ADD_SUBDIRECTORY(skrooge_categories)
ADD_SUBDIRECTORY(skrooge_importexport)
ADD_SUBDIRECTORY(skrooge_monthly)
ADD_SUBDIRECTORY(skrooge_operation)
ADD_SUBDIRECTORY(skrooge_report)
ADD_SUBDIRECTORY(skrooge_scheduled)
ADD_SUBDIRECTORY(skrooge_search)
ADD_SUBDIRECTORY(skrooge_payee)
ADD_SUBDIRECTORY(skrooge_tracker)
ADD_SUBDIRECTORY(skrooge_unit)
ADD_SUBDIRECTORY(images)

IF(SKG_BUILD_TEST AND NOT WIN32)
	ADD_SUBDIRECTORY(skgbasemodelertest)
	ADD_SUBDIRECTORY(skgbankmodelertest)
	ADD_SUBDIRECTORY(skgbaseguitest)
	ADD_SUBDIRECTORY(skgbankguitest)
	ADD_SUBDIRECTORY(skroogetest)
ENDIF(SKG_BUILD_TEST AND NOT WIN32)

#Main application
ADD_SUBDIRECTORY(skrooge)

CONFIGURE_FILE(scripts/addNewPlugin.sh.in scripts/addNewPlugin.sh @ONLY)

#TESTS
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/tests/scripts/init.sh.in ${PROJECT_SOURCE_DIR}/tests/scripts/init.sh @ONLY)
ENABLE_TESTING()
INCLUDE(Dart)
INCLUDE(CTest)

#DOXYGEN
CONFIGURE_FILE(scripts/Doxyfile.in scripts/Doxyfile @ONLY)
ADD_CUSTOM_TARGET(apidox "doxygen" "scripts/Doxyfile" DEPENDS "scripts/Doxyfile.in")

#KRAZY
CONFIGURE_FILE(scripts/krazy.sh.in scripts/krazy.sh @ONLY)
ADD_CUSTOM_TARGET(krazy "scripts/krazy.sh")

#GENERATE_ICONS
CONFIGURE_FILE(scripts/generateIcons.sh.in scripts/generateIcons.sh @ONLY)

#LCOV
CONFIGURE_FILE(scripts/removeTmpFile.sh.in scripts/removeTmpFile.sh @ONLY)
CONFIGURE_FILE(scripts/lcov.sh.in scripts/lcov.sh @ONLY)
ADD_CUSTOM_TARGET(lcov "scripts/lcov.sh")
ADD_CUSTOM_TARGET(lcovclean "scripts/lcov.sh" "-b")

#FULL
ADD_CUSTOM_TARGET(full "scripts/full.sh")

#PACKAGING
INCLUDE(InstallRequiredSystemLibraries)
SET(CPACK_SET_DESTDIR TRUE)
SET(CPACK_GENERATOR "DEB")
SET(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME})
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Personal finance management tool for KDE4, with the aim of being highly intuitive, while providing powerful functions such as reporting (including graphics), persistent Undo/Redo, encryption, and much more...")
SET(CPACK_PACKAGE_VENDOR "Stephane MANKOWSKI / Guillaume DE BURE")
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
SET(CPACK_PACKAGE_VERSION_MAJOR "0")
SET(CPACK_PACKAGE_VERSION_MINOR "7")
SET(CPACK_PACKAGE_VERSION_PATCH "4")
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${VERSION}")
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${VERSION}-dev")
SET(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_BINARY_DIR};skrooge;ALL;/")

SET(CPACK_SOURCE_GENERATOR "TGZ")
SET(CPACK_SOURCE_IGNORE_FILES
"${CMAKE_BINARY_DIR}/bin"
"${CMAKE_BINARY_DIR}/lib"
"${CMAKE_BINARY_DIR}/cov"
"${CMAKE_BINARY_DIR}/_CPack*"
"${CMAKE_BINARY_DIR}/html"
"${CMAKE_BINARY_DIR}/lib"
"${CMAKE_BINARY_DIR}/log"
"${CMAKE_BINARY_DIR}/Testing"
".svn"
"CMake*"
"Makefile"
"output"
".*.cmake"
".*~"
".*.moc"
".*.gz"
".*.deb"
".*.rpm"
"ui.*.h"
"Dart.*"
"install_manifest.txt"
)

SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.4), kdebase-runtime, kdebase-runtime-data, libqca2 (>= 2.0.0), libqt4-core (>= 4.5), libqt4-gui (>= 4.5), libqt4-sql-sqlite, libofx4")
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "stephane@mankowski.fr")
SET(CPACK_DEBIAN_PACKAGE_SECTION "financial")


#SET(CPACK_RPM_PACKAGE_LICENSE "GPL")
#SET(CPACK_RPM_PACKAGE_DEPENDS "kdebase4-runtime, libqtcore4 (>= 4.4.1), libqtgui4 (>= 4.4.1), qt4-database-plugin-sqlite-lib (>= 4.4.1)")
#SET(CPACK_RPM_PACKAGE_SECTION "financial")
#SET(CPACK_RPM_PACKAGE_VERSION ${VERSION})
#SET(CPACK_RPM_PACKAGE_ARCHITECTURE "i586")
#SET(CPACK_RPM_PACKAGE_RELEASE "1mdv2009.0")

#SET(CPACK_STRIP_FILES "bin/skrooge")
#SET(CPACK_SOURCE_STRIP_FILES "")
#SET(CPACK_PACKAGE_EXECUTABLES "skrooge" "skrooge")
INCLUDE(CPack)

find_package(Msgfmt REQUIRED)
find_package(Gettext REQUIRED)
add_subdirectory( po )
add_subdirectory( doc-translations )
add_subdirectory( doc )
