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(SKG_VERSION "0.8.1")
SET(SKG_BETA "")
SET(SOVERSION 0)
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=${SKG_VERSION})
if(${KDE_VERSION} VERSION_LESS "4.6.0")
    MESSAGE( STATUS "     enable KDE 4.5 API")
else(${KDE_VERSION} VERSION_LESS "4.6.0")
    MESSAGE( STATUS "     enable KDE 4.6 API")
    add_definitions(-DSKGKDE46ENABLED=Y)
endif(${KDE_VERSION} VERSION_LESS "4.6.0")

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_budget)
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(WIN32)
    MESSAGE( STATUS "     Doc disabled on windows")
ELSE(WIN32)
    ADD_SUBDIRECTORY(doc)
ENDIF(WIN32)

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
ADD_CUSTOM_TARGET(apidox "doxygen" "${PROJECT_SOURCE_DIR}/Doxyfile")

#ASTYLE
CONFIGURE_FILE(scripts/astyle.sh.in scripts/astyle.sh @ONLY)
ADD_CUSTOM_TARGET(astyle "scripts/astyle.sh")

#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)

#GENERATE SPLASH SCREEN
CONFIGURE_FILE(scripts/generateSplash.sh.in scripts/generateSplash.sh @ONLY)
ADD_CUSTOM_TARGET(splash "scripts/generateSplash.sh")

#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")

include(MacroOptionalAddSubdirectory)
macro_optional_add_subdirectory( po )
