Blame cmake/FindCairo.cmake

Packit Service 5a9772
# - Try to find the CAIRO library
Packit Service 5a9772
# Once done this will define
Packit Service 5a9772
#
Packit Service 5a9772
#  CAIRO_ROOT_DIR - Set this variable to the root installation of CAIRO
Packit Service 5a9772
#
Packit Service 5a9772
# Read-Only variables:
Packit Service 5a9772
#  CAIRO_FOUND - system has the CAIRO library
Packit Service 5a9772
#  CAIRO_INCLUDE_DIR - the CAIRO include directory
Packit Service 5a9772
#  CAIRO_LIBRARIES - The libraries needed to use CAIRO
Packit Service 5a9772
#  CAIRO_VERSION - This is set to $major.$minor.$revision (eg. 0.9.8)
Packit Service 5a9772
Packit Service 5a9772
#=============================================================================
Packit Service 5a9772
# Copyright 2012 Dmitry Baryshnikov <polimax at mail dot ru>
Packit Service 5a9772
#
Packit Service 5a9772
# Distributed under the OSI-approved BSD License (the "License");
Packit Service 5a9772
# see accompanying file Copyright.txt for details.
Packit Service 5a9772
#
Packit Service 5a9772
# This software is distributed WITHOUT ANY WARRANTY; without even the
Packit Service 5a9772
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Packit Service 5a9772
# See the License for more information.
Packit Service 5a9772
#=============================================================================
Packit Service 5a9772
# (To distribute this file outside of CMake, substitute the full
Packit Service 5a9772
#  License text for the above reference.)
Packit Service 5a9772
Packit Service 5a9772
find_package(PkgConfig)
Packit Service 5a9772
Packit Service 5a9772
if(PKG_CONFIG_FOUND)
Packit Service 5a9772
    pkg_check_modules(_CAIRO cairo)
Packit Service 5a9772
endif (PKG_CONFIG_FOUND)
Packit Service 5a9772
Packit Service 5a9772
SET(_CAIRO_ROOT_HINTS
Packit Service 5a9772
  $ENV{CAIRO}
Packit Service 5a9772
  ${CAIRO_ROOT_DIR}
Packit Service 5a9772
  )
Packit Service 5a9772
SET(_CAIRO_ROOT_PATHS
Packit Service 5a9772
  $ENV{CAIRO}/src
Packit Service 5a9772
  /usr
Packit Service 5a9772
  /usr/local
Packit Service 5a9772
  )
Packit Service 5a9772
SET(_CAIRO_ROOT_HINTS_AND_PATHS
Packit Service 5a9772
  HINTS ${_CAIRO_ROOT_HINTS}
Packit Service 5a9772
  PATHS ${_CAIRO_ROOT_PATHS}
Packit Service 5a9772
  )
Packit Service 5a9772
Packit Service 5a9772
FIND_PATH(CAIRO_INCLUDE_DIR
Packit Service 5a9772
  NAMES
Packit Service 5a9772
    cairo.h
Packit Service 5a9772
  HINTS
Packit Service 5a9772
    ${_CAIRO_INCLUDEDIR}
Packit Service 5a9772
  ${_CAIRO_ROOT_HINTS_AND_PATHS}
Packit Service 5a9772
  PATH_SUFFIXES
Packit Service 5a9772
    include
Packit Service 5a9772
    "include/cairo"
Packit Service 5a9772
)
Packit Service 5a9772
Packit Service 5a9772
IF(NOT PKGCONFIG_FOUND AND WIN32 AND NOT CYGWIN)
Packit Service 5a9772
  # MINGW should go here too
Packit Service 5a9772
  IF(MSVC)
Packit Service 5a9772
    # Implementation details:
Packit Service 5a9772
    # We are using the libraries located in the VC subdir instead of the parent directory eventhough :
Packit Service 5a9772
    FIND_LIBRARY(CAIRO_DEBUG
Packit Service 5a9772
      NAMES
Packit Service 5a9772
        cairod
Packit Service 5a9772
      ${_CAIRO_ROOT_HINTS_AND_PATHS}
Packit Service 5a9772
      PATH_SUFFIXES
Packit Service 5a9772
        "lib"
Packit Service 5a9772
        "VC"
Packit Service 5a9772
        "lib/VC"
Packit Service 5a9772
    )
Packit Service 5a9772
Packit Service 5a9772
    FIND_LIBRARY(CAIRO_RELEASE
Packit Service 5a9772
      NAMES
Packit Service 5a9772
        cairo
Packit Service 5a9772
      ${_CAIRO_ROOT_HINTS_AND_PATHS}
Packit Service 5a9772
      PATH_SUFFIXES
Packit Service 5a9772
        "lib"
Packit Service 5a9772
        "VC"
Packit Service 5a9772
        "lib/VC"
Packit Service 5a9772
    )
Packit Service 5a9772
Packit Service 5a9772
    if( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE )
Packit Service 5a9772
        if(NOT CAIRO_DEBUG)
Packit Service 5a9772
            set(CAIRO_DEBUG ${CAIRO_RELEASE})
Packit Service 5a9772
        endif(NOT CAIRO_DEBUG)
Packit Service 5a9772
      set( CAIRO_LIBRARIES
Packit Service 5a9772
        optimized ${CAIRO_RELEASE} debug ${CAIRO_DEBUG}
Packit Service 5a9772
        )
Packit Service 5a9772
    else()
Packit Service 5a9772
      set( CAIRO_LIBRARIES ${CAIRO_RELEASE})
Packit Service 5a9772
    endif()
Packit Service 5a9772
    MARK_AS_ADVANCED(CAIRO_DEBUG CAIRO_RELEASE)
Packit Service 5a9772
  ELSEIF(MINGW)
Packit Service 5a9772
    # same player, for MingW
Packit Service 5a9772
    FIND_LIBRARY(CAIRO
Packit Service 5a9772
      NAMES
Packit Service 5a9772
        cairo
Packit Service 5a9772
      ${_CAIRO_ROOT_HINTS_AND_PATHS}
Packit Service 5a9772
      PATH_SUFFIXES
Packit Service 5a9772
        "lib"
Packit Service 5a9772
        "lib/MinGW"
Packit Service 5a9772
    )
Packit Service 5a9772
Packit Service 5a9772
    MARK_AS_ADVANCED(CAIRO)
Packit Service 5a9772
    set( CAIRO_LIBRARIES ${CAIRO})
Packit Service 5a9772
  ELSE(MSVC)
Packit Service 5a9772
    # Not sure what to pick for -say- intel, let's use the toplevel ones and hope someone report issues:
Packit Service 5a9772
    FIND_LIBRARY(CAIRO
Packit Service 5a9772
      NAMES
Packit Service 5a9772
        cairo
Packit Service 5a9772
      HINTS
Packit Service 5a9772
        ${_CAIRO_LIBDIR}
Packit Service 5a9772
      ${_CAIRO_ROOT_HINTS_AND_PATHS}
Packit Service 5a9772
      PATH_SUFFIXES
Packit Service 5a9772
        lib
Packit Service 5a9772
    )
Packit Service 5a9772
Packit Service 5a9772
    MARK_AS_ADVANCED(CAIRO)
Packit Service 5a9772
    set( CAIRO_LIBRARIES ${CAIRO} )
Packit Service 5a9772
  ENDIF(MSVC)
Packit Service 5a9772
ELSE()
Packit Service 5a9772
Packit Service 5a9772
  FIND_LIBRARY(CAIRO_LIBRARY
Packit Service 5a9772
    NAMES
Packit Service 5a9772
        cairo
Packit Service 5a9772
    HINTS
Packit Service 5a9772
      ${_CAIRO_LIBDIR}
Packit Service 5a9772
    ${_CAIRO_ROOT_HINTS_AND_PATHS}
Packit Service 5a9772
    PATH_SUFFIXES
Packit Service 5a9772
      "lib"
Packit Service 5a9772
      "local/lib"
Packit Service 5a9772
  )
Packit Service 5a9772
Packit Service 5a9772
  MARK_AS_ADVANCED(CAIRO_LIBRARY)
Packit Service 5a9772
Packit Service 5a9772
  # compat defines
Packit Service 5a9772
  SET(CAIRO_LIBRARIES ${CAIRO_LIBRARY})
Packit Service 5a9772
Packit Service 5a9772
ENDIF()
Packit Service 5a9772
Packit Service 5a9772
#message( STATUS "Cairo_FIND_VERSION=${Cairo_FIND_VERSION}.")
Packit Service 5a9772
#message( STATUS "CAIRO_INCLUDE_DIR=${CAIRO_INCLUDE_DIR}.")
Packit Service 5a9772
Packit Service 5a9772
# Fetch version from cairo-version.h if a version was requested by find_package()
Packit Service 5a9772
if(CAIRO_INCLUDE_DIR AND Cairo_FIND_VERSION)
Packit Service 5a9772
  file(READ "${CAIRO_INCLUDE_DIR}/cairo-version.h" _CAIRO_VERSION_H_CONTENTS)
Packit Service 5a9772
  string(REGEX REPLACE "^(.*\n)?#define[ \t]+CAIRO_VERSION_MAJOR[ \t]+([0-9]+).*"
Packit Service 5a9772
         "\\2" CAIRO_VERSION_MAJOR ${_CAIRO_VERSION_H_CONTENTS})
Packit Service 5a9772
  string(REGEX REPLACE "^(.*\n)?#define[ \t]+CAIRO_VERSION_MINOR[ \t]+([0-9]+).*"
Packit Service 5a9772
         "\\2" CAIRO_VERSION_MINOR ${_CAIRO_VERSION_H_CONTENTS})
Packit Service 5a9772
  string(REGEX REPLACE "^(.*\n)?#define[ \t]+CAIRO_VERSION_MICRO[ \t]+([0-9]+).*"
Packit Service 5a9772
         "\\2" CAIRO_VERSION_MICRO ${_CAIRO_VERSION_H_CONTENTS})
Packit Service 5a9772
  set(CAIRO_VERSION ${CAIRO_VERSION_MAJOR}.${CAIRO_VERSION_MINOR}.${CAIRO_VERSION_MICRO}
Packit Service 5a9772
      CACHE INTERNAL "The version number for Cairo libraries")
Packit Service 5a9772
endif()
Packit Service 5a9772
Packit Service 5a9772
include(FindPackageHandleStandardArgs)
Packit Service 5a9772
Packit Service 5a9772
find_package_handle_standard_args(Cairo
Packit Service 5a9772
  REQUIRED_VARS
Packit Service 5a9772
    CAIRO_LIBRARIES
Packit Service 5a9772
    CAIRO_INCLUDE_DIR
Packit Service 5a9772
  VERSION_VAR
Packit Service 5a9772
    CAIRO_VERSION
Packit Service 5a9772
)
Packit Service 5a9772
Packit Service 5a9772
MARK_AS_ADVANCED(CAIRO_INCLUDE_DIR CAIRO_LIBRARIES)