cmake_minimum_required( VERSION 2.6 )

# set project's name
project( screengrab )

message(STATUS "System: " ${CMAKE_HOST_SYSTEM_NAME} " " ${CMAKE_HOST_SYSTEM_VERSION})
message(STATUS "Processor: " ${CMAKE_HOST_SYSTEM_PROCESSOR})

find_package( Qt4 REQUIRED )
include( "${QT_USE_FILE}" )

# add version define
set(SCREENGRAB_VERSION "0.8.1")
#set(SCREENGRAB_VERSION_STATUS "rc")

if (SCREENGRAB_VERSION_STATUS)
  add_definitions( -DVERSION="${SCREENGRAB_VERSION}-${SCREENGRAB_VERSION_STATUS}")
elseif (NOT SCREENGRAB_VERSION_STATUS)
  add_definitions( -DVERSION="${SCREENGRAB_VERSION}")
endif (SCREENGRAB_VERSION_STATUS)
#${CMAKE_SYSTEM_NAME} [${CMAKE_HOST_SYSTEM_PROCESSOR}]" )

# build type
if (NOT CMAKE_BUILD_TYPE)
  set(CMAKE_BUILD_TYPE Release CACHE STRING
      "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
      FORCE)
endif(NOT CMAKE_BUILD_TYPE)

# installl prefix
#if (NOT CMAKE_INSTALL_PREFIX)
  set(CMAKE_INSTALL_PREFIX "/usr")
#endif(NOT CMAKE_INSTALL_PREFIX)

add_definitions( -DPREFIX="${CMAKE_INSTALL_PREFIX}")

message(STATUS "Indtall prefix: " ${CMAKE_INSTALL_PREFIX})

# with SET() command you can change variables or define new ones
# here we define SAMPLE_SRCS variable that contains a list of all .cpp files
# note that we don't need \ at the end of line
set(SCREENGRAB_SRC  
./main.cpp
./src/screengrab.cpp
./src/instancer.cpp
./src/configwidget.cpp
./src/config.cpp
./src/about.cpp
./src/mainwindow.cpp
./src/regionselect.cpp  
./src/cmdline.cpp  
)

if(UNIX AND NOT APPLE)
 set(SCREENGRAB_SRC ${SCREENGRAB_SRC}  ./src/common/netwm/netwm.cpp) 
endif(UNIX AND NOT APPLE)

if(WIN32)
	set(WIN_RC ./screengrab.rc)
endif(WIN32)

# set headers to moc
SET(SCREENGRAB_MOC 
./src/configwidget.h
./src/about.h
./src/mainwindow.h
)

# set headers to moc
set(SCREENGRAB_UI 
./src/configwidget.ui
./src/aboutwidget.ui
./src/mainwindow.ui
)

# documentation files
set(DOCS 
  ${CMAKE_CURRENT_SOURCE_DIR}/docs/ChangeLog.txt  
  ${CMAKE_CURRENT_SOURCE_DIR}/docs/LICENSE.txt 
  ${CMAKE_CURRENT_SOURCE_DIR}/docs/README.txt   
)

# internationalization files
#set(I18N ${CMAKE_CURRENT_SOURCE_DIR}/localize/screengrab_ru.ts)

#  include headers produced by uic in our code
# (CMAKE_BINARY_DIR holds a path to the build directory, while INCLUDE_DIRECTORIES() works just like INCLUDEPATH from qmake)
INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR} )

# Qt resource file
set( SCREENGRAB_QRC ./screengrab.qrc )

  # this will run uic on .ui files:
qt4_wrap_ui(SCREENGRAB_UI_H ${SCREENGRAB_UI} )

# genereate moc headers
qt4_wrap_cpp(SCREENGRAB_MOC_CPP ${SCREENGRAB_MOC} )

# genereating resource cpp
qt4_add_resources( QRC_SOURCES ${SCREENGRAB_QRC} )

# gen qm giles
#qt4_add_translation(QM ${I18N})

# add target to create localizations
add_custom_target( localize ALL ${QT_LRELEASE_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/localize/*.ts 
  COMMAND echo "Bulding localizations...")  
  
# win
#if(MINGW)
#message(STATUS "System: ....MinGW....... ")
    #add_custom_command(OUTPUT screengrabrc.o
                      #COMMAND windres.exe -iscreengrab.rc -oscreengrabrc.o)
    #set(SCREENGRAB_SRC ${SCREENGRAB_SRC} screengrabrc.o)
#endif(MINGW)

#  build executable from sources
if(UNIX AND NOT APPLE)
	add_executable( screengrab ${SCREENGRAB_SRC} ${SCREENGRAB_MOC_CPP} ${SCREENGRAB_UI_H} ${QRC_SOURCES} )
	add_dependencies( screengrab localize )
endif(UNIX AND NOT APPLE)

if(WIN32)
	add_executable( screengrab WIN32 ${SCREENGRAB_SRC} ${SCREENGRAB_MOC_CPP} ${SCREENGRAB_UI_H} ${QRC_SOURCES} ${WIN_RC} )
	target_link_libraries( screengrab ${QT_QTMAIN_LIBRARY} )
endif(WIN32)
	
target_link_libraries( screengrab ${QT_LIBRARIES} )

#installs unix
if(UNIX AND NOT APPLE)
#INSTALL_TARGETS(/bin screengrab)
  INSTALL(TARGETS screengrab RUNTIME DESTINATION bin)

  # install txt docs
  INSTALL(FILES ${DOCS} DESTINATION share/doc/screengrab)
  # install html docs
  INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/docs/html/" DESTINATION share/doc/screengrab/html)

  # install desktop files
  INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/screengrab.desktop" DESTINATION share/applications)

  # install pixmap
  INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/img/screengrab.png" DESTINATION share/pixmaps)

  # istall localize
#  FILE(GLOB qm "${CMAKE_CURRENT_SOURCE_DIR}/localize/*.qm")
#  INSTALL(FILES ${qm} DESTINATION share/screengrab/localize)
  INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/localize/" DESTINATION share/screengrab/localize FILES_MATCHING PATTERN "*.qm")
endif(UNIX AND NOT APPLE)