#
# This is the CMakeLists.txt file for the Guiliani library
#

# ========== Minimum cmake version required ==========
CMAKE_MINIMUM_REQUIRED(VERSION 3.13)

SET(PATH_COMMON "${CMAKE_CURRENT_SOURCE_DIR}/../CMake" CACHE PATH "CMake common files directory path")

# ========== Setup configurations ==========
INCLUDE("${PATH_COMMON}/Common_settings.cmake")

# Configuration for SDK Package
IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CPackPackages.cmake")
  # Only add SDK settings if cmake sdk packages file exists
  SET(SDK_PACKAGE_GENERATOR CACHE BOOL "Generate Guiliani SDK Install Packages")
ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CPackPackages.cmake")

# ========== Set project name and version number ==========
PROJECT(Guiliani VERSION "2.4.0")

# ========== Core files ==========
FILE(GLOB CORE_CPP "${PROJECT_SOURCE_DIR}/Source/Core/*.cpp")
SOURCE_GROUP("Source Files\\Core" FILES ${CORE_CPP})
FILE(GLOB CORE_H "${PROJECT_SOURCE_DIR}/Include/Core/*.h")
SOURCE_GROUP("Header Files\\Core" FILES ${CORE_H})

IF(GUILIANI_PACKAGE_ADD_ANIMATION)
FILE(GLOB CORE_ANIMATION_CPP "${PROJECT_SOURCE_DIR}/Source/Core/Animation/*.cpp")
SOURCE_GROUP("Source Files\\Core\\Animation" FILES ${CORE_ANIMATION_CPP})
FILE(GLOB CORE_ANIMATION_H "${PROJECT_SOURCE_DIR}/Include/Core/Animation/*.h")
SOURCE_GROUP("Header Files\\Core\\Animation" FILES ${CORE_ANIMATION_H})
ENDIF(GUILIANI_PACKAGE_ADD_ANIMATION)

FILE(GLOB CORE_BEHAVIOUR_CPP "${PROJECT_SOURCE_DIR}/Source/Core/Behaviour/*.cpp")
SOURCE_GROUP("Source Files\\Core\\Behaviour" FILES ${CORE_BEHAVIOUR_CPP})
FILE(GLOB CORE_BEHAVIOUR_H "${PROJECT_SOURCE_DIR}/Include/Core/Behaviour/*.h")
SOURCE_GROUP("Header Files\\Core\\Behaviour" FILES ${CORE_BEHAVIOUR_H})

FILE(GLOB CORE_COMMAND_CPP "${PROJECT_SOURCE_DIR}/Source/Core/Command/*.cpp")
SOURCE_GROUP("Source Files\\Core\\Command" FILES ${CORE_COMMAND_CPP})
FILE(GLOB CORE_COMMAND_H "${PROJECT_SOURCE_DIR}/Include/Core/Command/*.h")
SOURCE_GROUP("Header Files\\Core\\Command" FILES ${CORE_COMMAND_H})

FILE(GLOB CORE_CONTROL_CPP "${PROJECT_SOURCE_DIR}/Source/Core/Control/*.cpp")
SOURCE_GROUP("Source Files\\Core\\Control" FILES ${CORE_CONTROL_CPP})
FILE(GLOB CORE_CONTROL_H "${PROJECT_SOURCE_DIR}/Include/Core/Control/*.h")
SOURCE_GROUP("Header Files\\Core\\Control" FILES ${CORE_CONTROL_H})

FILE(GLOB CORE_EXCEPTION_CPP "${PROJECT_SOURCE_DIR}/Source/Core/Exception/*.cpp")
SOURCE_GROUP("Source Files\\Core\\Exception" FILES ${CORE_EXCEPTION_CPP})
FILE(GLOB CORE_EXCEPTION_H "${PROJECT_SOURCE_DIR}/Include/Core/Exception/*.h")
SOURCE_GROUP("Header Files\\Core\\Exception" FILES ${CORE_EXCEPTION_H})

FILE(GLOB CORE_LAYOUTER_CPP "${PROJECT_SOURCE_DIR}/Source/Core/Layouter/*.cpp")
SOURCE_GROUP("Source Files\\Core\\Layouter" FILES ${CORE_LAYOUTER_CPP})
FILE(GLOB CORE_LAYOUTER_H "${PROJECT_SOURCE_DIR}/Include/Core/Layouter/*.h")
SOURCE_GROUP("Header Files\\Core\\Layouter" FILES ${CORE_LAYOUTER_H})

IF(GUILIANI_PACKAGE_ADD_STREAMING)
FILE(GLOB CORE_STREAMING_CPP "${PROJECT_SOURCE_DIR}/Source/Core/Streaming/*.cpp")
SOURCE_GROUP("Source Files\\Core\\Streaming" FILES ${CORE_STREAMING_CPP})
FILE(GLOB CORE_STREAMING_H "${PROJECT_SOURCE_DIR}/Include/Core/Streaming/*.h")
SOURCE_GROUP("Header Files\\Core\\Streaming" FILES ${CORE_STREAMING_H})
ENDIF(GUILIANI_PACKAGE_ADD_STREAMING)

FILE(GLOB CORE_TRANSITION_CPP "${PROJECT_SOURCE_DIR}/Source/Core/Transition/*.cpp")
SOURCE_GROUP("Source Files\\Core\\Transition" FILES ${CORE_TRANSITION_CPP})
FILE(GLOB CORE_TRANSITION_H "${PROJECT_SOURCE_DIR}/Include/Core/Transition/*.h")
SOURCE_GROUP("Header Files\\Core\\Transition" FILES ${CORE_TRANSITION_H})

FILE(GLOB CORE_UTILS_CPP "${PROJECT_SOURCE_DIR}/Source/Core/Utils/*.cpp")
SOURCE_GROUP("Source Files\\Core\\Utils" FILES ${CORE_UTILS_CPP})
FILE(GLOB CORE_UTILS_H "${PROJECT_SOURCE_DIR}/Include/Core/Utils/*.h")
SOURCE_GROUP("Header Files\\Core\\Utils" FILES ${CORE_UTILS_H})

FILE(GLOB CORE_VIDEO_CPP "${PROJECT_SOURCE_DIR}/Source/Core/Video/*.cpp")
SOURCE_GROUP("Source Files\\Core\\Video" FILES ${CORE_VIDEO_CPP})
FILE(GLOB CORE_VIDEO_H "${PROJECT_SOURCE_DIR}/Include/Core/Video/*.h")
SOURCE_GROUP("Header Files\\Core\\Video" FILES ${CORE_VIDEO_H})

# ========== GUIConfig files ==========
FILE(GLOB GUICONFIG_H "${PROJECT_SOURCE_DIR}/Include/GUIConfig/*.h")
SOURCE_GROUP("Header Files\\GUIConfig" FILES ${GUICONFIG_H})

IF(GUILIANI_PACKAGE_ADD_CONNECTION)
  # ========== Connection files ==========
  FILE(GLOB CONNECTION_CPP "${PROJECT_SOURCE_DIR}/Source/Connection/*.cpp")
  SOURCE_GROUP("Source Files\\Connection" FILES ${CONNECTION_CPP})

  FILE(GLOB CONNECTION_H "${PROJECT_SOURCE_DIR}/Include/Connection/*.h")
  SOURCE_GROUP("Header Files\\Connection" FILES ${CONNECTION_H})
ENDIF(GUILIANI_PACKAGE_ADD_CONNECTION)

# ========== Shared files ==========
IF(GUILIANI_ADD_DUMMY_FILESYSTEM_WRAPPER)
  SET(DUMMY_FILESYSTEM_CPP "${PROJECT_SOURCE_DIR}/Share/GUIFileSysWrapDummy.cpp")
ENDIF(GUILIANI_ADD_DUMMY_FILESYSTEM_WRAPPER)

IF(GUILIANI_ADD_DUMMY_THREAD_WRAPPER)
  SET(DUMMY_THREAD_CPP "${PROJECT_SOURCE_DIR}/Share/GUIThreadDummy.cpp")
ENDIF(GUILIANI_ADD_DUMMY_THREAD_WRAPPER)

SET(SHARE_CPP
  ${DUMMY_FILESYSTEM_CPP}
  ${DUMMY_THREAD_CPP}
)

SOURCE_GROUP("Source Files\\Share" FILES ${SHARE_CPP})

# ========== Image decoder files ==========
IF(GUILIANI_ADD_IMAGE_DECODER)
  FILE(GLOB IMAGE_DECODER_CPP "${PROJECT_SOURCE_DIR}/Source/ImageDecoder/*.cpp" )
  SOURCE_GROUP("Source Files\\Image Decoder" FILES ${IMAGE_DECODER_CPP})
  FILE(GLOB IMAGE_DECODER_H "${PROJECT_SOURCE_DIR}/Include/ImageDecoder/*.h" )
  SOURCE_GROUP("Header Files\\Image Decoder" FILES ${IMAGE_DECODER_H})
  LIST(APPEND PREPROCESSOR_DEFINES GUILIANI_ADD_IMAGE_DECODER)
ENDIF(GUILIANI_ADD_IMAGE_DECODER)

# ========== General platform files ==========
FILE(GLOB PLATFORM_GENERAL_CPP
  "${PROJECT_SOURCE_DIR}/Source/Platform/general/*.cpp"
)

IF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)
    LIST(REMOVE_ITEM PLATFORM_GENERAL_CPP
      "${PROJECT_SOURCE_DIR}/Source/Platform/general/FntWrapGlyphLib.cpp"
    )
ENDIF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)

SOURCE_GROUP("Source Files\\Platform\\General" FILES ${PLATFORM_GENERAL_CPP})

FILE(GLOB PLATFORM_GENERAL_H
  "${PROJECT_SOURCE_DIR}/Include/Platform/general/*.h"
)
IF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)
  LIST(REMOVE_ITEM PLATFORM_GENERAL_H
    "${PROJECT_SOURCE_DIR}/Include/Platform/general/FntWrapGlyphLib.h"
  )
ENDIF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)
SOURCE_GROUP("Header Files\\Platform\\General" FILES ${PLATFORM_GENERAL_H})

# ========== eGML platform files ==========
IF(GUILIANI_ADD_EGML_PLATFORM)
  FILE(GLOB PLATFORM_EGML_CPP
    "${PROJECT_SOURCE_DIR}/Source/Platform/eGML/*.cpp"
  )
  IF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)
    LIST(REMOVE_ITEM PLATFORM_EGML_CPP
      "${PROJECT_SOURCE_DIR}/Source/Platform/eGML/FntWrapGlyphLibeGML.cpp"
    )
  ENDIF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)
  SOURCE_GROUP("Source Files\\Platform\\eGML" FILES ${PLATFORM_EGML_CPP})
  
  FILE(GLOB PLATFORM_EGML_H
    "${PROJECT_SOURCE_DIR}/Include/Platform/eGML/*.h"
  )
  IF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)
    LIST(REMOVE_ITEM PLATFORM_EGML_H
      "${PROJECT_SOURCE_DIR}/Include/Platform/eGML/FntWrapGlyphLibeGML.h"
    )
  ENDIF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)
  SOURCE_GROUP("Header Files\\Platform\\eGML" FILES ${PLATFORM_EGML_H})
ENDIF(GUILIANI_ADD_EGML_PLATFORM)

# ========== DAVE platform files ==========
IF(GUILIANI_ADD_DAVE_PLATFORM)
  SET(PLATFORM_DAVE_CPP
    "${PROJECT_SOURCE_DIR}/Source/Platform/DAVE/FntWrapFreeTypeDaveCached.cpp"
    "${PROJECT_SOURCE_DIR}/Source/Platform/DAVE/FntWrapFreeTypeDaveUncached.cpp"
    "${PROJECT_SOURCE_DIR}/Source/Platform/DAVE/FntWrapFreeTypeDaveCache.cpp"
    "${PROJECT_SOURCE_DIR}/Source/Platform/DAVE/GfxWrapDave.cpp"
    "${PROJECT_SOURCE_DIR}/Source/Platform/DAVE/DAVEScreen.cpp"
    "${PROJECT_SOURCE_DIR}/Source/Platform/DAVE/GUIImageDataDAVE.cpp"
    "${PROJECT_SOURCE_DIR}/Source/Platform/DAVE/GUIBitmapPlane_DAVE.cpp"
  )

  # add fntwrap
  IF(GUILIANI_ADD_GLYPHLIB_PLATFORM)
    SET(PLATFORM_DAVE_CPP
      ${PLATFORM_DAVE_CPP}
      "${PROJECT_SOURCE_DIR}/Source/Platform/DAVE/FntWrapGlyphLibDaveCached.cpp"
      "${PROJECT_SOURCE_DIR}/Source/Platform/DAVE/FntWrapGlyphLibDaveUncached.cpp"
      "${PROJECT_SOURCE_DIR}/Source/Platform/DAVE/FntWrapGlyphLibDaveCache.cpp"
    )
  ENDIF(GUILIANI_ADD_GLYPHLIB_PLATFORM)
  
  SOURCE_GROUP("Source Files\\Platform\\DAVE" FILES ${PLATFORM_DAVE_CPP})

  SET(PLATFORM_DAVE_H
    "${PROJECT_SOURCE_DIR}/Include/Platform/DAVE/FntWrapFreeTypeDaveCached.h"
    "${PROJECT_SOURCE_DIR}/Include/Platform/DAVE/FntWrapFreeTypeDaveUncached.h"
    "${PROJECT_SOURCE_DIR}/Include/Platform/DAVE/FntWrapFreeTypeDaveCache.h"
    "${PROJECT_SOURCE_DIR}/Include/Platform/DAVE/GfxWrapDave.h"
    "${PROJECT_SOURCE_DIR}/Include/Platform/DAVE/DAVEScreen.h"
    "${PROJECT_SOURCE_DIR}/Include/Platform/DAVE/GUIBitmapPlane_DAVE.h"
  )

  # add dc-wrap
  IF(GUILIANI_ADD_DCWRAP_PLATFORM)
    SET(PLATFORM_DAVE_H
      ${PLATFORM_DAVE_H}
      "${PROJECT_SOURCE_DIR}/Include/Platform/DAVE/DCWrapDAVE.h"
    )
  ENDIF(GUILIANI_ADD_DCWRAP_PLATFORM)
  
  # add fntwrap
  IF(GUILIANI_ADD_GLYPHLIB_PLATFORM)
    SET(PLATFORM_DAVE_H
      ${PLATFORM_DAVE_H}
      "${PROJECT_SOURCE_DIR}/Include/Platform/DAVE/FntWrapGlyphLibDaveCached.h"
      "${PROJECT_SOURCE_DIR}/Include/Platform/DAVE/FntWrapGlyphLibDaveUncached.h"
      "${PROJECT_SOURCE_DIR}/Include/Platform/DAVE/FntWrapGlyphLibDaveCache.h"
    )
  ENDIF(GUILIANI_ADD_GLYPHLIB_PLATFORM)

  SOURCE_GROUP("Header Files\\Platform\\DAVE" FILES ${PLATFORM_DAVE_H})
ENDIF(GUILIANI_ADD_DAVE_PLATFORM)

# ========== GL platform files ==========
IF(GUILIANI_ADD_GL_PLATFORM)
  FILE(GLOB PLATFORM_GL_CPP
    "${PROJECT_SOURCE_DIR}/Source/Platform/GL/*.cpp"
  )
  IF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)
    LIST(REMOVE_ITEM PLATFORM_GL_CPP
      "${PROJECT_SOURCE_DIR}/Source/Platform/GL/FntWrapGlyphLibGL.cpp"
      "${PROJECT_SOURCE_DIR}/Source/Platform/GL/FntWrapGlyphLibGLCache.cpp"
    )
  ENDIF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)
  SOURCE_GROUP("Source Files\\Platform\\GL" FILES ${PLATFORM_GL_CPP})
  
  FILE(GLOB PLATFORM_GL_H
    "${PROJECT_SOURCE_DIR}/Include/Platform/GL/*.h"
  )
  IF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)
    LIST(REMOVE_ITEM PLATFORM_GL_H
      "${PROJECT_SOURCE_DIR}/Include/Platform/GL/FntWrapGlyphLibGL.h"
      "${PROJECT_SOURCE_DIR}/Include/Platform/GL/FntWrapGlyphLibGLCache.h"
    )
  ENDIF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)
  SOURCE_GROUP("Header Files\\Platform\\GL" FILES ${PLATFORM_GL_H})
ENDIF(GUILIANI_ADD_GL_PLATFORM)

IF("${GUILIANI_OGL_PLATFORM}" STREQUAL "OpenGL")
  MESSAGE(STATUS "OPENGL selected")
  # ========== OGL platform files ==========
  SET(GUILIANI_OGL_VERSION "GUILIANI_USE_OGL")

  FILE(GLOB PLATFORM_OGL_CPP "${PROJECT_SOURCE_DIR}/Source/Platform/GL/OGL/*.cpp" )
  SOURCE_GROUP("Source Files\\Platform\\GL\\OGL" FILES ${PLATFORM_OGL_CPP})

  FILE(GLOB PLATFORM_OGL_H "${PROJECT_SOURCE_DIR}/Include/Platform/GL/OGL/*.h" )
  SOURCE_GROUP("Header Files\\Platform\\GL\\OGL" FILES ${PLATFORM_OGL_H})
ELSEIF("${GUILIANI_OGL_PLATFORM}" STREQUAL "OpenGL ES 1.1")
  MESSAGE(STATUS "OGLES11 selected")
  # ========== OGLES 1.1 platform files ==========
  SET(GUILIANI_OGL_VERSION "GUILIANI_USE_OGLES11")
  SET(PLATFORM_OGLES_CPP
    "${PROJECT_SOURCE_DIR}/Source/Platform/GL/OGLES/EGLEnvironment.cpp"
    "${PROJECT_SOURCE_DIR}/Source/Platform/GL/OGLES/GfxWrapOGLES.cpp"
    "${PROJECT_SOURCE_DIR}/Source/Platform/GL/OGLES/GfxWrapOGLES1_1.cpp"
    "${PROJECT_SOURCE_DIR}/Source/Platform/GL/OGLES/GUIBitmapPlane_PBuffer.cpp"
  )
  SET(PLATFORM_OGLES_H
    "${PROJECT_SOURCE_DIR}/Include/Platform/GL/OGLES/EGLEnvironment.h"
    "${PROJECT_SOURCE_DIR}/Include/Platform/GL/OGLES/GfxWrapOGLES.h"
    "${PROJECT_SOURCE_DIR}/Include/Platform/GL/OGLES/GfxWrapOGLES1_1.h"
    "${PROJECT_SOURCE_DIR}/Include/Platform/GL/OGLES/GUIBitmapPlane_PBuffer.h"
  )
  
  SOURCE_GROUP("Source Files\\Platform\\GL\\OGLES" FILES ${PLATFORM_OGLES_CPP})
  SOURCE_GROUP("Header Files\\Platform\\GL\\OGLES" FILES ${PLATFORM_OGLES_H})
ELSEIF("${GUILIANI_OGL_PLATFORM}" STREQUAL "OpenGL ES 2.0")
  MESSAGE(STATUS "OGLES2 selected")
  # ========== OGLES 2.0 platform files ==========
  SET(GUILIANI_OGL_VERSION "GUILIANI_USE_OGLES2")
  SET(PLATFORM_OGLES_CPP
    "${PROJECT_SOURCE_DIR}/Source/Platform/GL/OGLES/EGLEnvironment.cpp"
    "${PROJECT_SOURCE_DIR}/Source/Platform/GL/OGLES/GfxWrapOGLES.cpp"
    "${PROJECT_SOURCE_DIR}/Source/Platform/GL/OGLES/GfxWrapOGLES2.cpp"
  )
  SET(PLATFORM_OGLES_H
    "${PROJECT_SOURCE_DIR}/Include/Platform/GL/OGLES/EGLEnvironment.h"
    "${PROJECT_SOURCE_DIR}/Include/Platform/GL/OGLES/GfxWrapOGLES.h"
    "${PROJECT_SOURCE_DIR}/Include/Platform/GL/OGLES/GfxWrapOGLES2.h"
  )

  SOURCE_GROUP("Source Files\\Platform\\GL\\OGLES" FILES ${PLATFORM_OGLES_CPP})
  SOURCE_GROUP("Header Files\\Platform\\GL\\OGLES" FILES ${PLATFORM_OGLES_H})
ENDIF("${GUILIANI_OGL_PLATFORM}" STREQUAL "OpenGL")

# ========== BLU platform files ==========
IF(GUILIANI_ADD_BLU_PLATFORM)
  FILE(GLOB PLATFORM_BLU_CPP "${PROJECT_SOURCE_DIR}/Source/Platform/BLU/*.cpp" )
  IF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)
    LIST(REMOVE_ITEM PLATFORM_BLU_CPP
      "${PROJECT_SOURCE_DIR}/Source/Platform/BLU/FntWrapGlyphLibBLU.cpp"
    )
  ENDIF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)
  SOURCE_GROUP("Source Files\\Platform\\BLU" FILES ${PLATFORM_BLU_CPP})
  
  FILE(GLOB PLATFORM_BLU_H "${PROJECT_SOURCE_DIR}/Include/Platform/BLU/*.h" )
  IF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)
    LIST(REMOVE_ITEM PLATFORM_BLU_H
      "${PROJECT_SOURCE_DIR}/Include/Platform/BLU/FntWrapGlyphLibBLU.h"
    )
  ENDIF(NOT GUILIANI_ADD_GLYPHLIB_PLATFORM)
  SOURCE_GROUP("Header Files\\Platform\\BLU" FILES ${PLATFORM_BLU_H})
ENDIF(GUILIANI_ADD_BLU_PLATFORM)

# ========== Create complete list of files ==========
SET(SOURCES_LIST 
  ${CORE_CPP}
  ${CORE_H}
  ${CORE_ANIMATION_CPP}
  ${CORE_ANIMATION_H}
  ${CORE_BEHAVIOUR_CPP}
  ${CORE_BEHAVIOUR_H}
  ${CORE_COMMAND_CPP}
  ${CORE_COMMAND_H}
  ${CORE_CONTROL_CPP}
  ${CORE_CONTROL_H}
  ${CORE_EXCEPTION_CPP}
  ${CORE_EXCEPTION_H}
  ${CORE_LAYOUTER_CPP}
  ${CORE_LAYOUTER_H}
  ${CORE_STREAMING_CPP}
  ${CORE_STREAMING_H}
  ${CORE_TRANSITION_CPP}
  ${CORE_TRANSITION_H}
  ${CORE_UTILS_CPP}
  ${CORE_UTILS_H}
  ${CORE_VIDEO_CPP}
  ${CORE_VIDEO_H}
  ${CONNECTION_CPP}
  ${CONNECTION_H}
  ${GUICONFIG_H}
  ${SHARE_CPP}
  ${IMAGE_DECODER_CPP}
  ${IMAGE_DECODER_H}
  ${PLATFORM_GENERAL_CPP}
  ${PLATFORM_GENERAL_H}
  ${PLATFORM_EGML_CPP}
  ${PLATFORM_EGML_H}
  ${PLATFORM_DAVE_CPP}
  ${PLATFORM_DAVE_H}  
  ${PLATFORM_GL_CPP}
  ${PLATFORM_GL_H}
  ${PLATFORM_OGL_CPP}
  ${PLATFORM_OGL_H}
  ${PLATFORM_OGLES_CPP}
  ${PLATFORM_OGLES_H}
  ${PLATFORM_BLU_CPP}
  ${PLATFORM_BLU_H}
)

# ========== Build Guiliani library ==========
ADD_LIBRARY(${PROJECT_NAME} STATIC ${SOURCES_LIST})

# ========== Include correct platform file ==========
INCLUDE("${PATH_COMMON}/Platform.cmake")

# ========== Set include directories ==========
INCLUDE("${PATH_COMMON}/Include_directories.cmake")

# ========== Output some information ==========
INCLUDE("${PATH_COMMON}/Build_information.cmake")

TARGET_SOURCES(${PROJECT_NAME} 
  PRIVATE ${GUILIANI_PLATFORM_FILES}
)

IF(GUILIANI_ADD_IMAGE_DECODER)
  TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME}
    PRIVATE "${PROJECT_SOURCE_DIR}/Include/ImageDecoder"
  )
ENDIF(GUILIANI_ADD_IMAGE_DECODER)

IF(GUILIANI_ADD_EGML_PLATFORM)
  TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME}
    PRIVATE "${PROJECT_SOURCE_DIR}/Include/Platform/eGML"
  )
ENDIF(GUILIANI_ADD_EGML_PLATFORM)

IF(GUILIANI_ADD_DAVE_PLATFORM)
  TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME}
    PRIVATE "${PROJECT_SOURCE_DIR}/Include/Platform/DAVE"
  )
ENDIF(GUILIANI_ADD_DAVE_PLATFORM)

IF(GUILIANI_ADD_GL_PLATFORM)
  TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME}
    PRIVATE "${PROJECT_SOURCE_DIR}/Include/Platform/GL"
  )
ENDIF(GUILIANI_ADD_GL_PLATFORM)

IF("${GUILIANI_OGL_PLATFORM}" STREQUAL "OpenGL")
  TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME}
    PRIVATE "${PROJECT_SOURCE_DIR}/Include/Platform/GL/OGL"
  )
ELSEIF("${GUILIANI_OGL_PLATFORM}" STREQUAL "OpenGL ES 1.1")
  TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME}
    PRIVATE "${PROJECT_SOURCE_DIR}/Include/Platform/GL/OGLES"
  )
ELSEIF("${GUILIANI_OGL_PLATFORM}" STREQUAL "OpenGL ES 2.0")
  TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME}
    PRIVATE "${PROJECT_SOURCE_DIR}/Include/Platform/GL/OGLES"
  )
ENDIF("${GUILIANI_OGL_PLATFORM}" STREQUAL "OpenGL")

IF(GUILIANI_ADD_BLU_PLATFORM)
  TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME}
    PRIVATE "${PROJECT_SOURCE_DIR}/Include/Platform/BLU"
  )
ENDIF(GUILIANI_ADD_BLU_PLATFORM)

# ========== Set preprocessor defines ==========
IF(GUILIANI_USE_RTTI)
  SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_DEFINITIONS "${PREPROCESSOR_DEFINES};${GUILIANI_OGL_VERSION};GUILIANI_GUILIANILIB;GUILIANI_USE_RTTI")
ELSE(GUILIANI_USE_RTTI)
  SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_DEFINITIONS "${PREPROCESSOR_DEFINES};${GUILIANI_OGL_VERSION};GUILIANI_GUILIANILIB")
ENDIF(GUILIANI_USE_RTTI)

SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_DEFINITIONS_DEBUGFIXPOINT "eC_FIXPOINT")
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_DEFINITIONS_RELEASEFIXPOINT "eC_FIXPOINT")

IF(SDK_PACKAGE_GENERATOR)
  INCLUDE(CPackPackages.cmake)
ENDIF(SDK_PACKAGE_GENERATOR)
