cmake_minimum_required(VERSION 2.6)

set(
  BEAR_ENGINE_COMMON_INCLUDE_DIRECTORY
  "${CMAKE_CURRENT_SOURCE_DIR}/bear-engine/common/include"
  )
set(
  BEAR_ENGINE_INCLUDE_DIRECTORY
  "${CMAKE_CURRENT_SOURCE_DIR}/bear-engine/core/src"
  )
set(
  BEAR_ITEMS_INCLUDE_DIRECTORY
  "${CMAKE_CURRENT_SOURCE_DIR}/bear-engine/lib/src"
  )

if(CMAKE_COMPILER_IS_GNUCXX)
  if(NOT WIN32)
    add_definitions(-Wall -ansi -pedantic)
  endif(NOT WIN32)
endif(CMAKE_COMPILER_IS_GNUCXX)

IF ( BEAR_PROFILE )
  add_definitions( "-DBEAR_PROFILE" )
ENDIF ( BEAR_PROFILE )

# This macro checks if a version number is greater or equal to an other
# version number.
macro(VERSION_GREATER_EQUAL LEFT RIGHT RESULT)
  set(${RESULT} 0)

  if( ("${LEFT}" VERSION_EQUAL "${RIGHT}")
      OR ("${LEFT}" VERSION_GREATER "${RIGHT}") )
    set(${RESULT} 1)
  endif( ("${LEFT}" VERSION_EQUAL "${RIGHT}")
    OR ("${LEFT}" VERSION_GREATER "${RIGHT}") )
endmacro(VERSION_GREATER_EQUAL)

# replace the GETTEXT_CREATE_TRANSLATIONS macro to allow to specify the target
# name. So we can have translations in several subdirectories.
macro(GETTEXT_CREATE_TRANSLATIONS_CUSTOM _targetName _potFile _firstPoFile)

   set(_gmoFiles)
   get_filename_component(_potBasename ${_potFile} NAME_WE)
   get_filename_component(_absPotFile ${_potFile} ABSOLUTE)

   FOREACH (_currentPoFile ${_firstPoFile} ${ARGN})
      get_filename_component(_absFile ${_currentPoFile} ABSOLUTE)
      get_filename_component(_abs_PATH ${_absFile} PATH)
      get_filename_component(_lang ${_absFile} NAME_WE)
      set(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo)

      add_custom_command( 
         OUTPUT ${_gmoFile} 
         COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE}
           --quiet --update --backup=none -s ${_absFile} ${_absPotFile}
         COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_absFile}
         DEPENDS ${_absPotFile} ${_absFile} 
      )

      install(
        FILES ${_gmoFile}
        DESTINATION share/locale/${_lang}/LC_MESSAGES
        RENAME ${_potBasename}.mo
        )
      
      set(_gmoFiles ${_gmoFiles} ${_gmoFile})
   ENDFOREACH (_currentPoFile )

   add_custom_target(${_targetName} ALL DEPENDS ${_gmoFiles})

endmacro(GETTEXT_CREATE_TRANSLATIONS_CUSTOM)

if( BEAR_NO_MANPAGES )
  set(BEAR_ENGINE_NO_MANPAGES true)
  set(BF_NO_MANPAGES true)
  set(PTB_NO_MANPAGES true)
else( BEAR_NO_MANPAGES )
  # Search docbook-to-man
  find_program(DOCBOOK_TO_MAN docbook-to-man ENV)

  if(DOCBOOK_TO_MAN)
    set(DOCBOOK_TO_MAN_FOUND 1)
  endif(DOCBOOK_TO_MAN)

  # Use this macro to create man pages with docbook-to-man
  macro(DOCBOOK_CREATE_MAN _targetName _volume _first_sgml_file)
    foreach (_file ${_first_sgml_file} ${ARGN})
      get_filename_component(_absFile ${_file} ABSOLUTE)
      get_filename_component(_abs_PATH ${_absFile} PATH)
      get_filename_component(_prog ${_absFile} NAME_WE)
      set(_man_file ${CMAKE_CURRENT_BINARY_DIR}/${_prog}.${_volume})

      add_custom_command(
        OUTPUT ${_man_file}
        COMMAND ${DOCBOOK_TO_MAN} ${_absFile} > ${_man_file}
        DEPENDS ${_absFile}
        )

      install(
        FILES ${_man_file}
        DESTINATION share/man/man${_volume}
        )
      
      set(_man_files ${_man_files} ${_man_file})
    endforeach(_file)

    add_custom_target(${_targetName} ALL DEPENDS ${_man_files})
  endmacro(DOCBOOK_CREATE_MAN)
endif( BEAR_NO_MANPAGES )

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

subdirs(
  bear-engine
  plee-the-bear
  )

if( NOT BEAR_NO_EDITOR )
subdirs(
  bear-factory
  )
endif( NOT BEAR_NO_EDITOR )
