summaryrefslogtreecommitdiff
path: root/cmake/modules/FindCairo.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/modules/FindCairo.cmake')
-rw-r--r--cmake/modules/FindCairo.cmake64
1 files changed, 41 insertions, 23 deletions
diff --git a/cmake/modules/FindCairo.cmake b/cmake/modules/FindCairo.cmake
index a0a8400d..e3b65ec7 100644
--- a/cmake/modules/FindCairo.cmake
+++ b/cmake/modules/FindCairo.cmake
@@ -3,42 +3,60 @@
#
# CAIRO_FOUND - system has Cairo
# CAIRO_CFLAGS - the Cairo CFlags
+# CAIRO_INCLUDE_DIRS - the Cairo include directories
# CAIRO_LIBRARIES - Link these to use Cairo
#
-# Copyright (c) 2007, Pino Toscano, <pino@kde.org>
+# Copyright (C) 2007, 2010, Pino Toscano, <pino@kde.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-if (NOT WIN32)
- include(UsePkgConfig)
-
- pkgconfig(cairo _LibCairoIncDir _LibCairoLinkDir _CairoLinkFlags _CairoCflags)
- set (CAIRO_FOUND FALSE)
- if (_LibCairoIncDir)
+if(CAIRO_INCLUDE_DIRS AND CAIRO_LIBRARIES)
+
+ # in cache already
+ set(CAIRO_FOUND TRUE)
+
+else(CAIRO_INCLUDE_DIRS AND CAIRO_LIBRARIES)
+
+if(NOT WIN32)
+ # use pkg-config to get the directories and then use these values
+ # in the FIND_PATH() and FIND_LIBRARY() calls
+ include(FindPkgConfig)
+ if(PACKAGE_FIND_VERSION_COUNT GREATER 0)
+ set(_cairo_version_cmp ">=${PACKAGE_FIND_VERSION}")
+ endif(PACKAGE_FIND_VERSION_COUNT GREATER 0)
+ pkg_check_modules(_pc_cairo cairo${_cairo_version_cmp})
+ if(_pc_cairo_FOUND)
+ set(CAIRO_FOUND TRUE)
+ endif(_pc_cairo_FOUND)
+else(NOT WIN32)
+ # assume so, for now
+ set(CAIRO_FOUND TRUE)
+endif(NOT WIN32)
- if (CAIRO_VERSION)
+if(CAIRO_FOUND)
+ # set it back as false
+ set(CAIRO_FOUND FALSE)
- exec_program(${PKGCONFIG_EXECUTABLE} ARGS --atleast-version=${CAIRO_VERSION} cairo RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull)
- if(_return_VALUE STREQUAL "0")
- set (CAIRO_CFLAGS ${_CairoCflags})
- set (CAIRO_LIBRARIES ${_CairoLinkFlags})
- endif(_return_VALUE STREQUAL "0")
+ find_library(CAIRO_LIBRARY cairo
+ HINTS ${_pc_cairo_LIBRARY_DIRS}
+ )
+ set(CAIRO_LIBRARIES "${CAIRO_LIBRARY}")
- else (CAIRO_VERSION)
- set (CAIRO_CFLAGS ${_CairoCflags})
- set (CAIRO_LIBRARIES ${_CairoLinkFlags})
- endif (CAIRO_VERSION)
+ find_path(CAIRO_INCLUDE_DIR cairo.h
+ HINTS ${_pc_cairo_INCLUDE_DIRS}
+ PATH_SUFFIXES cairo
+ )
+ set(CAIRO_INCLUDE_DIRS "${CAIRO_INCLUDE_DIR}")
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(Cairo DEFAULT_MSG CAIRO_LIBRARIES CAIRO_CFLAGS)
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(Cairo DEFAULT_MSG CAIRO_LIBRARIES CAIRO_INCLUDE_DIRS)
+endif(CAIRO_FOUND)
- endif (_LibCairoIncDir)
-
-endif(NOT WIN32)
+endif(CAIRO_INCLUDE_DIRS AND CAIRO_LIBRARIES)
mark_as_advanced(
CAIRO_CFLAGS
+ CAIRO_INCLUDE_DIRS
CAIRO_LIBRARIES
)
-