# cmake/modules/gd.cmake
#
# Copyright (C) 2006  Andrew Ross
#
# This file is part of PLplot.
#
# PLplot is free software; you can redistribute it and/or modify
# it under the terms of the GNU Library General Public License as published
# by the Free Software Foundation; version 2 of the License.
#
# PLplot is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public License
# along with the file PLplot; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA

# Configuration for the gd device driver (supporting png, gif and/or jpeg
# devices.)
#
# The following variables are set / modified
#
# PLD_png             - ON means the png device is enabled
# PLD_jpeg            - ON means the jpeg device is enabled
# PLD_gif             - ON means the gif device is enabled
# gd_COMPILE_FLAGS    - COMPILE_FLAGS required to compile gd device driver.
# gd_LINK_FLAGS       - LINK_FLAGS for dynamic gd device driver.
# DRIVERS_LINK_FLAGS  - list of LINK_FLAGS for all static device drivers.
#
# Include file searches use FindPath. To add extra search directories
# set the environment variable CMAKE_INCLUDE_PATH.
# Library searches use FindLibrary. To add extra search directories
# set the environment variable CMAKE_LIBRARY_PATH.
# See cmake documentation for further details.

# Look for gd libraries
if(PLD_png OR PLD_jpeg OR PLD_gif)
  find_package(GD)
  message(STATUS "GD_INCLUDE_DIRS = ${GD_INCLUDE_DIRS}")
  message(STATUS "GD_LIBRARIES = ${GD_LIBRARIES}")
  message(STATUS "GD_LIBRARY_DIRS = ${GD_LIBRARY_DIRS}")
  if(NOT GD_FOUND)
    message(STATUS "WARNING: at least one of GD_INCLUDE_DIRS, GD_LIBRARIES, or GD_LIBRARY_DIRS is false so setting PLD_png, PLD_jpeg, and PLD_git to OFF")
    set(PLD_png OFF CACHE BOOL "Enable png device" FORCE)
    set(PLD_jpeg OFF CACHE BOOL "Enable jpeg device" FORCE)
    set(PLD_gif OFF CACHE BOOL "Enable gif device" FORCE)
  else(NOT GD_FOUND)

    if(WITH_FREETYPE)
      set(GD_INCLUDE_DIRS ${GD_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS})
      set(GD_LIBRARIES ${GD_LIBRARIES} ${FREETYPE_LIBRARIES})
    endif(WITH_FREETYPE)
  endif(NOT GD_FOUND)
endif(PLD_png OR PLD_jpeg OR PLD_gif)

if(GD_FOUND)
  if(NOT GD_SUPPORTS_PNG)
    set(PLD_png OFF CACHE BOOL "Enable png device" FORCE)
  endif(NOT GD_SUPPORTS_PNG)

  if(NOT GD_SUPPORTS_JPEG)
    set(PLD_jpeg OFF CACHE BOOL "Enable jpeg device" FORCE)
  endif(NOT GD_SUPPORTS_JPEG)

  if(NOT GD_SUPPORTS_GIF)
    set(PLD_gif OFF CACHE BOOL "Enable gif device" FORCE)
  endif(NOT GD_SUPPORTS_GIF)
endif(GD_FOUND)

if(PLD_png OR PLD_jpeg OR PLD_gif)
  # Convert directory list to compile flags
  set(gd_COMPILE_FLAGS)
  foreach(DIR ${GD_INCLUDE_DIRS})
    set(gd_COMPILE_FLAGS "${gd_COMPILE_FLAGS} -I${DIR}")
  endforeach(DIR ${GD_INCLUDE_DIRS})

  # Generate library link commands
  set(gd_LINK_FLAGS ${GD_LIBRARIES})
  set(DRIVERS_LINK_FLAGS ${DRIVERS_LINK_FLAGS} ${gd_LINK_FLAGS})
endif(PLD_png OR PLD_jpeg OR PLD_gif)