##############################################################################
# ________       .___.__           _____  .___ 
# \_____  \    __| _/|__| ____    /  _  \ |   |
#  /   |   \  / __ | |  |/    \  /  /_\  \|   |
# /    |    \/ /_/ | |  |   |  \/    |    \   |
# \_______  /\____ | |__|___|  /\____|__  /___|
#         \/      \/         \/         \/     
#
# Copyright (c) Emil SandstÃ¸ 2014
##############################################################################
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(OdinAI)

SET(ODINAI_VERSION_MAJOR 1)
SET(ODINAI_VERSION_MINOR 0)

#Use C++11 when we are compiling with GCC
IF(CMAKE_COMPILER_IS_GNUCXX)
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
ENDIF()

SET(ODINAI_SRC_DIR "${PROJECT_SOURCE_DIR}/Source")
SET(ODINAI_INC_DIR "${PROJECT_SOURCE_DIR}/Include/OdinAI")
INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/Include/")

CONFIGURE_FILE("${ODINAI_INC_DIR}/OdinAIConfig.h.cmake" "${ODINAI_INC_DIR}/OdinAIConfig.h")

SET(ODINAI_SRC
    ${ODINAI_SRC_DIR}/Goals.cpp
    ${ODINAI_SRC_DIR}/EventManager.cpp
    ${ODINAI_SRC_DIR}/Timer.cpp
    ${ODINAI_SRC_DIR}/NetworkManager.cpp
    ${ODINAI_SRC_DIR}/OdinAIRoot.cpp
    ${ODINAI_SRC_DIR}/GraphEdges.cpp
    ${ODINAI_SRC_DIR}/GraphNodes.cpp
#Put the source files here...
)

# OS dependent source files.
IF(${UNIX})
    SET(ODINAI_SRC
        ${ODINAI_SRC}
        ${ODINAI_SRC_DIR}/NetworkManager_Linux.cpp)
ENDIF()

IF(${WIN32})
    SET(ODINAI_SRC
        ${ODINAI_SRC}
        ${ODINAI_SRC_DIR}/NetworkManager_Win.cpp)
ENDIF()

SET(ODINAI_HDR
    ${ODINAI_INC_DIR}/Goals.h
    ${ODINAI_INC_DIR}/MathUtil.h
    ${ODINAI_INC_DIR}/Event.h
    ${ODINAI_INC_DIR}/OdinAIConfig.h
    ${ODINAI_INC_DIR}/DebugUtil.h
    ${ODINAI_INC_DIR}/EventManager.h
    ${ODINAI_INC_DIR}/SharedDefs.h
    ${ODINAI_INC_DIR}/Timer.h
    ${ODINAI_INC_DIR}/OdinAIRoot.h
    ${ODINAI_INC_DIR}/GraphEdges.h
    ${ODINAI_INC_DIR}/GraphNodes.h
    ${ODINAI_INC_DIR}/PriorityQueue.h
    ${ODINAI_INC_DIR}/SparseGraph.h
    ${ODINAI_INC_DIR}/AStarGraphSearch.h
    ${ODINAI_INC_DIR}/NetworkManager.h
	${ODINAI_INC_DIR}/DijkstraGraphSearch.h
	${ODINAI_INC_DIR}/PathValidator.h
#Put the header files here...
)

SET(CMAKE_DEBUG_PREFIX "_d")

if (CMAKE_BUILD_TYPE STREQUAL "")
    #Overload default option, to prevent none CMAKE_BUILD_TYPE
    set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug or Release" FORCE)
endif ()

SET(LIBRARY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/Lib")
ADD_LIBRARY(OdinAI ${ODINAI_SRC} ${ODINAI_HDR})

#Install if UNIX system
IF(UNIX)
    INSTALL(TARGETS OdinAI DESTINATION lib)
    INSTALL(FILES ${ODINAI_HDR} DESTINATION include/OdinAI)
ENDIF(UNIX)

ADD_SUBDIRECTORY("Projects/Drops_n_Bass")
