summaryrefslogtreecommitdiffstats
path: root/CMakeScripts
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeScripts')
-rw-r--r--CMakeScripts/ConfigInkscapeDepends.cmake52
-rw-r--r--CMakeScripts/FindBoost.cmake42
-rw-r--r--CMakeScripts/FindGTK2.cmake348
-rw-r--r--CMakeScripts/FindPython.cmake13
-rw-r--r--CMakeScripts/UsePkgConfig.cmake119
5 files changed, 574 insertions, 0 deletions
diff --git a/CMakeScripts/ConfigInkscapeDepends.cmake b/CMakeScripts/ConfigInkscapeDepends.cmake
new file mode 100644
index 000000000..8855f03d6
--- /dev/null
+++ b/CMakeScripts/ConfigInkscapeDepends.cmake
@@ -0,0 +1,52 @@
+SET(INKSCAPE_DEPENDS gtk+-2.0 gtkmm-2.4 cairo cairomm-1.0 sigc++-2.0 lcms libgc1c2 libpng glib boost libxslt ImageMagick++ libpopt freetype2)
+SET(INKSCAPE_OPTIONAL gnome-vfs-2.0 libwpg-0.1 libssl)
+include(UsePkgConfig)
+
+# Dependencies Packages
+message(STATUS "")
+message(STATUS "")
+message(STATUS "Checking For REQUIRED Libraries for Building Inkscape.")
+FOREACH(dep ${INKSCAPE_DEPENDS})
+ # This is a hack due to a bug in Cmake vars system, Uncomment if using a version older than 2.4 //verbalshadow
+# IF("${dep}" MATCHES "gtk\\+-2.0")
+# SET(dep_name "GTK2")
+# ELSE("${dep}" MATCHES "gtk\\+-2.0")
+ SET(dep_name "${dep}")
+# ENDIF("${dep}" MATCHES "gtk\\+-2.0")
+
+ PKGCONFIG_FOUND(${dep} "${dep}_FOUND")
+ PKGCONFIG(${dep} "${dep_name}_INCLUDE_DIR" "${dep_name}_LINK_DIR" "${dep_name}_LINK_FLAGS" "${dep_name}_CFLAGS")
+# PKGCONFIG_VERSION(${dep} "${dep}_VERSION")
+ IF("${dep}_FOUND")
+ message(STATUS "${dep}: FOUND")
+ ELSE("${dep}_FOUND")
+ message(STATUS "${dep}: NOT FOUND")
+ ENDIF("${dep}_FOUND")
+ENDFOREACH(dep)
+# end Dependencies
+
+# Optional Dependencies Packages
+message(STATUS "")
+message(STATUS "")
+message(STATUS "Checking For OPTIONAL Libraries for Building Inkscape.")
+message(STATUS "These add additional functionality to Inkscape.")
+FOREACH(opt ${INKSCAPE_OPTIONAL})
+ SET(opt_name "${opt}")
+ PKGCONFIG_FOUND(${opt} "${opt}_FOUND")
+ PKGCONFIG(${opt} "${opt_name}_INCLUDE_DIR" "${opt_name}_LINK_DIR" "${opt_name}_LINK_FLAGS" "${opt_name}_CFLAGS")
+# PKGCONFIG_VERSION(${opt} "${opt}_VERSION")
+ IF("${opt}_FOUND")
+ message(STATUS "${opt}: FOUND")
+ ELSE("${opt}_FOUND")
+ message(STATUS "${opt}: NOT FOUND")
+ ENDIF("${opt}_FOUND")
+ENDFOREACH(opt)
+# end Optional Dependencies
+message(STATUS "")
+message(STATUS "")
+INCLUDE (CheckIncludeFiles)
+# usage: CHECK_INCLUDE_FILES (<header> <RESULT_VARIABLE> )
+
+#CHECK_INCLUDE_FILES (malloc.h HAVE_MALLOC_H)
+#CHECK_INCLUDE_FILES ("sys/param.h;sys/mount.h" HAVE_SYS_MOUNT_H)
+#CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
diff --git a/CMakeScripts/FindBoost.cmake b/CMakeScripts/FindBoost.cmake
new file mode 100644
index 000000000..68f178b61
--- /dev/null
+++ b/CMakeScripts/FindBoost.cmake
@@ -0,0 +1,42 @@
+# - Find Boost libraries
+# Go hunting for boost compoments
+# Defines:
+# BOOST_INCLUDE
+
+FIND_PATH(BOOST_INCLUDE_DIR boost/weak_ptr.hpp
+ /usr/include
+ /usr/local/include
+ C:\\Boost\\Include
+ C:\\Boost\\include\\boost-1_33_1 )
+
+
+IF(MINGW)
+ SET (BOOST_ROOT C:\\Boost)
+ FIND_LIBRARY( BOOST_PYTHON_LIBRARY
+ libboost_python-mgw
+ PATHS ${BOOST_ROOT}\\lib )
+ FIND_LIBRARY( BOOST_PYTHON_LIBRARY_DEBUG
+ libboost_python-mgw-d
+ PATHS ${BOOST_ROOT}\\lib )
+ELSE(MINGW)
+ FIND_LIBRARY( BOOST_PYTHON_LIBRARY NAMES boost_python
+ PATHS /usr/lib /usr/local/lib C:\\Boost\\lib )
+ FIND_LIBRARY( BOOST_PYTHON_LIBRARY_DEBUG NAMES boost_python-d
+ PATHS /usr/lib /usr/local/lib C:\\Boost\\lib )
+ENDIF(MINGW)
+
+IF (BOOST_INCLUDE_DIR)
+ SET(BOOST_FOUND TRUE)
+ENDIF (BOOST_INCLUDE_DIR)
+
+IF (BOOST_FOUND)
+ IF (NOT Boost_FIND_QUIETLY)
+ MESSAGE(STATUS "Found Boost: ${BOOST_INCLUDE_DIR}")
+ ENDIF (NOT Boost_FIND_QUIETLY)
+ELSE(BOOST_FOUND)
+ IF (Boost_FIND_REQUIRED)
+ MESSAGE(FATAL_ERROR "Could not find Boost")
+ ENDIF (Boost_FIND_REQUIRED)
+ENDIF (BOOST_FOUND)
+
+
diff --git a/CMakeScripts/FindGTK2.cmake b/CMakeScripts/FindGTK2.cmake
new file mode 100644
index 000000000..c426b2430
--- /dev/null
+++ b/CMakeScripts/FindGTK2.cmake
@@ -0,0 +1,348 @@
+#
+# try to find GTK2 (and glib) and GTK2GLArea
+#
+# GTK2_INCLUDE_DIRS - Directories to include to use GTK2
+# GTK2_LIBRARIES - Files to link against to use GTK2
+# GTK2_FOUND - If false, don't try to use GTK2
+# GTK2_GL_FOUND - If false, don't try to use GTK2's GL features
+#
+###################################################################
+#
+# Copyright (c) 2004 Jan Woetzel
+# Copyright (c) 2006 Andreas Schneider <mail@cynapses.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+###################################################################
+#
+# Copyright (c) 2004 Jan Woetzel
+# Copyright (c) 2006 Andreas Schneider <mail@cynapses.org>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+#
+# * Neither the name of the <ORGANIZATION> nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+IF (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS)
+ # in cache already
+ SET(GTK2_FOUND TRUE)
+ELSE (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS)
+ IF(UNIX)
+ # use pkg-config to get the directories and then use these values
+ # in the FIND_PATH() and FIND_LIBRARY() calls
+ INCLUDE(UsePkgConfig)
+
+ PKGCONFIG(gtk+-2.0 _GTK22IncDir _GTK22LinkDir _GTK22LinkFlags _GTK22Cflags)
+
+ FIND_PATH(GTK2_GTK_INCLUDE_PATH gtk/gtk.h
+ $ENV{GTK2_HOME}
+ ${_GTK22IncDir}
+ /usr/include/gtk-2.0
+ /usr/local/include/gtk-2.0
+ /opt/gnome/include/gtk-2.0
+ )
+
+ # Some Linux distributions (e.g. Red Hat) have glibconfig.h
+ # and glib.h in different directories, so we need to look
+ # for both.
+ # - Atanas Georgiev <atanas@cs.columbia.edu>
+ PKGCONFIG(glib-2.0 _GLIB2IncDir _GLIB2inkDir _GLIB2LinkFlags _GLIB2Cflags)
+ PKGCONFIG(gmodule-2.0 _GMODULE2IncDir _GMODULE2inkDir _GMODULE2LinkFlags _GMODULE2Cflags)
+ SET(GDIR /opt/gnome/lib/glib-2.0/include)
+ FIND_PATH(GTK2_GLIBCONFIG_INCLUDE_PATH glibconfig.h
+ ${_GLIB2IncDir}
+ /opt/gnome/lib64/glib-2.0/include
+ /opt/gnome/lib/glib-2.0/include
+ /usr/lib64/glib-2.0/include
+ /usr/lib/glib-2.0/include
+ )
+ #MESSAGE(STATUS "DEBUG: GTK2_GLIBCONFIG_INCLUDE_PATH = ${GTK2_GLIBCONFIG_INCLUDE_PATH}")
+
+ FIND_PATH(GTK2_GLIB_INCLUDE_PATH glib.h
+ ${_GLIB2IncDir}
+ /opt/gnome/include/glib-2.0
+ /usr/include/glib-2.0
+ )
+ #MESSAGE(STATUS "DEBUG: GTK2_GLIBCONFIG_INCLUDE_PATH = ${GTK2_GLIBCONFIG_INCLUDE_PATH}")
+
+ FIND_PATH(GTK2_GTKGL_INCLUDE_PATH gtkgl/gtkglarea.h
+ ${_GLIB2IncDir}
+ /usr/include
+ /usr/local/include
+ /usr/openwin/share/include
+ /opt/gnome/include
+ )
+
+ PKGCONFIG(pango _PANGOIncDir _PANGOinkDir _PANGOLinkFlags _PANGOCflags)
+
+ FIND_PATH(GTK2_PANGO_INCLUDE_PATH pango/pango.h
+ ${_PANGOIncDir}
+ /opt/gnome/include/pango-1.0
+ /usr/include/pango-1.0
+ )
+
+ PKGCONFIG(gdk-2.0 _GDK2IncDir _GDK2inkDir _GDK2LinkFlags _GDK2Cflags)
+
+ FIND_PATH(GTK2_GDKCONFIG_INCLUDE_PATH gdkconfig.h
+ ${_GDK2IncDir}
+ /opt/gnome/lib/gtk-2.0/include
+ /opt/gnome/lib64/gtk-2.0/include
+ /usr/lib/gtk-2.0/include
+ /usr/lib64/gtk-2.0/include
+ )
+
+ PKGCONFIG(cairo _CAIROIncDir _CAIROinkDir _CAIROLinkFlags _CAIROCflags)
+
+ FIND_PATH(GTK2_CAIRO_INCLUDE_PATH cairo.h
+ ${_CAIROIncDir}
+ /opt/gnome/include/cairo
+ /usr/include
+ /usr/include/cairo
+ )
+ #MESSAGE(STATUS "DEBUG: GTK2_CAIRO_INCLUDE_PATH = ${GTK2_CAIRO_INCLUDE_PATH}")
+
+ PKGCONFIG(atk _ATKIncDir _ATKinkDir _ATKLinkFlags _ATKCflags)
+
+ FIND_PATH(GTK2_ATK_INCLUDE_PATH atk/atk.h
+ ${_ATKIncDir}
+ /opt/gnome/include/atk-1.0
+ /usr/include/atk-1.0
+ )
+ #MESSAGE(STATUS "DEBUG: GTK2_ATK_INCLUDE_PATH = ${GTK2_ATK_INCLUDE_PATH}")
+
+ FIND_LIBRARY(GTK2_GTKGL_LIBRARY
+ NAMES
+ gtkgl
+ PATHS
+ ${_GTK22IncDir}
+ /usr/lib
+ /usr/local/lib
+ /usr/openwin/lib
+ /usr/X11R6/lib
+ /opt/gnome/lib
+ )
+
+ FIND_LIBRARY(GTK2_GTK_LIBRARY
+ NAMES
+ gtk-x11-2.0
+ PATHS
+ ${_GTK22LinkDir}
+ /usr/lib
+ /usr/local/lib
+ /usr/openwin/lib
+ /usr/X11R6/lib
+ /opt/gnome/lib
+ )
+
+ FIND_LIBRARY(GTK2_GDK_LIBRARY
+ NAMES
+ gdk-x11-2.0
+ PATHS
+ ${_GDK2LinkDir}
+ /usr/lib
+ /usr/local/lib
+ /usr/openwin/lib
+ /usr/X11R6/lib
+ /opt/gnome/lib
+ )
+
+ FIND_LIBRARY(GTK2_GMODULE_LIBRARY
+ NAMES
+ gmodule-2.0
+ PATHS
+ ${_GMODULE2inkDir}
+ /usr/lib
+ /usr/local/lib
+ /usr/openwin/lib
+ /usr/X11R6/lib
+ /opt/gnome/lib
+ )
+
+ FIND_LIBRARY(GTK2_GLIB_LIBRARY
+ NAMES
+ glib-2.0
+ PATHS
+ ${_GLIB2inkDir}
+ /usr/lib
+ /usr/local/lib
+ /usr/openwin/lib
+ /usr/X11R6/lib
+ /opt/gnome/lib
+ )
+
+ FIND_LIBRARY(GTK2_Xi_LIBRARY
+ NAMES
+ Xi
+ PATHS
+ /usr/lib
+ /usr/local/lib
+ /usr/openwin/lib
+ /usr/X11R6/lib
+ /opt/gnome/lib
+ )
+
+ FIND_LIBRARY(GTK2_GTHREAD_LIBRARY
+ NAMES
+ gthread-2.0
+ PATHS
+ /usr/lib
+ /usr/local/lib
+ /usr/openwin/lib
+ /usr/X11R6/lib
+ /opt/gnome/lib
+ )
+
+
+ FIND_LIBRARY(GTK2_GOBJECT_LIBRARY
+ NAMES
+ gobject-2.0
+ PATHS
+ /usr/lib
+ /usr/local/lib
+ /usr/openwin/lib
+ /usr/X11R6/lib
+ /opt/gnome/lib
+ )
+
+ IF(GTK2_GTK_INCLUDE_PATH)
+ IF(GTK2_GLIBCONFIG_INCLUDE_PATH)
+ IF(GTK2_GLIB_INCLUDE_PATH)
+ IF(GTK2_GTK_LIBRARY)
+ IF(GTK2_GLIB_LIBRARY)
+ IF(GTK2_PANGO_INCLUDE_PATH)
+ IF(GTK2_ATK_INCLUDE_PATH)
+ IF(GTK2_CAIRO_INCLUDE_PATH)
+ # Assume that if gtk and glib were found, the other
+ # supporting libraries have also been found.
+
+ SET(GTK2_FOUND TRUE)
+
+ SET(GTK2_INCLUDE_DIRS
+ ${GTK2_GTK_INCLUDE_PATH}
+ ${GTK2_GLIBCONFIG_INCLUDE_PATH}
+ ${GTK2_GLIB_INCLUDE_PATH}
+ ${GTK2_PANGO_INCLUDE_PATH}
+ ${GTK2_GDKCONFIG_INCLUDE_PATH}
+ ${GTK2_ATK_INCLUDE_PATH}
+ ${GTK2_CAIRO_INCLUDE_PATH}
+ CACHE INTERNAL "The include directories for GTK2"
+ )
+
+ SET(GTK2_LIBRARIES
+ ${GTK2_GTK_LIBRARY}
+ ${GTK2_GDK_LIBRARY}
+ ${GTK2_GLIB_LIBRARY}
+ )
+ #${GTK2_GOBJECT_LIBRARY})
+
+ IF(GTK2_GMODULE_LIBRARY)
+ SET(GTK2_LIBRARIES
+ ${GTK2_LIBRARIES}
+ ${GTK2_GMODULE_LIBRARY}
+ )
+ ENDIF(GTK2_GMODULE_LIBRARY)
+
+ IF(GTK2_GTHREAD_LIBRARY)
+ SET(GTK2_LIBRARIES
+ ${GTK2_LIBRARIES}
+ ${GTK2_GTHREAD_LIBRARY}
+ )
+ SET(GTK2_LIBRARIES ${GTK2_LIBRARIES}
+ CACHE INTERNAL "The libraries for GTK2"
+ )
+ ENDIF(GTK2_GTHREAD_LIBRARY)
+ ELSE(GTK2_CAIRO_INCLUDE_PATH)
+ MESSAGE(STATUS "Can not find cairo")
+ ENDIF(GTK2_CAIRO_INCLUDE_PATH)
+ ELSE(GTK2_ATK_INCLUDE_PATH)
+ MESSAGE(STATUS "Can not find atk")
+ ENDIF(GTK2_ATK_INCLUDE_PATH)
+ ELSE(GTK2_PANGO_INCLUDE_PATH)
+ MESSAGE(STATUS "Can not find pango includes")
+ ENDIF(GTK2_PANGO_INCLUDE_PATH)
+ ELSE(GTK2_GLIB_LIBRARY)
+ MESSAGE(STATUS "Can not find glib lib")
+ ENDIF(GTK2_GLIB_LIBRARY)
+ ELSE(GTK2_GTK_LIBRARY)
+ MESSAGE(STATUS "Can not find gtk lib")
+ ENDIF(GTK2_GTK_LIBRARY)
+ ELSE(GTK2_GLIB_INCLUDE_PATH)
+ MESSAGE(STATUS "Can not find glib includes")
+ ENDIF(GTK2_GLIB_INCLUDE_PATH)
+ ELSE(GTK2_GLIBCONFIG_INCLUDE_PATH)
+ MESSAGE(STATUS "Can not find glibconfig")
+ ENDIF(GTK2_GLIBCONFIG_INCLUDE_PATH)
+ ELSE (GTK2_GTK_INCLUDE_PATH)
+ MESSAGE(STATUS "Can not find gtk includes")
+ ENDIF (GTK2_GTK_INCLUDE_PATH)
+
+ IF (GTK2_FOUND)
+ IF (NOT GTK2_FIND_QUIETLY)
+ MESSAGE(STATUS "Found GTK2: ${GTK2_LIBRARIES}")
+ ENDIF (NOT GTK2_FIND_QUIETLY)
+ ELSE (GTK2_FOUND)
+ IF (GTK2_FIND_REQUIRED)
+ MESSAGE(SEND_ERROR "Could NOT find GTK2")
+ ENDIF (GTK2_FIND_REQUIRED)
+ ENDIF (GTK2_FOUND)
+
+ MARK_AS_ADVANCED(
+ GTK2_GDK_LIBRARY
+ GTK2_GLIB_INCLUDE_PATH
+ GTK2_GLIB_LIBRARY
+ GTK2_GLIBCONFIG_INCLUDE_PATH
+ GTK2_GMODULE_LIBRARY
+ GTK2_GTHREAD_LIBRARY
+ GTK2_Xi_LIBRARY
+ GTK2_GTK_INCLUDE_PATH
+ GTK2_GTK_LIBRARY
+ GTK2_GTKGL_INCLUDE_PATH
+ GTK2_GTKGL_LIBRARY
+ GTK2_ATK_INCLUDE_PATH
+ GTK2_GDKCONFIG_INCLUDE_PATH
+ #GTK2_GOBJECT_LIBRARY
+ GTK2_PANGO_INCLUDE_PATH
+ )
+ ENDIF(UNIX)
+ENDIF (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS)
+
+# vim:et ts=2 sw=2 comments=\:\#
diff --git a/CMakeScripts/FindPython.cmake b/CMakeScripts/FindPython.cmake
new file mode 100644
index 000000000..1ac451541
--- /dev/null
+++ b/CMakeScripts/FindPython.cmake
@@ -0,0 +1,13 @@
+# figure out Python flags
+FIND_PACKAGE(PythonInterp)
+IF(PYTHONINTERP_FOUND)
+ EXEC_PROGRAM(${PYTHON_EXECUTABLE}
+ ARGS ${CMAKE_SOURCE_DIR}/makelib/python_config_var.py LIBS
+ OUTPUT_VARIABLE PYTHON_LINK_LIBRARIES )
+ EXEC_PROGRAM(${PYTHON_EXECUTABLE}
+ ARGS ${CMAKE_SOURCE_DIR}/makelib/python_config_var.py LINKFORSTATIC
+ OUTPUT_VARIABLE PYTHON_LINKFORSTATIC )
+ELSE(PYTHONINTERP_FOUND)
+ SET(PYTHON_LINK_LIBRARIES "")
+ SET(PYTHON_LINKFORSTATIC "")
+ENDIF(PYTHONINTERP_FOUND)
diff --git a/CMakeScripts/UsePkgConfig.cmake b/CMakeScripts/UsePkgConfig.cmake
new file mode 100644
index 000000000..2de721238
--- /dev/null
+++ b/CMakeScripts/UsePkgConfig.cmake
@@ -0,0 +1,119 @@
+# - pkg-config module for CMake
+#
+# Defines the following macros:
+#
+# PKGCONFIG_FOUND(package found)
+# PKGCONFIG(package includedir libdir linkflags cflags)
+# PKGCONFIG_VERSION(package version)
+# PKGCONFIG_DEFINITION(package definition)
+
+# Calling PKGCONFIG_FOUND will fill into the argument the value of the package search's result
+# e.g. PKGCONFIG_FOUND(libart-2.0 LIBART_FOUND)
+#
+# Calling PKGCONFIG_VERSION will fill the desired version into the argument,
+# e.g. PKGCONFIG_VERSION(libart-2.0 LIBART_VERSION)
+# Calling PKGCONFIG will fill the desired information into the 4 given arguments,
+# e.g. PKGCONFIG(libart-2.0 LIBART_INCLUDE_DIR LIBART_LINK_DIR LIBART_LINK_FLAGS LIBART_CFLAGS)
+# if pkg-config was NOT found or the specified software package doesn't exist, the
+# variable will be empty when the function returns, otherwise they will contain the respective information
+#
+# Calling PKGCONFIG_VERSION will fill the desired version into the argument,
+# e.g. PKGCONFIG_VERSION(libart-2.0 LIBART_VERSION)
+#
+# Calling PKGCONFIG_DEFINITION will fill the definition (e.g -D_REENTRANT) into the argument,
+# e.g. PKGCONFIG_DEFINITION(libart-2.0 LIBART_DEFINITION)
+
+FIND_PROGRAM(PKGCONFIG_EXECUTABLE NAMES pkg-config PATHS /usr/local/bin )
+
+MACRO(STRIP_NEWLINES _string_var)
+ STRING(REGEX REPLACE "[\n\r]+" "" ${_string_var} ${${_string_var}})
+ENDMACRO(STRIP_NEWLINES _string_var)
+
+MACRO(PKGCONFIG_FOUND _package _found)
+ # reset the variable at the beginning
+ SET(${_found})
+
+# if pkg-config has been found
+ IF(PKGCONFIG_EXECUTABLE)
+
+ EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --print-errors --exists RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull )
+
+ IF(${_pkgconfigDevNull})
+ MESSAGE(STATUS "${_pkgconfigDevNull}")
+ ENDIF(${_pkgconfigDevNull})
+
+ IF(NOT _return_VALUE)
+ SET(${_found} "TRUE")
+ ENDIF(NOT _return_VALUE)
+ ENDIF(PKGCONFIG_EXECUTABLE)
+
+ENDMACRO(PKGCONFIG_FOUND _found)
+
+MACRO(PKGCONFIG _package _include_DIR _link_DIR _link_FLAGS _cflags)
+# reset the variables at the beginning
+ SET(${_include_DIR})
+ SET(${_link_DIR})
+ SET(${_link_FLAGS})
+ SET(${_cflags})
+
+ # if pkg-config has been found
+ IF(PKGCONFIG_EXECUTABLE)
+
+ EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --exists RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull )
+
+ # and if the package of interest also exists for pkg-config, then get the information
+ IF(NOT _return_VALUE)
+
+ EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --variable=includedir OUTPUT_VARIABLE ${_include_DIR} )
+
+ EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --variable=libdir OUTPUT_VARIABLE ${_link_DIR} )
+
+ EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --libs OUTPUT_VARIABLE ${_link_FLAGS} )
+
+ EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS ${_package} --cflags OUTPUT_VARIABLE ${_cflags} )
+
+ STRIP_NEWLINES(${_cflags})
+
+ ENDIF(NOT _return_VALUE)
+
+ ENDIF(PKGCONFIG_EXECUTABLE)
+
+ENDMACRO(PKGCONFIG _include_DIR _link_DIR _link_FLAGS _cflags)
+
+MACRO(PKGCONFIG_VERSION _package _version)
+# reset the variables at the beginning
+ SET(${_version})
+
+# if pkg-config has been found
+ IF(PKGCONFIG_EXECUTABLE)
+ EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS --print-errors ${_package} --exists RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull )
+
+# and if the package of interest also exists for pkg-config, then get the information
+ IF(NOT _return_VALUE)
+ EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS --print-errors ${_package} --modversion OUTPUT_VARIABLE ${_version} )
+ ENDIF(NOT _return_VALUE)
+
+ ENDIF(PKGCONFIG_EXECUTABLE)
+
+ENDMACRO(PKGCONFIG_VERSION _package _version)
+
+MARK_AS_ADVANCED(PKGCONFIG_EXECUTABLE)
+
+MACRO(PKGCONFIG_DEFINITION _package _definition)
+# reset the variables at the beginning
+ SET(${_definition})
+
+# if pkg-config has been found
+ IF(PKGCONFIG_EXECUTABLE)
+ EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS --print-errors ${_package} --exists RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull )
+
+# and if the package of interest also exists for pkg-config, then get the information
+ IF(NOT _return_VALUE)
+ EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS --print-errors ${_package} --cflags-only-other OUTPUT_VARIABLE ${_definition} )
+ ENDIF(NOT _return_VALUE)
+
+ ENDIF(PKGCONFIG_EXECUTABLE)
+
+ENDMACRO(PKGCONFIG_DEFINITION _package _definition)
+
+MARK_AS_ADVANCED(PKGCONFIG_EXECUTABLE)