# the SkyX library

# dynamic vs. static
OPTION(SKYX_DYNAMIC "Set to ON to build gamecore for dynamic linking. Use OFF for static." OFF)
IF (SKYX_DYNAMIC)
  SET(SKYX_LINK_TYPE "SHARED")
  SET(SKYX_DLL 1)
  ADD_DEFINITIONS(-DNON_STATIC)
ELSE (SKYX_DYNAMIC)
  SET(SKYX_LINK_TYPE "STATIC")
ENDIF(SKYX_DYNAMIC)


INCLUDE_DIRECTORIES(
  "${CMAKE_SOURCE_DIR}/SkyX/SkyX"
  "${CMAKE_CURRENT_SOURCE_DIR}"
)

# Bhel-Calas-Headers
SET(SKYX_HEADERS
	SkyX/AtmosphereManager.h
	SkyX/CloudsManager.h
	SkyX/ColorGradient.h
	SkyX/GPUManager.h
	SkyX/MeshManager.h
	SkyX/MoonManager.h
	SkyX/Prerequisites.h
	SkyX/SkyX.h
	SkyX/VCloudsManager.h
	SkyX/VClouds/DataManager.h
	SkyX/VClouds/Ellipsoid.h
	SkyX/VClouds/FastFakeRandom.h
	SkyX/VClouds/GeometryBlock.h
	SkyX/VClouds/GeometryManager.h
	SkyX/VClouds/VClouds.h
)

   
# SkyX sources
SET(SKYX_SOURCES
	SkyX/AtmosphereManager.cpp
	SkyX/CloudsManager.cpp
	SkyX/ColorGradient.cpp
	SkyX/GPUManager.cpp
	SkyX/MeshManager.cpp
	SkyX/MoonManager.cpp
	SkyX/Prerequisites.cpp
	SkyX/SkyX.cpp
	SkyX/VCloudsManager.cpp
	SkyX/VClouds/DataManager.cpp
	SkyX/VClouds/Ellipsoid.cpp
	SkyX/VClouds/FastFakeRandom.cpp
	SkyX/VClouds/GeometryBlock.cpp
	SkyX/VClouds/GeometryManager.cpp
	SkyX/VClouds/VClouds.cpp
)

ADD_LIBRARY(SkyX ${SKYX_LINK_TYPE} ${SKYX_SOURCES} ${SKYX_HEADERS})
SET_TARGET_PROPERTIES(SkyX PROPERTIES DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
IF (APPLE)
  # create .app bundle
  set_property(TARGET SkyX PROPERTY MACOSX_BUNDLE TRUE)
ENDIF (APPLE)
TARGET_LINK_LIBRARIES(SkyX ${OGRE_LIBRARIES})

# install
IF (WIN32)
	OPTION(SKYX_COPY_DEP "Set to ON to copy all DLLs of Ogre and its plugins to the install location for execution from within install directory" OFF)
	IF(SKYX_COPY_DEP)
		IF (CMAKE_BUILD_TYPE STREQUAL "Debug")
			SET(OGRE_PLUGIN_FILES
				"${OGRE_PLUGINS_DIR}/Plugin_CgProgramManager_d.dll"
				"${OGRE_PLUGINS_DIR}/Plugin_ParticleFX_d.dll"
				"${OGRE_PLUGINS_DIR}/OgreMain_d.dll"
				"${OGRE_PLUGINS_DIR}/OgrePaging_d.dll"
				"${OGRE_PLUGINS_DIR}/OgreTerrain_d.dll"
				"${OGRE_PLUGINS_DIR}/cg.dll"
				"${OGRE_PLUGINS_DIR}/RenderSystem_Direct3D9_d.dll"
				"${OGRE_PLUGINS_DIR}/RenderSystem_GL_d.dll"
			)
		ELSE (CMAKE_BUILD_TYPE STREQUAL "Debug")
			SET(OGRE_PLUGIN_FILES
				"${OGRE_PLUGINS_DIR}/Plugin_CgProgramManager.dll"
				"${OGRE_PLUGINS_DIR}/Plugin_ParticleFX.dll"
				"${OGRE_PLUGINS_DIR}/OgreMain.dll"
				"${OGRE_PLUGINS_DIR}/OgrePaging.dll"
				"${OGRE_PLUGINS_DIR}/OgreTerrain.dll"
				"${OGRE_PLUGINS_DIR}/cg.dll"
				"${OGRE_PLUGINS_DIR}/RenderSystem_Direct3D9.dll"
				"${OGRE_PLUGINS_DIR}/RenderSystem_GL.dll"
				
			)
		ENDIF (CMAKE_BUILD_TYPE STREQUAL "Debug")
	ENDIF(SKYX_COPY_DEP)
ELSE (WIN32)
    # Linux libraries here
ENDIF (WIN32)


#Create File list

INSTALL(TARGETS SkyX DESTINATION "bin" COMPONENT "SkyX")
INSTALL(DIRECTORY SkyX/ DESTINATION "include" COMPONENT "SkyX" FILES_MATCHING PATTERN "*.h")

IF (WIN32)
    #VS runtime installer preparation
	#IF (MSVC) #(CMAKE_GENERATOR STREQUAL "Visual Studio 9 2008")
	INSTALL(FILES ${OGRE_PLUGIN_FILES} DESTINATION "bin" COMPONENT "SkyX")
				
		#Copy VC runtime redist files
		#FILE(TO_CMAKE_PATH "$ENV{VSINSTALLDIR}" VSINSTALLDIR_CMAKE)
		#IF(CMAKE_BUILD_TYPE STREQUAL "Release")
		#	SET(VC_REDIST_FILES 
		#		"${VSINSTALLDIR_CMAKE}/VC/redist/x86/Microsoft.VC90.CRT/msvcr90.dll"
		#		"${VSINSTALLDIR_CMAKE}/VC/redist/x86/Microsoft.VC90.CRT/msvcp90.dll"
		#		"${VSINSTALLDIR_CMAKE}/VC/redist/x86/Microsoft.VC90.CRT/msvcm90.dll"
		#		"${VSINSTALLDIR_CMAKE}/VC/redist/x86/Microsoft.VC90.CRT/Microsoft.VC90.CRT.manifest"
		#	)
		#ELSE (CMAKE_BUILD_TYPE STREQUAL "Release")
		#	SET(VC_REDIST_FILES 
		#		"${VSINSTALLDIR_CMAKE}/VC/redist/Debug_NonRedist/x86/Microsoft.VC90.DebugCRT/msvcr90d.dll"
		#		"${VSINSTALLDIR_CMAKE}/VC/redist/Debug_NonRedist/x86/Microsoft.VC90.DebugCRT/msvcp90d.dll"
		#		"${VSINSTALLDIR_CMAKE}/VC/redist/Debug_NonRedist/x86/Microsoft.VC90.DebugCRT/msvcm90d.dll"
		#		"${VSINSTALLDIR_CMAKE}/VC/redist/Debug_NonRedist/x86/Microsoft.VC90.DebugCRT/Microsoft.VC90.DebugCRT.manifest"
		#	)
		#ENDIF (CMAKE_BUILD_TYPE STREQUAL "Release")
		#INSTALL(FILES ${VC_REDIST_FILES} DESTINATION "bin" COMPONENT "SkyX")
	#ENDIF (MSVC) #(CMAKE_GENERATOR STREQUAL "Visual Studio 9 2008")
	
	# Win32 MinGW runtime preparation
	IF (MINGW) #((CMAKE_GENERATOR STREQUAL "MinGW") OR (CMAKE_GENERATOR STREQUAL "CodeBlocks - MinGW Makefiles"))
		
	ENDIF (MINGW) #((CMAKE_GENERATOR STREQUAL "MinGW") OR (CMAKE_GENERATOR STREQUAL "CodeBlocks - MinGW Makefiles"))
ENDIF (WIN32)
