#-------------------------------------------------------------------------------
# DJV Imaging - CMake Build Configuration
#
# Contents:
#
# * Informationg
# * Software Components
#   * Libraries
#   * Plugins
#   * Programs
#   * Tests
# * Third-Party Software
# * Build Options
# * Packaging Options
#-------------------------------------------------------------------------------

cmake_minimum_required(VERSION 2.6)

#-------------------------------------------------------------------------------
# Information
#-------------------------------------------------------------------------------

# Project name.

project(djv)

# Software version.

set(djv_version_major "0")
set(djv_version_minor "8")
set(djv_version_patch "2")
set(djv_version_beta "")

set(
  djv_version_name
  djv-${djv_version_major}.${djv_version_minor}.${djv_version_patch}
)

set(
  djv_version_name
  ${djv_version_name}${djv_version_beta}
)

#-------------------------------------------------------------------------------
# Software Components
#-------------------------------------------------------------------------------

#set(djv_build_minimal true)

if (djv_build_minimal)
  add_definitions(-DDJV_BUILD_MINIMAL)
endif (djv_build_minimal)

# Libraries to build:

set(
  djv_build_lib
  djv_base
  djv_image
  djv_ui
)

#set(djv_build_lib)

# QuickTime compatible?

if (WIN32)

  if (NOT CMAKE_CL_64)    
    set(djv_quicktime true)
  endif (NOT CMAKE_CL_64)

elseif (APPLE)

  set(djv_quicktime true)

elseif (UNIX)

  set(djv_quicktime true)

endif (WIN32)

# Plugins to build:

if (NOT djv_build_minimal)

  if (WIN32)

    set(
      djv_build_plugin
      djv_openexr
      djv_jpeg
      djv_png
      djv_tiff
      djv_vlut
    )
  
    if (djv_quicktime)

      set(
        djv_build_plugin
        ${djv_build_plugin}
        djv_quicktime
      )

    endif (djv_quicktime)

  elseif (APPLE)

    set(
      djv_build_plugin
      djv_openexr
      djv_jpeg
      djv_png
      djv_tiff
    )
  
    if (djv_quicktime)

      set(
        djv_build_plugin
        ${djv_build_plugin}
        djv_quicktime
      )

    endif (djv_quicktime)

  elseif (UNIX)

    set(
      djv_build_plugin
      djv_openexr
      djv_jpeg
      djv_png
      djv_tiff
      djv_libquicktime
      djv_vlut
    )

  endif (WIN32)

endif (NOT djv_build_minimal)

#set(djv_build_plugin)

# Programs to build:

if (NOT djv_build_minimal)

  set(
    djv_build_bin
    djv_ls
    djv_info
    djv_convert
    djv_view
    util
    softimage-flip
  )

else (NOT djv_build_minimal)

  set(
    djv_build_bin
    djv_ls
    djv_info
    djv_convert
    djv_view
  )

endif (NOT djv_build_minimal)

#set(djv_build_bin)

# Tests to build:

if (NOT djv_build_minimal)

  set(
    djv_build_test
    djv_base
    djv_image
    djv_ui
    glsl
    image_play
    image_play2
    image_view
  )
  
  if (djv_quicktime)
  
    set(
      djv_build_test
      ${djv_build_test}
      audio
    )
    
  endif (djv_quicktime)
  
endif (NOT djv_build_minimal)

#set(djv_build_test djv_ui)
#set(djv_build_test image_play2)

#-------------------------------------------------------------------------------
# Third-Party Software
#-------------------------------------------------------------------------------

# Uncomment the following line to use system versions of third-party software:

#set(djv_third_party_use_system true)

if (WIN32)

  set(
    djv_third_party
    glew
    zlib
    libjpeg
    libpng
    libtiff
    fltk
    ilmbase
    openexr
    portaudio
  )

elseif (APPLE)

  if (NOT djv_build_minimal)

    set(
      djv_third_party
#      mesa
      glew
      zlib
      libjpeg
      libpng
      libtiff
      fltk
      ilmbase
      openexr
      portaudio
    )

  else (NOT djv_build_minimal)
  
    set(
      djv_third_party
      glew
      zlib
      libjpeg
      libpng
      fltk
    )

  endif (NOT djv_build_minimal)

elseif (UNIX)

  if (NOT djv_build_minimal)
  
    set(
      djv_third_party
#      mesa
      glew
      zlib
      libjpeg
      libpng
      libtiff
      ffmpeg
      libquicktime
      fltk
      ilmbase
#      ctl
      openexr
#      openexr_ctl
#      openexr_viewers
      portaudio
    )

  else (NOT djv_build_minimal)
  
    set(
      djv_third_party
      glew
      zlib
      libjpeg
      libpng
      fltk
    )

  endif (NOT djv_build_minimal)
  
endif (WIN32)

# XXX This allows you to disable dependency-checking for third-party software;
# it can help speed up builds during development.

set(djv_build_third_party true)

#-------------------------------------------------------------------------------
# Build Options
#-------------------------------------------------------------------------------

# Temporary directory to use for build.

set(djv_build_dir ${PROJECT_BINARY_DIR}/build)

# Enable shared libraries.

set(BUILD_SHARED_LIBS true)

# Enable memory-mapped file I/O support.

add_definitions(-DDJV_MMAP)

# Enable testing.

enable_testing()

# Profiling options.

#set(djv_compiler_flags -pg)
#set(djv_link_flags -pg)

# Debugging options.

add_definitions(-DDJV_ASSERT)
#add_definitions(-DDJV_DEBUG)

#-------------------------------------------------------------------------------
# Packaging Options
#-------------------------------------------------------------------------------

if (WIN32)

  set(CPACK_GENERATOR NSIS ZIP)

elseif (APPLE)

  set(CPACK_GENERATOR Bundle)
  set(CPACK_PACKAGING_INSTALL_PREFIX "")

elseif (UNIX)

  set(CPACK_GENERATOR DEB RPM TGZ)
  set(CPACK_PACKAGING_INSTALL_PREFIX /usr/local/djv)

endif (WIN32)

#-------------------------------------------------------------------------------

include(cmake_internal.txt)

