CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
PROJECT(bear-engine)

# where the game programs are installed
IF( NOT BEAR_ENGINE_INSTALL_EXECUTABLE_DIR )
  SET( BEAR_ENGINE_INSTALL_EXECUTABLE_DIR bin )
ENDIF( NOT BEAR_ENGINE_INSTALL_EXECUTABLE_DIR )

# where the engine libraries are installed
IF( NOT BEAR_ENGINE_INSTALL_LIBRARY_DIR )
  IF( WIN32 )
    SET( BEAR_ENGINE_INSTALL_LIBRARY_DIR
      "${BEAR_ENGINE_INSTALL_EXECUTABLE_DIR}"
      )
  ELSE( WIN32 )
    SET( BEAR_ENGINE_INSTALL_LIBRARY_DIR lib )
  ENDIF( WIN32 )
ENDIF( NOT BEAR_ENGINE_INSTALL_LIBRARY_DIR )

# Directories where the executable and libraries are built
SET( EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}/bin" )
SET( LIBRARY_OUTPUT_PATH "${EXECUTABLE_OUTPUT_PATH}" )

# common flags
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" )

#-------------------------------------------------------------------------------
# various libraries

#-------------------------------------------------------------------------------
# Claw

# Not really optional, but we want to display a custom message if we do not find
# the module
INCLUDE(FindCLAW OPTIONAL)

IF( NOT CLAW_FOUND )
  MESSAGE( FATAL_ERROR
    "It seems that libclaw is not installed on your system. If your "
    "distribution does not give you an easy installation procedure, check "
    "http://libclaw.sourceforge.net/ to download it."
    )

ENDIF( NOT CLAW_FOUND )

#-------------------------------------------------------------------------------
# Include directories for Claw
INCLUDE_DIRECTORIES(
  ${CLAW_INCLUDE_DIRECTORY}
  ${CLAW_GRAPHIC_INCLUDE_DIRECTORY}
  )

#-------------------------------------------------------------------------------
# Link directories for Claw
LINK_DIRECTORIES(
  ${CLAW_LINK_DIRECTORY}
  ${CLAW_GRAPHIC_LINK_DIRECTORY}
  )

#-------------------------------------------------------------------------------
# Boost
INCLUDE(FindBoost)

FIND_PACKAGE( Boost 1.33 REQUIRED COMPONENTS filesystem thread )

IF( NOT Boost_FOUND )
  MESSAGE( FATAL_ERROR 
    "You must have the boost::filesystem library installed (at least 1.33)" )
ENDIF( NOT Boost_FOUND )

#-------------------------------------------------------------------------------
# Include directories for Boost
INCLUDE_DIRECTORIES(
  ${Boost_INCLUDE_DIR}
  )

#-------------------------------------------------------------------------------
# Link directories for Boost
LINK_DIRECTORIES(
  ${Boost_LIBRARY_DIRS}
  )

#-------------------------------------------------------------------------------
# check boost::Spirit
FIND_PATH( BOOST_SPIRIT boost/spirit.hpp PATHS ${Boost_INCLUDE_DIR} )

IF ( NOT BOOST_SPIRIT )
  MESSAGE( FATAL_ERROR
    "You must have the Boost::Spirit library installed (at least 1.33)" )
ENDIF( NOT BOOST_SPIRIT )

#-------------------------------------------------------------------------------
# check OpenGL
INCLUDE( FindOpenGL )

IF( NOT OPENGL_FOUND )
  MESSAGE( FATAL_ERROR "OpenGL must be installed." )
ENDIF( NOT OPENGL_FOUND )

#-------------------------------------------------------------------------------
# check SDL
INCLUDE( FindSDL )

IF( NOT SDL_FOUND )
  MESSAGE( FATAL_ERROR "SDL lbrary must be installed." )
ELSE( NOT SDL_FOUND )
  #-----------------------------------------------------------------------------
  # Include directories for SDL
  INCLUDE_DIRECTORIES(
    ${SDL_INCLUDE_DIR}
    )
ENDIF( NOT SDL_FOUND )

#-------------------------------------------------------------------------------
# check SDL::mixer
INCLUDE( FindSDL_mixer )

IF( NOT SDLMIXER_FOUND )
  MESSAGE( FATAL_ERROR "SDL_mixer lbrary must be installed." )
ELSE( NOT SDLMIXER_FOUND )
  #-----------------------------------------------------------------------------
  # Include directories for all these libraries
  INCLUDE_DIRECTORIES(
    ${SDLMIXER_INCLUDE_DIR}
    )
ENDIF( NOT SDLMIXER_FOUND )

#-------------------------------------------------------------------------------
# Link directories for the game
LINK_DIRECTORIES(
  ${LIBRARY_OUTPUT_PATH}
  )

#-------------------------------------------------------------------------------
INCLUDE_DIRECTORIES( common/include )

SET( BEAR_ENGINE_INCLUDE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/core/src" )

#-------------------------------------------------------------------------------
SUBDIRS(
  common
  core
  lib
  running_bear
  desktop
  )
