cmake_minimum_required(VERSION 2.8)

cmake_policy(SET CMP0015 NEW)

project(TetrisCommand)

# Full warning
SET(CMAKE_CXX_WARNING_LEVEL 4)
if (DEFINED MSYS)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
endif ()

if (DEFINED CMAKE_COMPILER_IS_GNUCC OR DEFINED CMAKE_COMPILER_IS_GNUCXX)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -g")
endif ()

link_directories(./lib)

file(
    GLOB_RECURSE
    sources
    src/*.cpp
    src/*.hpp
)

# Executable
add_executable(
    TetrisCommand
    ${sources}
)

set(SDL_ROOT "./" CACHE PATH "The location of the SDL install prefix (only used if the SDL is not yet found)")
if(SDL_ROOT)
   set(CMAKE_PREFIX_PATH ${SDL_ROOT})
endif()

# Finding libraries
find_package (SDL)
if (SDL_FOUND)
  include_directories(${SDL_INCLUDE_DIR})
  target_link_libraries (TetrisCommand ${SDL_LIBRARY})
  # MESSAGE("  SDL_INCLUDE_DIR='${SDL_INCLUDE_DIR}'")
else ()
  MESSAGE(FATAL_ERROR "SDL not found")
endif (SDL_FOUND)

find_package (SDL_image)
if (SDLIMAGE_FOUND)
  include_directories(${SDLIMAGE_INCLUDE_DIR})
  target_link_libraries (TetrisCommand ${SDLIMAGE_LIBRARY})
  # MESSAGE("  SDLIMAGE_INCLUDE_DIR='${SDLIMAGE_INCLUDE_DIR}'")
else ()
  # Since the FindSDL_image is a bit incomplete, from my point of view, I will try to specify the directories myself
  if (MSYS OR MINGW)
    MESSAGE(STATUS "Define default paths for SDL on Windows")
	set (SDLIMAGE_INCLUDE_DIR "./include/SDL")
	set (SDLIMAGE_LIBRARY "./include/SDL_image.lib")
	include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/SDL)
	target_link_libraries (TetrisCommand ${CMAKE_CURRENT_SOURCE_DIR}/lib/SDL_image.lib)
  else ()
	MESSAGE(FATAL_ERROR "SDL_image not found")
  endif (MSYS OR MINGW)
endif (SDLIMAGE_FOUND)

include_directories(./src)
include_directories(./include)

include(ExternalProject)
ExternalProject_Add(
    NEngine_lib
    SVN_REPOSITORY https://openawars.googlecode.com/svn/branches/NEngine
    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_SOURCE_DIR}/
    INSTALL_DIR ./
)

target_link_libraries (TetrisCommand NEngine)

# Force to compile NEngine before the game
add_dependencies(TetrisCommand NEngine_lib)
