- FindGLIB2.cmake updates from

http://www.opensync.org/browser/branches/3rd-party-cmake-modules/modules
  + split out FindGMODULE2.cmake
  + contains /sw/... by default
  + supposedly tested on OSX
- Disable pcre for cmake builds by default, gregex should be
  picked up automatically if glib2 is not too old.

Should you have trouble linking due to some libgmodule... stuff
undefined, please add "${GMODULE2_LIBRARIES}" after "${GLIB2_LIBRARIES}"
an report back.

svn path=/trunk/; revision=34248
This commit is contained in:
Jörg Mayer 2010-09-25 15:38:12 +00:00
parent 7ec231f7f1
commit 4bfd2dfdf1
6 changed files with 288 additions and 175 deletions

View File

@ -221,7 +221,7 @@ endif()
# - set HAVE_XXX
#The minimum package list
set(PACKAGELIST GLIB2 PCAP M LEX YACC Perl SH PythonInterp HtmlViewer ${PACKAGELIST})
set(PACKAGELIST GLIB2 GMODULE2 PCAP M LEX YACC Perl SH PythonInterp HtmlViewer ${PACKAGELIST})
#Build the gui ?
if(BUILD_wireshark)

View File

@ -25,7 +25,7 @@ option(ENABLE_PLUGINS "Build with plugins" ON)
option(ENABLE_GUIDES "Build Guides" OFF)
option(ENABLE_ADNS "Build with adns support" ON)
option(ENABLE_PCRE "Build with pcre support" ON)
option(ENABLE_PCRE "Build with pcre support" OFF)
option(ENABLE_PORTAUDIO "Build with portaudio support" ON)
option(ENABLE_ZLIB "Build with zlib compression support" ON)
option(ENABLE_LUA "Build with lua dissector support" ON)

View File

@ -0,0 +1,27 @@
Copyright notice for the files copied from
http://www.opensync.org/browser/branches/3rd-party-cmake-modules/modules
$Id$
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.

View File

@ -1,16 +1,22 @@
#
# $Id$
#
# Try to find GLIB2
# - Try to find GLib2
# Once done this will define
#
# GLIB2_FOUND - system has GLIB2
# GLIB2_INCLUDE_DIRS - the GLIB2 include directory
# GLIB2_LIBRARIES - Link these to use GLIB2
# GLIB2_DEFINITIONS - Compiler switches required for using GLIB2
# GLIB2_FOUND - system has GLib2
# GLIB2_INCLUDE_DIRS - the GLib2 include directory
# GLIB2_LIBRARIES - Link these to use GLib2
#
# HAVE_GLIB_GREGEX_H glib has gregex.h header and
# supports g_regex_match_simple
#
# Copyright (c) 2006 Andreas Schneider <mail@cynapses.org>
# Copyright (c) 2006 Philippe Bernery <philippe.bernery@gmail.com>
# Copyright (c) 2007 Daniel Gollub <gollub@b1-systems.de>
# Copyright (c) 2007 Alban Browaeys <prahal@yahoo.com>
# Copyright (c) 2008 Michael Bell <michael.bell@web.de>
# Copyright (c) 2008-2009 Bjoern Ricks <bjoern.ricks@googlemail.com>
#
# Redistribution and use is allowed according to the terms of the New
# BSD license.
@ -18,195 +24,215 @@
#
if (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS)
IF (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS )
# in cache already
set(GLIB2_FOUND TRUE)
else (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
include(UsePkgConfig)
SET(GLIB2_FOUND TRUE)
ELSE (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS )
## GLibConfig
find_path(GLIBCONFIG_INCLUDE_DIR
INCLUDE(FindPkgConfig)
## Glib
IF ( GLIB2_FIND_REQUIRED )
SET( _pkgconfig_REQUIRED "REQUIRED" )
ELSE ( GLIB2_FIND_REQUIRED )
SET( _pkgconfig_REQUIRED "" )
ENDIF ( GLIB2_FIND_REQUIRED )
IF ( GLIB2_MIN_VERSION )
PKG_SEARCH_MODULE( GLIB2 ${_pkgconfig_REQUIRED} glib-2.0>=${GLIB2_MIN_VERSION} )
ELSE ( GLIB2_MIN_VERSION )
PKG_SEARCH_MODULE( GLIB2 ${_pkgconfig_REQUIRED} glib-2.0 )
ENDIF ( GLIB2_MIN_VERSION )
IF ( PKG_CONFIG_FOUND )
IF ( GLIB2_FOUND )
SET ( GLIB2_CORE_FOUND TRUE )
ELSE ( GLIB2_FOUND )
SET ( GLIB2_CORE_FOUND FALSE )
ENDIF ( GLIB2_FOUND )
ENDIF ( PKG_CONFIG_FOUND )
# Look for glib2 include dir and libraries w/o pkgconfig
IF ( NOT GLIB2_FOUND AND NOT PKG_CONFIG_FOUND )
FIND_PATH(
_glibconfig_include_DIR
NAMES
glibconfig.h
PATHS
${_GLIB2IncDir}
/opt/gnome/lib64/glib-2.0/include
/opt/gnome/lib/glib-2.0/include
/opt/lib/glib-2.0/include
/usr/lib64/glib-2.0/include
/usr/lib/glib-2.0/include
/opt/local/lib/glib-2.0/include
/sw/lib/glib-2.0/include
)
##
/opt/gnome/lib64
/opt/gnome/lib
/opt/lib/
/opt/local/lib
/sw/lib/
/usr/lib64
/usr/lib
/usr/local/include
${CMAKE_LIBRARY_PATH}
PATH_SUFFIXES
glib-2.0/include
)
## Glib
pkgconfig(glib-2.0 _GLIB2IncDir _GLIB2LinkDir _GLIB2LinkFlags _GLIB2Cflags)
set(GLIB2_DEFINITIONS ${_GLIB2Cflags})
find_path(GLIB2_INCLUDE_DIR
FIND_PATH(
_glib2_include_DIR
NAMES
glib.h
PATHS
${_GLIB2IncDir}
/opt/gnome/include/glib-2.0
/usr/include/glib-2.0
/usr/local/include/glib-2.0
/opt/local/include/glib-2.0
/sw/include/glib-2.0
)
/opt/gnome/include
/opt/local/include
/sw/include
/usr/include
/usr/local/include
PATH_SUFFIXES
glib-2.0
)
find_library(GLIB2_LIBRARY
#MESSAGE(STATUS "Glib headers: ${_glib2_include_DIR}")
FIND_LIBRARY(
_glib2_link_DIR
NAMES
glib-2.0
PATHS
${_GLIB2LinkDir}
/opt/gnome/lib
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
)
set(GLIB2_LIBRARIES ${GLIB2_LIBRARY})
set(GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIR})
##
## GModule
pkgconfig(gmodule-2.0 _GMODULE2IncDir _GMODULE2LinkDir _GMODULE2LinkFlags _GMODULE2Cflags)
set(GMODULE2_DEFINITIONS ${_GMODULE2Cflags})
find_path(GMODULE2_INCLUDE_DIR
NAMES
gmodule.h
PATHS
${_GMODULE2IncDir}
/opt/gnome/include/glib-2.0
/usr/include/glib-2.0
/usr/local/include/glib-2.0
/opt/local/include/glib-2.0
/sw/include/glib-2.0
)
find_library(GMODULE2_LIBRARY
NAMES
gmodule-2.0
PATHS
${_GMODULE2LinkDir}
/opt/gnome/lib
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
)
if (GMODULE2_LIBRARY AND GMODULE2_INCLUDE_DIR)
set(GMODULE2_FOUND TRUE)
endif (GMODULE2_LIBRARY AND GMODULE2_INCLUDE_DIR)
##
## GThread
pkgconfig(gthread-2.0 _GTHREAD2IncDir _GTHREAD2LinkDir _GTHREAD2LinkFlags _GTHREAD2Cflags)
set(GTHREAD2_DEFINITIONS ${_GTHREAD2Cflags})
find_path(GTHREAD2_INCLUDE_DIR
NAMES
gthread.h
PATHS
${_GTHREAD2IncDir}
/opt/gnome/include/glib-2.0
/usr/include/glib-2.0
/usr/local/include/glib-2.0
/opt/local/include/glib-2.0
/sw/include/glib-2.0
PATH_SUFFIXES
glib
)
find_library(GTHREAD2_LIBRARY
NAMES
gthread-2.0
PATHS
${_GTHREAD2LinkDir}
/opt/gnome/lib
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
)
if (GTHREAD2_LIBRARY AND GTHREAD2_INCLUDE_DIR)
set(GTHREAD2_FOUND TRUE)
endif (GTHREAD2_LIBRARY AND GTHREAD2_INCLUDE_DIR)
##
## libintl
find_path(LIBINTL_INCLUDE_DIR
NAMES
libintl.h
PATHS
/opt/gnome/include/glib-2.0
/usr/include/glib-2.0
/usr/local/include/glib-2.0
/opt/local/include/glib-2.0
/sw/include/glib-2.0
)
find_library(LIBINTL_LIBRARY
NAMES
intl
PATHS
/opt/gnome/lib
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
)
/usr/lib
/usr/local/lib
)
IF ( _glib2_include_DIR AND _glib2_link_DIR )
SET ( _glib2_FOUND TRUE )
ENDIF ( _glib2_include_DIR AND _glib2_link_DIR )
if (LIBINTL_LIBRARY AND LIBINTL_INCLUDE_DIR)
set(LIBINTL_FOUND TRUE)
endif (LIBINTL_LIBRARY AND LIBINTL_INCLUDE_DIR)
IF ( _glib2_FOUND )
SET ( GLIB2_INCLUDE_DIRS ${_glib2_include_DIR} ${_glibconfig_include_DIR} )
SET ( GLIB2_LIBRARIES ${_glib2_link_DIR} )
SET ( GLIB2_CORE_FOUND TRUE )
ELSE ( _glib2_FOUND )
SET ( GLIB2_CORE_FOUND FALSE )
ENDIF ( _glib2_FOUND )
# Handle dependencies
# libintl
IF ( NOT LIBINTL_FOUND )
FIND_PATH(LIBINTL_INCLUDE_DIR
NAMES
libintl.h
PATHS
/opt/gnome/include
/opt/local/include
/sw/include
/usr/include
/usr/local/include
)
FIND_LIBRARY(LIBINTL_LIBRARY
NAMES
intl
PATHS
/opt/gnome/lib
/opt/local/lib
/sw/lib
/usr/local/lib
/usr/lib
)
IF (LIBINTL_LIBRARY AND LIBINTL_INCLUDE_DIR)
SET (LIBINTL_FOUND TRUE)
ENDIF (LIBINTL_LIBRARY AND LIBINTL_INCLUDE_DIR)
ENDIF ( NOT LIBINTL_FOUND )
# libiconv
IF ( NOT LIBICONV_FOUND )
FIND_PATH(LIBICONV_INCLUDE_DIR
NAMES
iconv.h
PATHS
/opt/gnome/include
/opt/local/include
/opt/local/include
/sw/include
/sw/include
/usr/local/include
/usr/include
PATH_SUFFIXES
glib-2.0
)
FIND_LIBRARY(LIBICONV_LIBRARY
NAMES
iconv
PATHS
/opt/gnome/lib
/opt/local/lib
/sw/lib
/usr/lib
/usr/local/lib
)
IF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
SET (LIBICONV_FOUND TRUE)
ENDIF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
ENDIF ( NOT LIBICONV_FOUND )
IF (LIBINTL_FOUND)
SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBINTL_LIBRARY})
SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBINTL_INCLUDE_DIR})
ENDIF (LIBINTL_FOUND)
IF (LIBICONV_FOUND)
SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBICONV_LIBRARY})
SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBICONV_INCLUDE_DIR})
ENDIF (LIBICONV_FOUND)
ENDIF ( NOT GLIB2_FOUND AND NOT PKG_CONFIG_FOUND )
##
set(GLIB2_INCLUDE_DIRS
${GLIB_INCLUDE_DIR}
${GLIBCONFIG_INCLUDE_DIR}
)
IF (GLIB2_CORE_FOUND AND GLIB2_INCLUDE_DIRS AND GLIB2_LIBRARIES)
SET (GLIB2_FOUND TRUE)
ENDIF (GLIB2_CORE_FOUND AND GLIB2_INCLUDE_DIRS AND GLIB2_LIBRARIES)
if (GMODULE2_FOUND)
set(GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${GMODULE2_LIBRARY})
set(GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${GMODULE2_INCLUDE_DIR})
endif (GMODULE2_FOUND)
if (GTHREAD2_FOUND)
set(GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${GTHREAD2_LIBRARY})
set(GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${GTHREAD2_INCLUDE_DIR})
endif (GTHREAD2_FOUND)
if (LIBINTL_FOUND)
set(GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBINTL_LIBRARY})
set(GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBINTL_INCLUDE_DIR})
endif (LIBINTL_FOUND)
if (GLIB2_INCLUDE_DIRS AND GLIB2_LIBRARIES)
set(GLIB2_FOUND TRUE)
endif (GLIB2_INCLUDE_DIRS AND GLIB2_LIBRARIES)
if (GLIB2_FOUND)
if (NOT GLIB2_FIND_QUIETLY)
message(STATUS "Found GLIB2: ${GLIB2_LIBRARIES}")
endif (NOT GLIB2_FIND_QUIETLY)
else (GLIB2_FOUND)
if (GLIB2_FIND_REQUIRED)
message(FATAL_ERROR "Could not find GLIB2")
endif (GLIB2_FIND_REQUIRED)
endif (GLIB2_FOUND)
IF (GLIB2_FOUND)
IF (NOT GLIB2_FIND_QUIETLY)
MESSAGE (STATUS "Found GLib2: ${GLIB2_LIBRARIES} ${GLIB2_INCLUDE_DIRS}")
ENDIF (NOT GLIB2_FIND_QUIETLY)
ELSE (GLIB2_FOUND)
IF (GLIB2_FIND_REQUIRED)
MESSAGE (SEND_ERROR "Could not find GLib2")
ENDIF (GLIB2_FIND_REQUIRED)
ENDIF (GLIB2_FOUND)
# show the GLIB2_INCLUDE_DIRS and GLIB2_LIBRARIES variables only in the advanced view
mark_as_advanced(GLIB2_INCLUDE_DIRS GLIB2_LIBRARIES)
MARK_AS_ADVANCED(GLIB2_INCLUDE_DIRS GLIB2_LIBRARIES)
MARK_AS_ADVANCED(LIBICONV_INCLUDE_DIR LIBICONV_LIBRARY)
MARK_AS_ADVANCED(LIBINTL_INCLUDE_DIR LIBINTL_LIBRARY)
endif (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS)
ENDIF (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS)
IF ( WIN32 )
# include libiconv for win32
IF ( NOT LIBICONV_FOUND )
FIND_PATH(LIBICONV_INCLUDE_DIR iconv.h PATH_SUFFIXES glib-2.0)
FIND_LIBRARY(LIBICONV_LIBRARY NAMES iconv)
IF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
SET (LIBICONV_FOUND TRUE)
ENDIF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
ENDIF ( NOT LIBICONV_FOUND )
IF (LIBICONV_FOUND)
SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBICONV_LIBRARY})
SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBICONV_INCLUDE_DIR})
ENDIF (LIBICONV_FOUND)
ENDIF ( WIN32 )
IF ( GLIB2_FOUND )
# Check if system has a newer version of glib
# which supports g_regex_match_simple
INCLUDE( CheckIncludeFiles )
SET( CMAKE_REQUIRED_INCLUDES ${GLIB2_INCLUDE_DIRS} )
CHECK_INCLUDE_FILES ( glib/gregex.h HAVE_GLIB_GREGEX_H )
CHECK_INCLUDE_FILES ( glib/gchecksum.h HAVE_GLIB_GCHECKSUM_H )
# Reset CMAKE_REQUIRED_INCLUDES
SET( CMAKE_REQUIRED_INCLUDES "" )
ENDIF( GLIB2_FOUND )

View File

@ -0,0 +1,59 @@
#
# $Id$
#
# - Try to find GModule2
# Find GModule headers, libraries and the answer to all questions.
#
# GMODULE2_FOUND True if GMODULE2 got found
# GMODULE2_INCLUDE_DIRS Location of GMODULE2 headers
# GMODULE2_LIBRARIES List of libraries to use GMODULE2
#
# Copyright (c) 2008 Bjoern Ricks <bjoern.ricks@googlemail.com>
#
# Redistribution and use is allowed according to the terms of the New
# BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#
INCLUDE( FindPkgConfig )
IF ( GMODULE2_FIND_REQUIRED )
SET( _pkgconfig_REQUIRED "REQUIRED" )
ELSE( GMODULE2_FIND_REQUIRED )
SET( _pkgconfig_REQUIRED "" )
ENDIF ( GMODULE2_FIND_REQUIRED )
IF ( GMODULE2_MIN_VERSION )
PKG_SEARCH_MODULE( GMODULE2 ${_pkgconfig_REQUIRED} gmodule-2.0>=${GMODULE2_MIN_VERSION} )
ELSE ( GMODULE2_MIN_VERSION )
PKG_SEARCH_MODULE( GMODULE2 ${_pkgconfig_REQUIRED} gmodule-2.0 )
ENDIF ( GMODULE2_MIN_VERSION )
IF( NOT GMODULE2_FOUND AND NOT PKG_CONFIG_FOUND )
FIND_PATH( GMODULE2_INCLUDE_DIRS gmodule.h PATH_SUFFIXES glib-2.0 )
IF ( APPLE )
FIND_LIBRARY( GMODULE2_LIBRARIES glib )
ELSE ( APPLE )
FIND_LIBRARY( GMODULE2_LIBRARIES NAMES gmodule-2.0 gmodule )
ENDIF (APPLE)
# Report results
IF ( GMODULE2_LIBRARIES AND GMODULE2_INCLUDE_DIRS )
SET( GMODULE2_FOUND 1 )
IF ( NOT GMODULE2_FIND_QUIETLY )
MESSAGE( STATUS "Found GMODULE2: ${GMODULE2_LIBRARIES} ${GMODULE2_INCLUDE_DIRS}" )
ENDIF ( NOT GMODULE2_FIND_QUIETLY )
ELSE ( GMODULE2_LIBRARIES AND GMODULE2_INCLUDE_DIRS )
IF ( GMODULE2_FIND_REQUIRED )
MESSAGE( SEND_ERROR "Could NOT find GMODULE2" )
ELSE ( GMODULE2_FIND_REQUIRED )
IF ( NOT GMODULE2_FIND_QUIETLY )
MESSAGE( STATUS "Could NOT find GMODULE2" )
ENDIF ( NOT GMODULE2_FIND_QUIETLY )
ENDIF ( GMODULE2_FIND_REQUIRED )
ENDIF ( GMODULE2_LIBRARIES AND GMODULE2_INCLUDE_DIRS )
ENDIF( NOT GMODULE2_FOUND AND NOT PKG_CONFIG_FOUND )
MARK_AS_ADVANCED( GMODULE2_LIBRARIES GMODULE2_INCLUDE_DIRS )

View File

@ -94,6 +94,7 @@ add_yacc_files(WIRETAP_FILES
set(wiretap_LIBS
${GLIB2_LIBRARIES}
${GMODULE2_LIBRARIES}
${ZLIB_LIBRARIES}
wsutil
)