CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
PROJECT(bear-factory)

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

# where the engine libraries are installed
IF( NOT BEAR_FACTORY_INSTALL_LIBRARY_DIR )
  IF( WIN32 )
    SET(
      BEAR_FACTORY_INSTALL_LIBRARY_DIR
      "${BEAR_FACTORY_INSTALL_EXECUTABLE_DIR}"
      )
  ELSE( WIN32 )
    SET( BEAR_FACTORY_INSTALL_LIBRARY_DIR lib )
  ENDIF( WIN32 )
ENDIF( NOT BEAR_FACTORY_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 "-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}
  )

FIND_PACKAGE( Boost 1.33 REQUIRED COMPONENTS filesystem )

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

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

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

#-------------------------------------------------------------------------------
IF( BEAR_ENGINE_COMMON_INCLUDE_DIRECTORY )
  INCLUDE_DIRECTORIES( "${BEAR_ENGINE_COMMON_INCLUDE_DIRECTORY}" )
ELSE( BEAR_ENGINE_COMMON_INCLUDE_DIRECTORY )
  INCLUDE_DIRECTORIES( ../bear-engine/common/include )
ENDIF( BEAR_ENGINE_COMMON_INCLUDE_DIRECTORY )

SET(
  BEAR_FACTORY_EDITOR_INCLUDE_DIRECTORY
  "${CMAKE_CURRENT_SOURCE_DIR}/bear-editor/src"
  )

#-------------------------------------------------------------------------------
# check wxWidgets
IF( WIN32 )
  SET( wxWidgets_USE_LIBS mono )
  ADD_DEFINITIONS( "-DwxUSE_UNICODE" )
ELSE( WIN32 )
  SET( wxWidgets_USE_LIBS xml core )
ENDIF( WIN32 )

INCLUDE(FindwxWidgets)

IF( NOT wxWidgets_FOUND )
  MESSAGE( "wxWidgets not found" )
ENDIF( NOT wxWidgets_FOUND )

#-------------------------------------------------------------------------------
SUBDIRS(
  bear-editor
  animation-editor
  level-editor
  model-editor
  tool
  desktop
  )

INSTALL(
  DIRECTORY "item-description"
  DESTINATION "share/bear-factory"
  FILE_PERMISSIONS OWNER_READ OWNER_WRITE
  GROUP_READ
  WORLD_READ
  DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
  GROUP_READ GROUP_EXECUTE
  WORLD_READ WORLD_EXECUTE
  PATTERN ".svn" EXCLUDE
  PATTERN "*~" EXCLUDE
)
