diff options
| author | Joshua L. Blocher <verbalshadow@gmail.com> | 2008-03-27 21:33:21 +0000 |
|---|---|---|
| committer | verbalshadow <verbalshadow@users.sourceforge.net> | 2008-03-27 21:33:21 +0000 |
| commit | b0f9e0297898f42006ddb700fdf4a7e9db8e8608 (patch) | |
| tree | 9ee2c46b99e5cc20caf1dc0bff6ec5a6d8d17fb3 /CMakeScripts | |
| parent | patch from bug 170978 (diff) | |
| download | inkscape-b0f9e0297898f42006ddb700fdf4a7e9db8e8608.tar.gz inkscape-b0f9e0297898f42006ddb700fdf4a7e9db8e8608.zip | |
Cmake Build system - Initial commit.
(bzr r5206)
Diffstat (limited to 'CMakeScripts')
| -rw-r--r-- | CMakeScripts/ConfigInkscapeDepends.cmake | 52 | ||||
| -rw-r--r-- | CMakeScripts/FindBoost.cmake | 42 | ||||
| -rw-r--r-- | CMakeScripts/FindGTK2.cmake | 348 | ||||
| -rw-r--r-- | CMakeScripts/FindPython.cmake | 13 | ||||
| -rw-r--r-- | CMakeScripts/UsePkgConfig.cmake | 119 |
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) |
