#-------------------------------------------------------------------
# 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(mmedia24)

# define header and source files for the library
set (MMEDIA24_HEADER_FILES
  include/colors.h
  include/Main.h
)

if (Scol_STATIC)
  set (MMEDIA24_HEADER_FILES ${MMEDIA24_HEADER_FILES} include/loadScolMmedia.h)
endif()

set (MMEDIA24_SOURCE_FILES
  src/colors.cpp
  src/Main.cpp
)

set (MMEDIA24_QUICKTIME_HEADER_FILES
  include/quicktime/bitmap.h
  include/quicktime/QTThread.h
  include/quicktime/Quicktime.h
)

set (MMEDIA24_QUICKTIME_SOURCE_FILES
  src/quicktime/bitmap.cpp
  src/quicktime/QTThread.cpp
  src/quicktime/Quicktime.cpp
)

set (MMEDIA24_REAL_HEADER_FILES
  include/real/exadvsnk.h
  include/real/exaumgr.h
  include/real/excontxt.h
  include/real/exerror.h
  include/real/exnwsite.h
  include/real/exsitsup.h
  include/real/exvsurf.h
  include/real/fivemlist.h
  include/real/fivemmap.h
  include/real/os.h
  include/real/pnbastsd.h
  include/real/pncom.h
  include/real/pnresult.h
  include/real/pntypes.h
  include/real/pnwintyp.h
  include/real/Real.h
  include/real/rmaausvc.h
  include/real/rmaauth.h
  include/real/rmaclsnk.h
  include/real/rmacomm.h
  include/real/rmacore.h
  include/real/rmaengin.h
  include/real/rmaerror.h
  include/real/rmaevent.h
  include/real/rmafiles.h
  include/real/rmamon.h
  include/real/rmapckts.h
  include/real/rmasite2.h
  include/real/rmavsurf.h
  include/real/rmawin.h
)

set (MMEDIA24_REAL_SOURCE_FILES
  src/real/exadvsnk.cpp
  src/real/exaumgr.cpp
  src/real/excontxt.cpp
  src/real/exerror.cpp
  src/real/exnwsite.cpp
  src/real/exsitsup.cpp
  src/real/exvsurf.cpp
  src/real/fivemlist.cpp
  src/real/fivemmap.cpp
  src/real/Real.cpp
)

set (MMEDIA24_WMP_HEADER_FILES
  include/wmp/Wmp.h
  include/wmp/WmpRenderer.h
  include/wmp/wmvdebug.h
)

set (MMEDIA24_WMP_SOURCE_FILES
  src/wmp/Wmp.cpp
  src/wmp/WmpRenderer.cpp
  src/wmp/wmvdebug.cpp
)

set (MMEDIA24_BASE_CLASSES_HEADER_FILES
  include/baseClasses/amextra.h
  include/baseClasses/amfilter.h
  include/baseClasses/cache.h
  include/baseClasses/checkbmi.h
  include/baseClasses/combase.h
  include/baseClasses/cprop.h
  include/baseClasses/ctlutil.h
  include/baseClasses/ddmm.h
  include/baseClasses/dllsetup.h
  include/baseClasses/dxmperf.h
  include/baseClasses/fourcc.h
  include/baseClasses/measure.h
  include/baseClasses/msgthrd.h
  include/baseClasses/mtype.h
  include/baseClasses/outputq.h
  include/baseClasses/perflog.h
  include/baseClasses/perfstruct.h
  include/baseClasses/pstream.h
  include/baseClasses/pullpin.h
  include/baseClasses/refclock.h
  include/baseClasses/reftime.h
  include/baseClasses/renbase.h
  include/baseClasses/schedule.h
  include/baseClasses/seekpt.h
  include/baseClasses/source.h
  include/baseClasses/streams.h
  include/baseClasses/strmctl.h
  include/baseClasses/sysclock.h
  include/baseClasses/transfrm.h
  include/baseClasses/transip.h
  include/baseClasses/videoctl.h
  include/baseClasses/vtrans.h
  include/baseClasses/winctrl.h
  include/baseClasses/winutil.h
  include/baseClasses/wxdebug.h
  include/baseClasses/wxlist.h
  include/baseClasses/wxutil.h
)

set (MMEDIA24_BASE_CLASSES_SOURCE_FILES
  src/baseClasses/amextra.cpp
  src/baseClasses/amfilter.cpp
  src/baseClasses/amvideo.cpp
  src/baseClasses/arithutil.cpp
  src/baseClasses/combase.cpp
  src/baseClasses/cprop.cpp
  src/baseClasses/ctlutil.cpp
  src/baseClasses/ddmm.cpp
  src/baseClasses/dllentry.cpp
  src/baseClasses/dllsetup.cpp
  src/baseClasses/mtype.cpp
  src/baseClasses/outputq.cpp
  src/baseClasses/perflog.cpp
  src/baseClasses/pstream.cpp
  src/baseClasses/pullpin.cpp
  src/baseClasses/refclock.cpp
  src/baseClasses/renbase.cpp
  src/baseClasses/schedule.cpp
  src/baseClasses/seekpt.cpp
  src/baseClasses/source.cpp
  src/baseClasses/strmctl.cpp
  src/baseClasses/sysclock.cpp
  src/baseClasses/transfrm.cpp
  src/baseClasses/transip.cpp
  src/baseClasses/videoctl.cpp
  src/baseClasses/vtrans.cpp
  src/baseClasses/winctrl.cpp
  src/baseClasses/winutil.cpp
  src/baseClasses/wxdebug.cpp
  src/baseClasses/wxlist.cpp
  src/baseClasses/wxutil.cpp
)

scol_include_plugin("MMEDIA" "${PROJECT_SOURCE_DIR}/include" "loadScolMmedia.h")

# Add directories includes
include_directories(include
                    include/baseClasses
                    include/quicktime
                    include/real
                    include/wmp
                    ${DIRECTINPUT_INCLUDE_DIRS}
					${DirectX9_INCLUDE_DIR}
                    ${DSound_INCLUDE_DIRS}
                    ${Quicktime_INCLUDE_DIRS})

# This is how visual studio directories (or filters) are generated.
source_group(Header\ Files\\quicktime   FILES ${MMEDIA24_QUICKTIME_HEADER_FILES})
source_group(Header\ Files\\real        FILES ${MMEDIA24_REAL_HEADER_FILES})
source_group(Header\ Files\\wmp         FILES ${MMEDIA24_WMP_HEADER_FILES})
source_group(Header\ Files\\baseClasses FILES ${MMEDIA24_BASE_CLASSES_HEADER_FILES})

# Same thing for sources files
source_group(Source\ Files\\quictime    FILES ${MMEDIA24_QUICKTIME_SOURCE_FILES})
source_group(Source\ Files\\real        FILES ${MMEDIA24_REAL_SOURCE_FILES})
source_group(Source\ Files\\wmp         FILES ${MMEDIA24_WMP_SOURCE_FILES})
source_group(Source\ Files\\baseClasses FILES ${MMEDIA24_BASE_CLASSES_SOURCE_FILES})

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

set(MMEDIA_LIBRARIES ${Quicktime_LIBRARIES}
              winmm.lib
              Strmiids.lib
              ${DIRECTX_ERR_LIBRARY})

# setup Scol lib2d os target
add_library(mmedia24
  ${Scol_LIB_TYPE}
  ${MMEDIA24_HEADER_FILES}
  ${MMEDIA24_SOURCE_FILES}
  ${MMEDIA24_QUICKTIME_HEADER_FILES}
  ${MMEDIA24_QUICKTIME_SOURCE_FILES}
  ${MMEDIA24_REAL_HEADER_FILES}
  ${MMEDIA24_REAL_SOURCE_FILES}
  ${MMEDIA24_WMP_HEADER_FILES}
  ${MMEDIA24_WMP_SOURCE_FILES}
  ${MMEDIA24_BASE_CLASSES_HEADER_FILES}
  ${MMEDIA24_BASE_CLASSES_SOURCE_FILES}
)
add_dependencies(mmedia24 kernel)

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

# install Scol mmedia24
scol_config_plugin(mmedia24)
#install(FILES ${MMEDIA24_HEADER_FILES}              DESTINATION include/SCOL/plugins/mmedia_24)
#install(FILES ${MMEDIA24_QUICKTIME_HEADER_FILES}    DESTINATION include/SCOL/plugins/mmedia_24/quicktime)
#install(FILES ${MMEDIA24_REAL_HEADER_FILES}         DESTINATION include/SCOL/plugins/mmedia_24/real)
#install(FILES ${MMEDIA24_WMP_HEADER_FILES}          DESTINATION include/SCOL/plugins/mmedia_24/wmp)
#install(FILES ${MMEDIA24_BASE_CLASSES_HEADER_FILES} DESTINATION include/SCOL/plugins/mmedia_24/baseClasses)