PROJECT(iichantra)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

SET(EDITOR OFF)
SET(PROFILER OFF)
SET(IICHANTRA_INSTALL OFF)

SET(srcgame
src/config.cpp
src/input_mgr.cpp
src/main.cpp
src/misc.cpp
src/scene.cpp
src/resource_mgr.cpp
src/StdAfx.cpp
src/game/md5.cpp
src/game/crc32.cpp
src/game/animation.cpp
src/game/camera.cpp
src/game/game.cpp
src/game/highscores.cpp
src/game/http_client.cpp
src/game/editor.cpp
src/game/net.cpp
src/game/object_mgr.cpp
src/game/particle_system.cpp
src/game/player.cpp
src/game/proto.cpp
src/game/ribbon.cpp
src/game/sprite.cpp
src/game/objects/material.cpp
src/game/objects/object.cpp
src/game/objects/object_bullet.cpp
src/game/objects/object_character.cpp
src/game/objects/object_dynamic.cpp
src/game/objects/object_effect.cpp
src/game/objects/object_enemy.cpp
src/game/objects/object_environment.cpp
src/game/objects/object_item.cpp
src/game/objects/object_particle_system.cpp
src/game/objects/object_physic.cpp
src/game/objects/object_player.cpp
src/game/objects/object_ray.cpp
src/game/objects/object_ribbon.cpp
src/game/objects/object_spawner.cpp
src/game/objects/object_sprite.cpp
src/game/objects/object_waypoint.cpp
src/game/objects/weapon.cpp
src/game/phys/phys_collisionsolver.cpp
src/game/phys/phys_misc.cpp
src/game/phys/2de_Box.cpp
src/game/phys/2de_Geometry.cpp
src/game/phys/2de_Math.cpp
src/game/phys/2de_Matrix2.cpp
src/game/phys/sap/ASAP_PairManager.cpp
src/game/phys/sap/IceAllocator.cpp
src/game/phys/sap/IceBitArray.cpp
src/game/phys/sap/IceContainer.cpp
src/game/phys/sap/IceRevisitedRadix.cpp
src/game/phys/sap/OPC_ArraySAP.cpp
src/gui/gui.cpp
src/gui/gui_button.cpp
src/gui/gui_label.cpp
src/gui/gui_panel.cpp
src/gui/gui_picture.cpp
src/gui/gui_textfield.cpp
src/gui/gui_widget.cpp
src/gui/text_typer.cpp
src/render/font.cpp
src/render/image.cpp
src/render/renderer.cpp
src/render/texture.cpp
src/script/api.cpp
src/script/CUData.cpp
src/script/CUDataUser.cpp
src/script/gui_api.cpp
src/script/lua_pusher.cpp
src/script/luathread.cpp
src/script/object_api.cpp
src/script/script.cpp
src/script/timerevent.cpp
src/script/udata.cpp
src/sound/snd.cpp
)

SET(headergame
src/config.h
src/defines.h
src/input_mgr.h
src/main.h
src/misc.h
src/scene.h
src/resource.h
src/resource_mgr.h
src/SDLMain.h
src/StdAfx.h
src/types.h
src/dirent/dirent.h
src/game/md5.h
src/game/crc32.h
src/game/animation.h
src/game/animation_frame.h
src/game/camera.h
src/game/game.h
src/game/highscores.h
src/game/http_client.h
src/game/editor.h
src/game/net.h
src/game/object_mgr.h
src/game/particle_system.h
src/game/player.h
src/game/proto.h
src/game/ribbon.h
src/game/sprite.h
src/game/objects/material.h
src/game/objects/object.h
src/game/objects/object_bullet.h
src/game/objects/object_character.h
src/game/objects/object_dynamic.h
src/game/objects/object_effect.h
src/game/objects/object_enemy.h
src/game/objects/object_environment.h
src/game/objects/object_item.h
src/game/objects/object_particle_system.h
src/game/objects/object_physic.h
src/game/objects/object_player.h
src/game/objects/object_ray.h
src/game/objects/object_ribbon.h
src/game/objects/object_spawner.h
src/game/objects/object_sprite.h
src/game/objects/object_waypoint.h
src/game/objects/weapon.h
src/game/phys/phys_collisionsolver.h
src/game/phys/phys_misc.h
src/game/phys/2de_Box.h
src/game/phys/2de_Geometry.h
src/game/phys/2de_Math.h
src/game/phys/2de_Matrix2.h
src/game/phys/2de_RGBA.h
src/game/phys/2de_Vector2.h
src/game/phys/2de_Vector3.h
src/game/phys/sap/ASAP_PairManager.h
src/game/phys/sap/IceAllocator.h
src/game/phys/sap/IceBitArray.h
src/game/phys/sap/IceContainer.h
src/game/phys/sap/IceRevisitedRadix.h
src/game/phys/sap/OPC_ArraySAP.h
src/gui/gui.h
src/gui/gui_button.h
src/gui/gui_label.h
src/gui/gui_panel.h
src/gui/gui_picture.h
src/gui/gui_textfield.h
src/gui/gui_widget.h
src/gui/text_typer.h
src/render/font.h
src/render/image.h
src/render/render_types.h
src/render/renderer.h
src/render/texture.h
src/script/api.h
src/script/CUData.hpp
src/script/CUDataUser.hpp
src/script/lua_pusher.hpp
src/script/luathread.h
src/script/object_api.h
src/script/script.h
src/script/timerevent.h
src/script/typelist.hpp
src/script/udata.hpp
src/script/userdata_binding.hpp
src/sound/bass.h
src/sound/snd.h
)

FIND_PACKAGE(Lua51 REQUIRED)
FIND_PACKAGE(SDL REQUIRED)
INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR})
INCLUDE_DIRECTORIES("src/")
FIND_LIBRARY(LIBBASS bass_x64 PATHS lib)


IF(WIN32)
    SET(CMAKE_USE_RELATIVE_PATHS TRUE)

    IF(${EDITOR} MATCHES ON)
        ADD_DEFINITIONS(-DMAP_EDITOR)
        ADD_EXECUTABLE(level_editor WIN32 ${srcgame} ${headergame})
        TARGET_LINK_LIBRARIES(level_editor ${LIBBASS} GL IL SDL SDL_net lua5.1 zzip)

        ADD_CUSTOM_COMMAND(
        TARGET level_editor
        COMMAND copy ${CMAKE_CURRENT_BINARY_DIR}/level_editor.exe ${CMAKE_CURRENT_SOURCE_DIR}/bin/
        DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/level_editor.exe
        )

    ELSE(${EDITOR} MATCHES ON)

        ADD_EXECUTABLE(iichantra WIN32 ${srcgame} ${headergame})
        TARGET_LINK_LIBRARIES(iichantra GL IL SDL SDL_net lua5.1 zzip ${LIBBASS})

        ADD_CUSTOM_COMMAND(
        TARGET iichantra
        COMMAND copy ${CMAKE_CURRENT_BINARY_DIR}/iichantra.exe ${CMAKE_CURRENT_SOURCE_DIR}/bin/
        DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/iichantra.exe
        )

    ENDIF(${EDITOR} MATCHES ON)

ENDIF(WIN32)

IF(UNIX AND NOT APPLE)
    ADD_DEFINITIONS(-DLINUX)
    
    IF(${IICHANTRA_INSTALL} MATCHES ON)
        SET(CMAKE_INSTALL_RPATH "/usr/share/games/iichantra/lib/")
        SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
        ADD_DEFINITIONS(-DIICHANTRA_INSTALL)
    ENDIF(${IICHANTRA_INSTALL} MATCHES ON)

    IF(${PROFILER} MATCHES ON)
        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
        message("Profiler enabled.")
    ENDIF(${PROFILER} MATCHES ON)

    SET(CMAKE_USE_RELATIVE_PATHS TRUE)
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mtune=generic -pedantic")

    IF(${EDITOR} MATCHES ON)
        message("Editor.")
        ADD_DEFINITIONS(-DMAP_EDITOR)
        ADD_EXECUTABLE(level_editor ${srcgame} ${headergame})
        TARGET_LINK_LIBRARIES(level_editor ${LIBBASS} GL IL SDL SDL_net lua5.1 zzip)

        ADD_CUSTOM_COMMAND(
        TARGET level_editor
        COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/level_editor ${CMAKE_CURRENT_SOURCE_DIR}/bin/
        DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/level_editor
        )

    ELSE(${EDITOR} MATCHES ON)

        ADD_EXECUTABLE(iichantra ${srcgame} ${headergame})
        TARGET_LINK_LIBRARIES(iichantra GL IL SDL SDL_net lua5.1 zzip ${LIBBASS})

        ADD_CUSTOM_COMMAND(
        TARGET iichantra
        COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/iichantra ${CMAKE_CURRENT_SOURCE_DIR}/bin/
        DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/iichantra
        )

    ENDIF(${EDITOR} MATCHES ON)

ENDIF(UNIX AND NOT APPLE)

IF(APPLE)
    ADD_DEFINITIONS(-DAPPLE)

    SET(CMAKE_USE_RELATIVE_PATHS TRUE)

    IF(${EDITOR} MATCHES ON)
        ADD_DEFINITIONS(-DMAP_EDITOR)
        ADD_EXECUTABLE(level_editor ${srcgame} ${headergame})
        TARGET_LINK_LIBRARIES(level_editor ${LIBBASS} GL IL SDL SDL_net lua5.1 zzip)

        ADD_CUSTOM_COMMAND(
        TARGET level_editor
        COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/level_editor ${CMAKE_CURRENT_SOURCE_DIR}/bin/
        DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/level_editor
        )

    ELSE(${EDITOR} MATCHES ON)

        ADD_EXECUTABLE(iichantra ${srcgame} ${headergame})
        TARGET_LINK_LIBRARIES(iichantra GL IL SDL SDL_net lua5.1 zzip ${LIBBASS})

        ADD_CUSTOM_COMMAND(
        TARGET iichantra
        COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/iichantra ${CMAKE_CURRENT_SOURCE_DIR}/bin/
        DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/iichantra
        )

    ENDIF(${EDITOR} MATCHES ON)

ENDIF(APPLE)


IF(${IICHANTRA_INSTALL} MATCHES ON AND UNIX AND NOT APPLE)
	FILE(GLOB_RECURSE DATAFILES1 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ ${CMAKE_CURRENT_SOURCE_DIR}/bin/data/*)
	FILE(GLOB_RECURSE DATAFILES2 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ ${CMAKE_CURRENT_SOURCE_DIR}/bin/fonts/*)
	FILE(GLOB_RECURSE DATAFILES3 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ ${CMAKE_CURRENT_SOURCE_DIR}/bin/levels/*)
	FILE(GLOB_RECURSE DATAFILES4 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ ${CMAKE_CURRENT_SOURCE_DIR}/bin/proto/*)
	FILE(GLOB_RECURSE DATAFILES5 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ ${CMAKE_CURRENT_SOURCE_DIR}/bin/scripts/*)
	FILE(GLOB_RECURSE DATAFILES6 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ ${CMAKE_CURRENT_SOURCE_DIR}/bin/sounds/*)
	FILE(GLOB_RECURSE DATAFILES7 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ ${CMAKE_CURRENT_SOURCE_DIR}/bin/textures/*)
	FILE(GLOB_RECURSE DATAFILES8 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ ${CMAKE_CURRENT_SOURCE_DIR}/bin/config/languages/*)
	#FILE(GLOB_RECURSE DATAFILES9 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ ${CMAKE_CURRENT_SOURCE_DIR}/bin/config/resolutions.lua)
	FILE(GLOB_RECURSE LIBFILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/ ${CMAKE_CURRENT_SOURCE_DIR}/lib/*)
	SET(FILES ${DATAFILES} ${LIBFILES} ${DATAFILES1} ${DATAFILES2} ${DATAFILES3} ${DATAFILES4} ${DATAFILES5} ${DATAFILES6} ${DATAFILES7} ${DATAFILES8} ${DATAFILES9})
	#SET(CONFFILES ~/.iichantra)
	
	SET(CPACK_BINARY_DEB ON)
	SET(CPACK_PACKAGE_NAME iichantra)
	SET(CPACK_PACKAGE_FILE_NAME iichantra)
	SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/bin/LICENSE)
	SET(CPACK_PACKAGE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/Resource/iichantra.png)
	SET(CPACK_PACKAGE_SCREENSHOT ${CMAKE_CURRENT_SOURCE_DIR}/Resource/iichantra.png)
	SET(CPACK_DEBIAN_PACKAGE_HOMEPAGE "http://iichantra.ru")
	SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "iiChantra is a 2D jump 'n run sidescroller game in a similar style like the original Contra games")
	#"iiChantra is a 2D jump 'n run sidescroller with SOH"
	#"iiChantra is a 2D jump 'n run sidescroller game in a similar style like the original Contra games."
	#SET(CPACK_PACKAGE_DESCRIPTION filename)
	SET(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.txt")
	SET(CPACK_PACKAGE_VERSION 0.1.0)
	SET(CPACK_DEBIAN_PACKAGE_SECTION games)
	SET(CPACK_DEBIAN_PACKAGE_MAINTAINER DOBROPOKE)
	SET(CPACK_PACKAGE_EXECUTABLES "iichantra")
	SET(CPACK_GENERATOR "DEB")
	#, libqt4-opengl (>= 4:4.7.4-0ubuntu8)
	SET(CPACK_DEBIAN_PACKAGE_DEPENDS "liblua5.1-0 (>= 5.1.4-10), libzzip-0-13 (>= 0.13.56-1), libsdl1.2debian (>= 1.2.14-6.1), libsdl-net1.2 (>= 1.2.7-2), libdevil1c2 (>= 1.7.8-6)")
	#SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA ${CMAKE_CURRENT_SOURCE_DIR}/conffiles )
	
	INCLUDE(CPack)
	INSTALL(TARGETS iichantra RUNTIME DESTINATION /usr/games/ )
	
	INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Resource/iichantra.png DESTINATION "/usr/share/pixmaps/")
	INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Resource/iichantra.desktop DESTINATION "/usr/share/applications/")
	INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Resource/iichantra DESTINATION "/usr/share/menu/")
	#INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Resource/iichantra.png DESTINATION "/usr/share/app-install/icons")
	#INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Resource/iichantra:iichantra.desktop DESTINATION "/usr/share/app-install/desktop")
	
	FOREACH(FILETMP ${FILES})
	if(NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${FILETMP})
		GET_FILENAME_COMPONENT(DIRTMP ${FILETMP} PATH)
		SET(FILETMPFROM ${CMAKE_CURRENT_SOURCE_DIR}/${FILETMP}) 
		SET(FILETMPDST "/usr/share/games/iichantra/${DIRTMP}")
		INSTALL(FILES ${FILETMP} DESTINATION ${FILETMPDST})
	endif(NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${FILETMP})
	ENDFOREACH(FILETMP)
ENDIF(${IICHANTRA_INSTALL} MATCHES ON AND UNIX AND NOT APPLE)
