PROJECT(plee-the-bear)

SET( GAME_ROOT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" )

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

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

# where the game resources are installed
IF( NOT PTB_INSTALL_DATA_DIR )
  SET( PTB_INSTALL_DATA_DIR share/plee-the-bear )
ENDIF( NOT PTB_INSTALL_DATA_DIR )

# where the game libraries (the items) are installed
IF( NOT PTB_INSTALL_CUSTOM_LIBRARY_DIR )
  SET(
    PTB_INSTALL_CUSTOM_LIBRARY_DIR
    ${BEAR_INSTALL_LIBRARY_DIR}/plee-the-bear
    )
ENDIF( NOT PTB_INSTALL_CUSTOM_LIBRARY_DIR )

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

# common flags
SET( CMAKE_CXX_FLAGS "-ansi -pedantic -Wall ${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)

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

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

# check boost::filesystem
FIND_LIBRARY( BOOST_FILESYSTEM boost_filesystem PATHS ${Boost_LIBRARY_DIRS} )

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

#-------------------------------------------------------------------------------
# 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 wxWidgets
SET( wxWidgets_USE_LIBS gl xml )
INCLUDE(FindwxWidgets)

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

#-------------------------------------------------------------------------------
SUBDIRS( dev data desktop )

CONFIGURE_FILE(
  "${CMAKE_CURRENT_SOURCE_DIR}/release/game_description.in"
  "${CMAKE_CURRENT_BINARY_DIR}/release/game_description"
  IMMEDIATE @ONLY
  )

INSTALL(
  FILES "${CMAKE_CURRENT_BINARY_DIR}/release/game_description"
  DESTINATION ${PTB_INSTALL_DATA_DIR}
  PERMISSIONS OWNER_READ OWNER_WRITE
  GROUP_READ
  WORLD_READ )

IF(UNIX)
  CONFIGURE_FILE(
    "${CMAKE_CURRENT_SOURCE_DIR}/release/plee-the-bear.in"
    "${CMAKE_CURRENT_BINARY_DIR}/release/plee-the-bear"
    IMMEDIATE @ONLY
    )

  INSTALL( FILES "${CMAKE_CURRENT_BINARY_DIR}/release/plee-the-bear"
    DESTINATION ${BEAR_INSTALL_EXECUTABLE_DIR}
    PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
      GROUP_READ GROUP_EXECUTE
      WORLD_READ WORLD_EXECUTE )
ENDIF(UNIX)

# target to uninstall files
CONFIGURE_FILE(
  "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
  "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
  IMMEDIATE @ONLY)

ADD_CUSTOM_TARGET(
  uninstall
  "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
  )
