project(Asteroid)
set(Asteroid_BUILD_VERSION "1.2.1")

# Dependencies
cmake_minimum_required(VERSION 2.6)
find_package(OpenGL REQUIRED)
if(NOT OPENGL_FOUND)
   message(FATAL_ERROR "Error: OpenGL not found")
endif(NOT OPENGL_FOUND)
find_package(GLUT REQUIRED)
if(NOT GLUT_FOUND)
   message(FATAL_ERROR "Error: GLUT not found")
endif(NOT GLUT_FOUND)

# Optional dependencies
find_package(GTK2)
if(GTK2_FOUND)
   set(Asteroid_BUILD_GTK 1)
else(GTK2_FOUND)
   set(Asteroid_BUILD_GTK 0)
   message("GTK2 not found; disabling GTK name prompt")
endif(GTK2_FOUND)

find_package(SDL)
find_package(SDL_mixer)
if(SDL_FOUND AND SDLMIXER_FOUND)
   set(Asteroid_BUILD_SOUND 1)
else(SDL_FOUND AND SDLMIXER_FOUND)
   set(Asteroid_BUILD_SOUND 0)
   message("SDL and SDL_mixer not found; disabling sound")
endif(SDL_FOUND AND SDLMIXER_FOUND)

# Config header
set(Asteroid_BUILD_RES_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}/share/asteroid")
configure_file("${PROJECT_SOURCE_DIR}/src/config.h.in" "${PROJECT_BINARY_DIR}/include/config.h")
include_directories("${PROJECT_BINARY_DIR}/include")

# Binaries
file(GLOB asteroid_SRCS "src/*.c")
add_executable(asteroid ${asteroid_SRCS})
include_directories(${OPENGL_INCLUDE_DIR} ${GLUT_INCLUDE_DIR})
target_link_libraries(asteroid ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES})
if(Asteroid_BUILD_GTK)
   include_directories(${GTK2_INCLUDE_DIRS})
   target_link_libraries(asteroid ${GTK2_LIBRARIES})
endif(Asteroid_BUILD_GTK)
if(Asteroid_BUILD_SOUND)
   include_directories(${SDL_INCLUDE_DIR} ${SDLMIXER_INCLUDE_DIR})
   target_link_libraries(asteroid ${SDL_LIBRARY} ${SDLMIXER_LIBRARY})
endif(Asteroid_BUILD_SOUND)

# Install
file(GLOB asteroid_RES_GFX "gfx/*.bmp")
file(GLOB asteroid_RES_SFX "sfx/*.wav")
install(TARGETS asteroid DESTINATION "bin")
install(FILES ${asteroid_RES_GFX} DESTINATION "share/asteroid/gfx")
if(Asteroid_BUILD_SOUND)
   install(FILES ${asteroid_RES_SFX} DESTINATION "share/asteroid/sfx")
endif(Asteroid_BUILD_SOUND)
install(FILES asteroid.desktop DESTINATION "share/applications")
install(FILES asteroid.svg DESTINATION "share/icons/hicolor/scalable/apps")

# Dist
set(CPACK_SOURCE_PACKAGE_FILE_NAME "asteroid-${Asteroid_BUILD_VERSION}")
set(CPACK_SOURCE_GENERATOR "TGZ")
set(CPACK_SOURCE_IGNORE_FILES "${CPACK_SOURCE_IGNORE_FILES};.git;build;debian")
include(CPack)
add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
