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 "1.0.0")
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" OFF)
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} )
MESSAGE( STATUS "     SKG_BUILD_TEST      : " ${SKG_BUILD_TEST} )

IF(CMAKE_BUILD_TYPE MATCHES "profile")
  MESSAGE( STATUS "     TRACES              : All traces activated")
  #add_definitions(-DSKGFULLTRACES)
ELSE(CMAKE_BUILD_TYPE MATCHES "profile")
  IF(CMAKE_BUILD_TYPE MATCHES "debug" OR SKG_BETA MATCHES "BETA")
    MESSAGE( STATUS "     TRACES              : Some traces activated")
  ELSE(CMAKE_BUILD_TYPE MATCHES "debug" OR SKG_BETA MATCHES "BETA")
    MESSAGE( STATUS "     TRACES              : All traces disabled")
    add_definitions(-DSKGNOTRACES)
  ENDIF(CMAKE_BUILD_TYPE MATCHES "debug" OR SKG_BETA MATCHES "BETA")
ENDIF(CMAKE_BUILD_TYPE MATCHES "profile")

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)
    
    IF (CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
        ADD_DEFINITIONS( -DQT_DEBUG )
    ENDIF (CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)    
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(skgmyapplitest) #<-- Experimental plugin, do not activate

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

ADD_SUBDIRECTORY(plugins)
ADD_SUBDIRECTORY(images)

IF(SKG_BUILD_TEST AND NOT WIN32)
	ADD_SUBDIRECTORY(tests)
ENDIF(SKG_BUILD_TEST AND NOT WIN32)

#Main application
ADD_SUBDIRECTORY(skrooge)
ADD_SUBDIRECTORY(skroogeconvert)

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

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

CONFIGURE_FILE(CTestCustom.cmake CTestCustom.cmake @ONLY)

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


include(MacroOptionalAddSubdirectory)
macro_optional_add_subdirectory( po )

include(MacroOptionalAddSubdirectory)
macro_optional_add_subdirectory( doc )
