#-------------------------------------------------------------------
# This file is part of the CMake build system for Scol
#
# The contents of this file are placed in the public domain. Feel
# free to make use of it in any way you like.
#-------------------------------------------------------------------

############################################################
# include/Scol core library
############################################################

PROJECT(zoogl24)

# define header and source files for the library
set (ZOOGL24_BASIC_HEADER_FILES
  include/basic/glext.h
  include/basic/wglext.h
  include/basic/ZooArray.h
  include/basic/ZooArray.inl
  include/basic/ZooDetect.h
  include/basic/ZooMalloc.h
  include/basic/ZooMatrix.h
  include/basic/ZooMatrix.inl
  include/basic/ZooNode.h
  include/basic/ZooProfile.h
  include/basic/ZooScene.h
  include/basic/ZooSoft.h
  include/basic/ZooStd.h
  include/basic/ZooWorld.h
)

if (Scol_STATIC)
	set (ZOOGL24_BASIC_HEADER_FILES ${ZOOGL24_BASIC_HEADER_FILES} include/loadScolZooengine.h)
endif()

set (ZOOGL24_BASIC_SOURCE_FILES
  src/basic/ZooDetect.cpp
  src/basic/ZooMalloc.cpp
  src/basic/ZooMatrix.cpp
  src/basic/ZooNode.cpp
  src/basic/ZooProfile.cpp
  src/basic/ZooScene.cpp
  src/basic/ZooSoft.cpp
  src/basic/ZooWorld.cpp
)

set (ZOOGL24_BOX_HEADER_FILES
  include/box/ZBoxColl.h
)

set (ZOOGL24_BOX_SOURCE_FILES
  src/box/ZBoxColl.cpp
  src/box/ZooBox.cpp
)

set (ZOOGL24_COLLISION_HEADER_FILES
  include/collision/matvec.H
  include/collision/moments.H
  include/collision/overlap.H
  include/collision/Rapid.h
  include/collision/RAPID_version.H
  include/collision/ZooOldColl.h
)

set (ZOOGL24_COLLISION_SOURCE_FILES
  src/collision/collide.cpp
  src/collision/overlap.cpp
  src/collision/Rapid.cpp
  src/collision/ZooOldColl.cpp
)

set (ZOOGL24_DATAS_HEADER_FILES
  include/datas/ZooData.h
  include/datas/ZooFont.h
  include/datas/ZooMaterial.h
  include/datas/ZooMesh.h
  include/datas/ZooPRS.h
  include/datas/ZooTexture.h
)

set (ZOOGL24_DATAS_SOURCE_FILES
  src/datas/ZooData.cpp
  src/datas/ZooFont.cpp
  src/datas/ZooMaterial.cpp
  src/datas/ZooMesh.cpp
  src/datas/ZooPRS.cpp
  src/datas/ZooTexture.cpp
)

set (ZOOGL24_LOADERS_JPEG_HEADER_FILES
  include/loaders/JPEG/LoaderJpeg.h
)

set (ZOOGL24_LOADERS_JPEG_SOURCE_FILES
  src/loaders/JPEG/LoaderJpeg.cpp
)

set (ZOOGL24_LOADERS_M3D_HEADER_FILES
  include/loaders/M3D/ZooM3D.h
)

set (ZOOGL24_LOADERS_M3D_SOURCE_FILES
  src/loaders/M3D/ZooM3D.cpp
)

set (ZOOGL24_LOADERS_PNG_HEADER_FILES
  include/loaders/PNG/Readpng.h
)

set (ZOOGL24_LOADERS_PNG_SOURCE_FILES
  src/loaders/PNG/Readpng.c
)

set (ZOOGL24_SCENEGRAPH_HEADER_FILES
  include/sceneGraph/ZooAnim.h
  include/sceneGraph/ZooBone.h
  include/sceneGraph/ZooCamera.h
  include/sceneGraph/ZooColl.h
  include/sceneGraph/ZooLight.h
  include/sceneGraph/ZooNodeGraph.h
  include/sceneGraph/ZooObject.h
  include/sceneGraph/ZooParticle.h
  include/sceneGraph/ZooShell.h
  include/sceneGraph/ZooSkelet.h
  include/sceneGraph/ZooSound.h
  include/sceneGraph/ZooSprite.h
)

set (ZOOGL24_SCENEGRAPH_SOURCE_FILES
  src/sceneGraph/ZooAnim.cpp
  src/sceneGraph/ZooBone.cpp
  src/sceneGraph/ZooCamera.cpp
  src/sceneGraph/ZooColl.cpp
  src/sceneGraph/ZooLight.cpp
  src/sceneGraph/ZooNodeGraph.cpp
  src/sceneGraph/ZooObject.cpp
  src/sceneGraph/ZooParticle.cpp
  src/sceneGraph/ZooShell.cpp
  src/sceneGraph/ZooSkelet.cpp
  src/sceneGraph/ZooSound.cpp
  src/sceneGraph/ZooSprite.cpp
)

set (ZOOGL24_SCOL_HEADER_FILES
  include/scol/colors.h
  include/scol/ext.h
  include/scol/Objstr.h
  include/scol/SCOLcb3d.h
  include/scol/SCOLsound.h
  include/scol/Version.h
  include/scol/ZooSCOL.h
)

set (ZOOGL24_SCOL_SOURCE_FILES
  src/scol/colors.cpp
  src/scol/ext.cpp
  src/scol/SCOL3dSound.cpp
  src/scol/SCOLcb3d.cpp
  src/scol/SCOLeasySound.cpp
  src/scol/SCOLmp3.cpp
  src/scol/SCOLParticle.cpp
  src/scol/SCOLrecorder.cpp
  src/scol/SCOLSDsound.cpp
  src/scol/SCOLsound.cpp
  src/scol/SCOLwave.cpp
  src/scol/ZooSCOL.cpp
)

set (ZOOGL24_SOUND_HEADER_FILES
  include/sound/HUtil.h
  include/sound/mpglibbind.h
)

set (ZOOGL24_SOUND_SOURCE_FILES
  src/sound/HAudio.cpp
  src/sound/HData.cpp
  src/sound/HListener.cpp
  src/sound/HMp3.cpp
  src/sound/HRecNotify.cpp
  src/sound/HRecord.cpp
  src/sound/HSndNotify.cpp
  src/sound/HSound.cpp
  src/sound/HSoundManager.cpp
  src/sound/HThread.cpp
  src/sound/HWave.cpp
  src/sound/WSound.cpp
)

set (MPGLIB_HEADER_FILES
  mpglib/huffman.h
  mpglib/mpg123.h
  mpglib/mpglib.h
)

set (MPGLIB_SOURCE_FILES
  mpglib/common.c
  mpglib/dct64_i386.c
  mpglib/decode_i386.c
  mpglib/interface.c
  mpglib/layer3.c
  mpglib/main.c
  mpglib/tabinit.c
)

scol_include_plugin("ZOOENGINE" "${PROJECT_SOURCE_DIR}/include" "loadScolZooengine.h")

# Add directories includes
include_directories(include
                    mpglib
                    ${DSound_INCLUDE_DIRS}
                    ${OPENGL_INCLUDE_DIRS}
                    ${Glew_INCLUDE_DIRS}
                    ${PNG_INCLUDE_DIRS}
                    ${ZLIB_INCLUDE_DIRS}
                    ${Cg_INCLUDE_DIRS})

# This is how visual studio directories (or filters) are generated.
source_group(Header\ Files\\Zoo\\Basic         FILES ${ZOOGL24_BASIC_HEADER_FILES})
source_group(Header\ Files\\Zoo\\Box           FILES ${ZOOGL24_BOX_HEADER_FILES})
source_group(Header\ Files\\Zoo\\Collision     FILES ${ZOOGL24_COLLISION_HEADER_FILES})
source_group(Header\ Files\\Zoo\\Datas         FILES ${ZOOGL24_DATAS_HEADER_FILES})
source_group(Header\ Files\\Zoo\\Loaders\\Jpeg FILES ${ZOOGL24_LOADERS_JPEG_HEADER_FILES})
source_group(Header\ Files\\Zoo\\Loaders\\M3D  FILES ${ZOOGL24_LOADERS_M3D_HEADER_FILES})
source_group(Header\ Files\\Zoo\\Loaders\\PNG  FILES ${ZOOGL24_LOADERS_PNG_HEADER_FILES})
source_group(Header\ Files\\Zoo\\Scene\ Graph  FILES ${ZOOGL24_SCENEGRAPH_HEADER_FILES})
source_group(Header\ Files\\Zoo\\Scol          FILES ${ZOOGL24_SCOL_HEADER_FILES})
source_group(Header\ Files\\Zoo\\Sound         FILES ${ZOOGL24_SOUND_HEADER_FILES})
source_group(Header\ Files\\Libmpg             FILES ${MPGLIB_HEADER_FILES})

# Same thing for sources files
source_group(Source\ Files\\Zoo\\Basic         FILES ${ZOOGL24_BASIC_SOURCE_FILES})
source_group(Source\ Files\\Zoo\\Box           FILES ${ZOOGL24_BOX_SOURCE_FILES})
source_group(Source\ Files\\Zoo\\Collision     FILES ${ZOOGL24_COLLISION_SOURCE_FILES})
source_group(Source\ Files\\Zoo\\Datas         FILES ${ZOOGL24_DATAS_SOURCE_FILES})
source_group(Source\ Files\\Zoo\\Loaders\\Jpeg FILES ${ZOOGL24_LOADERS_JPEG_SOURCE_FILES})
source_group(Source\ Files\\Zoo\\Loaders\\M3D  FILES ${ZOOGL24_LOADERS_M3D_SOURCE_FILES})
source_group(Source\ Files\\Zoo\\Loaders\\PNG  FILES ${ZOOGL24_LOADERS_PNG_SOURCE_FILES})
source_group(Source\ Files\\Zoo\\Scene\ Graph  FILES ${ZOOGL24_SCENEGRAPH_SOURCE_FILES})
source_group(Source\ Files\\Zoo\\Scol          FILES ${ZOOGL24_SCOL_SOURCE_FILES})
source_group(Source\ Files\\Zoo\\Sound         FILES ${ZOOGL24_SOUND_SOURCE_FILES})
source_group(Source\ Files\\Libmpg             FILES ${MPGLIB_SOURCE_FILES})

# Add definition for P4 optimizations, warnings removal.
add_definitions(-DOPTI_P4 -D_CRT_SECURE_NO_WARNINGS -DMATH_EXPORTS)

# setup Scol lib2d target
add_library(zoogl24
  ${Scol_LIB_TYPE}
  ${ZOOGL24_BASIC_HEADER_FILES}
  ${ZOOGL24_BASIC_SOURCE_FILES}
  ${ZOOGL24_BOX_HEADER_FILES}
  ${ZOOGL24_BOX_SOURCE_FILES}
  ${ZOOGL24_COLLISION_HEADER_FILES}
  ${ZOOGL24_COLLISION_SOURCE_FILES}
  ${ZOOGL24_DATAS_HEADER_FILES}
  ${ZOOGL24_DATAS_SOURCE_FILES}
  ${ZOOGL24_LOADERS_JPEG_HEADER_FILES}
  ${ZOOGL24_LOADERS_JPEG_SOURCE_FILES}
  ${ZOOGL24_LOADERS_M3D_HEADER_FILES}
  ${ZOOGL24_LOADERS_M3D_SOURCE_FILES}
  ${ZOOGL24_LOADERS_PNG_HEADER_FILES}
  ${ZOOGL24_LOADERS_PNG_SOURCE_FILES}
  ${ZOOGL24_SCENEGRAPH_HEADER_FILES}
  ${ZOOGL24_SCENEGRAPH_SOURCE_FILES}
  ${ZOOGL24_SCOL_HEADER_FILES}
  ${ZOOGL24_SCOL_SOURCE_FILES}
  ${ZOOGL24_SOUND_HEADER_FILES}
  ${ZOOGL24_SOUND_SOURCE_FILES}
  ${MPGLIB_HEADER_FILES}
  ${MPGLIB_SOURCE_FILES}
)
add_dependencies(zoogl24 kernel)

# set the dll version.
#set_target_properties(zoogl24 PROPERTIES VERSION ${Scol_VERSION} SOVERSION ${Scol_VERSION_MAJOR})

# Link dependencies
set(LIBRARIES ${DSound_LIBRARIES}
              ${OPENGL_LIBRARIES}
              ${Glew_LIBRARIES}
              ${PNG_LIBRARIES}
              ${JPEG_LIBRARIES}
              ${ZLIB_LIBRARIES}
              ${Cg_LIBRARIES}
              Winmm.lib)

# Linking
target_link_libraries(zoogl24 ${LIBRARIES})

# install Scol zoogl24
scol_config_plugin(zoogl24)
#install(FILES ${ZOOGL24_BASIC_HEADER_FILES}        DESTINATION include/SCOL/plugins/zooengine\ 24/basic)
#install(FILES ${ZOOGL24_BOX_HEADER_FILES}          DESTINATION include/SCOL/plugins/zooengine\ 24/box)
#install(FILES ${ZOOGL24_COLLISION_HEADER_FILES}    DESTINATION include/SCOL/plugins/zooengine\ 24/collision)
#install(FILES ${ZOOGL24_DATAS_HEADER_FILES}        DESTINATION include/SCOL/plugins/zooengine\ 24/datas)
#install(FILES ${ZOOGL24_LOADERS_JPEG_HEADER_FILES} DESTINATION include/SCOL/plugins/zooengine\ 24/loaders/JPEG)
#install(FILES ${ZOOGL24_LOADERS_M3D_HEADER_FILES}  DESTINATION include/SCOL/plugins/zooengine\ 24/loaders/M3D)
#install(FILES ${ZOOGL24_LOADERS_PNG_HEADER_FILES}  DESTINATION include/SCOL/plugins/zooengine\ 24/loaders/PNG)
#install(FILES ${ZOOGL24_SCENEGRAPH_HEADER_FILES}   DESTINATION include/SCOL/plugins/zooengine\ 24/sceneGraph)
#install(FILES ${ZOOGL24_SCOL_HEADER_FILES}         DESTINATION include/SCOL/plugins/zooengine\ 24/scol)
#install(FILES ${ZOOGL24_SOUND_HEADER_FILES}        DESTINATION include/SCOL/plugins/zooengine\ 24/sound)
#install(FILES ${MPGLIB_HEADER_FILES}               DESTINATION include/SCOL/plugins/zooengine\ 24/mpglib)