Skip to content

Commit e15b2c1

Browse files
committed
Added more scripts
1 parent 0572b4c commit e15b2c1

File tree

3 files changed

+322
-0
lines changed

3 files changed

+322
-0
lines changed

FindCairo.cmake

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# - Try to find Cairo
2+
# Once done, this will define
3+
#
4+
# CAIRO_FOUND - system has Cairo
5+
# CAIRO_INCLUDE_DIRS - the Cairo include directories
6+
# CAIRO_LIBRARIES - link these to use Cairo
7+
#
8+
# Copyright (C) 2012 Raphael Kubo da Costa <[email protected]>
9+
#
10+
# Redistribution and use in source and binary forms, with or without
11+
# modification, are permitted provided that the following conditions
12+
# are met:
13+
# 1. Redistributions of source code must retain the above copyright
14+
# notice, this list of conditions and the following disclaimer.
15+
# 2. Redistributions in binary form must reproduce the above copyright
16+
# notice, this list of conditions and the following disclaimer in the
17+
# documentation and/or other materials provided with the distribution.
18+
#
19+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS
20+
# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22+
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS
23+
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24+
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25+
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
26+
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27+
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28+
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29+
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30+
31+
FIND_PACKAGE(PkgConfig)
32+
PKG_CHECK_MODULES(PC_CAIRO cairo) # FIXME: After we require CMake 2.8.2 we can pass QUIET to this call.
33+
34+
FIND_PATH(CAIRO_INCLUDE_DIRS
35+
NAMES cairo.h
36+
HINTS ${PC_CAIRO_INCLUDEDIR} ${PC_CAIRO_INCLUDE_DIRS}
37+
PATH_SUFFIXES cairo
38+
)
39+
40+
FIND_LIBRARY(CAIRO_LIBRARIES
41+
NAMES cairo
42+
HINTS ${PC_CAIRO_LIBDIR} ${PC_CAIRO_LIBRARY_DIRS}
43+
)
44+
45+
IF(CAIRO_INCLUDE_DIRS)
46+
IF (EXISTS "${CAIRO_INCLUDE_DIRS}/cairo-version.h")
47+
FILE(READ "${CAIRO_INCLUDE_DIRS}/cairo-version.h" CAIRO_VERSION_CONTENT)
48+
49+
STRING(REGEX MATCH "#define +CAIRO_VERSION_MAJOR +([0-9]+)" _dummy "${CAIRO_VERSION_CONTENT}")
50+
SET(CAIRO_VERSION_MAJOR "${CMAKE_MATCH_1}")
51+
52+
STRING(REGEX MATCH "#define +CAIRO_VERSION_MINOR +([0-9]+)" _dummy "${CAIRO_VERSION_CONTENT}")
53+
SET(CAIRO_VERSION_MINOR "${CMAKE_MATCH_1}")
54+
55+
STRING(REGEX MATCH "#define +CAIRO_VERSION_MICRO +([0-9]+)" _dummy "${CAIRO_VERSION_CONTENT}")
56+
SET(CAIRO_VERSION_MICRO "${CMAKE_MATCH_1}")
57+
58+
SET(CAIRO_VERSION "${CAIRO_VERSION_MAJOR}.${CAIRO_VERSION_MINOR}.${CAIRO_VERSION_MICRO}")
59+
ENDIF()
60+
ENDIF()
61+
62+
# FIXME: Should not be needed anymore once we start depending on CMake 2.8.3
63+
SET(VERSION_OK TRUE)
64+
IF(Cairo_FIND_VERSION)
65+
IF(Cairo_FIND_VERSION_EXACT)
66+
IF("${Cairo_FIND_VERSION}" VERSION_EQUAL "${CAIRO_VERSION}")
67+
# FIXME: Use IF (NOT ...) with CMake 2.8.2+ to get rid of the ELSE block
68+
ELSE()
69+
SET(VERSION_OK FALSE)
70+
ENDIF()
71+
ELSE()
72+
IF("${Cairo_FIND_VERSION}" VERSION_GREATER "${CAIRO_VERSION}")
73+
SET(VERSION_OK FALSE)
74+
ENDIF()
75+
ENDIF()
76+
ENDIF()
77+
78+
INCLUDE(FindPackageHandleStandardArgs)
79+
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Cairo DEFAULT_MSG CAIRO_INCLUDE_DIRS CAIRO_LIBRARIES VERSION_OK)

FindGLIB.cmake

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
# - Try to find Glib and its components (gio, gobject etc)
2+
# Once done, this will define
3+
#
4+
# GLIB_FOUND - system has Glib
5+
# GLIB_INCLUDE_DIRS - the Glib include directories
6+
# GLIB_LIBRARIES - link these to use Glib
7+
#
8+
# Optionally, the COMPONENTS keyword can be passed to find_package()
9+
# and Glib components can be looked for. Currently, the following
10+
# components can be used, and they define the following variables if
11+
# found:
12+
#
13+
# gio: GLIB_GIO_LIBRARIES
14+
# gobject: GLIB_GOBJECT_LIBRARIES
15+
# gmodule: GLIB_GMODULE_LIBRARIES
16+
# gthread: GLIB_GTHREAD_LIBRARIES
17+
#
18+
# Note that the respective _INCLUDE_DIR variables are not set, since
19+
# all headers are in the same directory as GLIB_INCLUDE_DIRS.
20+
#
21+
# Copyright (C) 2012 Raphael Kubo da Costa <[email protected]>
22+
#
23+
# Redistribution and use in source and binary forms, with or without
24+
# modification, are permitted provided that the following conditions
25+
# are met:
26+
# 1. Redistributions of source code must retain the above copyright
27+
# notice, this list of conditions and the following disclaimer.
28+
# 2. Redistributions in binary form must reproduce the above copyright
29+
# notice, this list of conditions and the following disclaimer in the
30+
# documentation and/or other materials provided with the distribution.
31+
#
32+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS
33+
# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
34+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
35+
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS
36+
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
37+
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
38+
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
39+
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
40+
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
41+
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
42+
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
43+
44+
find_package(PkgConfig)
45+
pkg_check_modules(PC_GLIB QUIET glib-2.0)
46+
47+
find_library(GLIB_LIBRARIES
48+
NAMES glib-2.0
49+
HINTS ${PC_GLIB_LIBDIR}
50+
${PC_GLIB_LIBRARY_DIRS}
51+
)
52+
53+
# Files in glib's main include path may include glibconfig.h, which,
54+
# for some odd reason, is normally in $LIBDIR/glib-2.0/include.
55+
get_filename_component(_GLIB_LIBRARY_DIR ${GLIB_LIBRARIES} PATH)
56+
find_path(GLIBCONFIG_INCLUDE_DIR
57+
NAMES glibconfig.h
58+
HINTS ${PC_LIBDIR} ${PC_LIBRARY_DIRS} ${_GLIB_LIBRARY_DIR}
59+
${PC_GLIB_INCLUDEDIR} ${PC_GLIB_INCLUDE_DIRS}
60+
PATH_SUFFIXES glib-2.0/include
61+
)
62+
63+
find_path(GLIB_INCLUDE_DIR
64+
NAMES glib.h
65+
HINTS ${PC_GLIB_INCLUDEDIR}
66+
${PC_GLIB_INCLUDE_DIRS}
67+
PATH_SUFFIXES glib-2.0
68+
)
69+
70+
set(GLIB_INCLUDE_DIRS ${GLIB_INCLUDE_DIR} ${GLIBCONFIG_INCLUDE_DIR})
71+
72+
# Version detection
73+
if (EXISTS "${GLIBCONFIG_INCLUDE_DIR}/glibconfig.h")
74+
file(READ "${GLIBCONFIG_INCLUDE_DIR}/glibconfig.h" GLIBCONFIG_H_CONTENTS)
75+
string(REGEX MATCH "#define GLIB_MAJOR_VERSION ([0-9]+)" _dummy "${GLIBCONFIG_H_CONTENTS}")
76+
set(GLIB_VERSION_MAJOR "${CMAKE_MATCH_1}")
77+
string(REGEX MATCH "#define GLIB_MINOR_VERSION ([0-9]+)" _dummy "${GLIBCONFIG_H_CONTENTS}")
78+
set(GLIB_VERSION_MINOR "${CMAKE_MATCH_1}")
79+
string(REGEX MATCH "#define GLIB_MICRO_VERSION ([0-9]+)" _dummy "${GLIBCONFIG_H_CONTENTS}")
80+
set(GLIB_VERSION_MICRO "${CMAKE_MATCH_1}")
81+
set(GLIB_VERSION "${GLIB_VERSION_MAJOR}.${GLIB_VERSION_MINOR}.${GLIB_VERSION_MICRO}")
82+
endif ()
83+
84+
# Additional Glib components. We only look for libraries, as not all of them
85+
# have corresponding headers and all headers are installed alongside the main
86+
# glib ones.
87+
foreach (_component ${GLIB_FIND_COMPONENTS})
88+
if (${_component} STREQUAL "gio")
89+
find_library(GLIB_GIO_LIBRARIES NAMES gio-2.0 HINTS ${_GLIB_LIBRARY_DIR})
90+
set(ADDITIONAL_REQUIRED_VARS ${ADDITIONAL_REQUIRED_VARS} GLIB_GIO_LIBRARIES)
91+
elseif (${_component} STREQUAL "gobject")
92+
find_library(GLIB_GOBJECT_LIBRARIES NAMES gobject-2.0 HINTS ${_GLIB_LIBRARY_DIR})
93+
set(ADDITIONAL_REQUIRED_VARS ${ADDITIONAL_REQUIRED_VARS} GLIB_GOBJECT_LIBRARIES)
94+
elseif (${_component} STREQUAL "gmodule")
95+
find_library(GLIB_GMODULE_LIBRARIES NAMES gmodule-2.0 HINTS ${_GLIB_LIBRARY_DIR})
96+
set(ADDITIONAL_REQUIRED_VARS ${ADDITIONAL_REQUIRED_VARS} GLIB_GMODULE_LIBRARIES)
97+
elseif (${_component} STREQUAL "gthread")
98+
find_library(GLIB_GTHREAD_LIBRARIES NAMES gthread-2.0 HINTS ${_GLIB_LIBRARY_DIR})
99+
set(ADDITIONAL_REQUIRED_VARS ${ADDITIONAL_REQUIRED_VARS} GLIB_GTHREAD_LIBRARIES)
100+
elseif (${_component} STREQUAL "gio-unix")
101+
# gio-unix is compiled as part of the gio library, but the include paths
102+
# are separate from the shared glib ones. Since this is currently only used
103+
# by WebKitGTK+ we don't go to extraordinary measures beyond pkg-config.
104+
pkg_check_modules(GIO_UNIX QUIET gio-unix-2.0)
105+
endif ()
106+
endforeach ()
107+
108+
include(FindPackageHandleStandardArgs)
109+
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLIB REQUIRED_VARS GLIB_INCLUDE_DIRS GLIB_LIBRARIES ${ADDITIONAL_REQUIRED_VARS}
110+
VERSION_VAR GLIB_VERSION)
111+
112+
mark_as_advanced(
113+
GLIBCONFIG_INCLUDE_DIR
114+
GLIB_GIO_LIBRARIES
115+
GLIB_GIO_UNIX_LIBRARIES
116+
GLIB_GMODULE_LIBRARIES
117+
GLIB_GOBJECT_LIBRARIES
118+
GLIB_GTHREAD_LIBRARIES
119+
GLIB_INCLUDE_DIR
120+
GLIB_INCLUDE_DIRS
121+
GLIB_LIBRARIES
122+
)

FindGstreamer.cmake

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
# - Try to find GStreamer
2+
# Once done this will define
3+
#
4+
# GSTREAMER_FOUND - system has GStreamer
5+
# GSTREAMER_INCLUDE_DIR - the GStreamer include directory
6+
# GSTREAMER_LIBRARIES - the libraries needed to use GStreamer
7+
# GSTREAMER_DEFINITIONS - Compiler switches required for using GStreamer
8+
# GSTREAMER_VERSION - the version of GStreamer
9+
10+
# Copyright (c) 2008 Helio Chissini de Castro, <[email protected]>
11+
# (c)2006, Tim Beaulen <[email protected]>
12+
13+
# TODO: Other versions --> GSTREAMER_X_Y_FOUND (Example: GSTREAMER_0_8_FOUND and GSTREAMER_1.0_FOUND etc)
14+
15+
16+
IF(GSTREAMER_INCLUDE_DIR AND GSTREAMER_LIBRARIES AND GSTREAMER_BASE_LIBRARY AND GSTREAMER_APP_LIBRARY AND GSTREAMER_VIDEO_LIBRARY)
17+
# in cache already
18+
SET(GStreamer_FIND_QUIETLY TRUE)
19+
ELSE(GSTREAMER_INCLUDE_DIR AND GSTREAMER_LIBRARIES AND GSTREAMER_BASE_LIBRARY AND GSTREAMER_APP_LIBRARY AND GSTREAMER_VIDEO_LIBRARY)
20+
SET(GStreamer_FIND_QUIETLY FALSE)
21+
ENDIF(GSTREAMER_INCLUDE_DIR AND GSTREAMER_LIBRARIES AND GSTREAMER_BASE_LIBRARY AND GSTREAMER_APP_LIBRARY AND GSTREAMER_VIDEO_LIBRARY)
22+
23+
IF(NOT WIN32)
24+
FIND_PACKAGE(PkgConfig REQUIRED)
25+
# use pkg-config to get the directories and then use these values
26+
# in the FIND_PATH() and FIND_LIBRARY() calls
27+
# don't make this check required - otherwise you can't use macro_optional_find_package on this one
28+
PKG_CHECK_MODULES(PKG_GSTREAMER gstreamer-1.0)
29+
SET(GSTREAMER_VERSION ${PKG_GSTREAMER_VERSION})
30+
SET(GSTREAMER_DEFINITIONS ${PKG_GSTREAMER_CFLAGS})
31+
ENDIF(NOT WIN32)
32+
33+
FIND_PATH(GSTREAMER_INCLUDE_DIR gst/gst.h
34+
PATHS
35+
${PKG_GSTREAMER_INCLUDE_DIRS}
36+
PATH_SUFFIXES gstreamer-1.0
37+
)
38+
39+
IF(NOT GSTREAMER_INCLUDE_DIR)
40+
MESSAGE(STATUS "GStreamer: WARNING: include dir not found")
41+
ENDIF(NOT GSTREAMER_INCLUDE_DIR)
42+
43+
# Newer versions of GStreamer put gst-config.h under lib/gstreamer-1.0/include
44+
FIND_PATH(GSTREAMER_CONF_INCLUDE_DIR gst/gstconfig.h
45+
PATHS
46+
${PKG_GSTREAMER_INCLUDE_DIRS}
47+
PATH_SUFFIXES gstreamer-1.0 gstreamer-1.0/include
48+
)
49+
50+
IF(NOT GSTREAMER_CONF_INCLUDE_DIR)
51+
MESSAGE(STATUS "GStreamer: WARNING: gstconfig.h not found")
52+
ENDIF(NOT GSTREAMER_CONF_INCLUDE_DIR)
53+
54+
IF(GSTREAMER_INCLUDE_DIR AND GSTREAMER_CONF_INCLUDE_DIR)
55+
IF(NOT GSTREAMER_CONF_INCLUDE_DIR STREQUAL GSTREAMER_INCLUDE_DIR)
56+
LIST(APPEND GSTREAMER_INCLUDE_DIR "${GSTREAMER_CONF_INCLUDE_DIR}")
57+
ENDIF()
58+
ENDIF(GSTREAMER_INCLUDE_DIR AND GSTREAMER_CONF_INCLUDE_DIR)
59+
60+
FIND_LIBRARY(GSTREAMER_LIBRARIES NAMES gstreamer-1.0
61+
PATHS ${PKG_GSTREAMER_LIBRARY_DIRS}
62+
)
63+
64+
FIND_LIBRARY(GSTREAMER_BASE_LIBRARY NAMES gstbase-1.0
65+
PATHS ${PKG_GSTREAMER_LIBRARY_DIRS}
66+
)
67+
68+
FIND_LIBRARY(GSTREAMER_APP_LIBRARY NAMES gstapp-1.0
69+
PATHS ${PKG_GSTREAMER_LIBRARY_DIRS}
70+
)
71+
72+
FIND_LIBRARY(GSTREAMER_VIDEO_LIBRARY NAMES gstvideo-1.0
73+
PATHS ${PKG_GSTREAMER_LIBRARY_DIRS}
74+
)
75+
76+
IF(GSTREAMER_LIBRARIES)
77+
ELSE(GSTREAMER_LIBRARIES)
78+
MESSAGE(STATUS "GStreamer: WARNING: library not found")
79+
ENDIF(GSTREAMER_LIBRARIES)
80+
81+
IF(GSTREAMER_APP_LIBRARY)
82+
ELSE(GSTREAMER_APP_LIBRARY)
83+
MESSAGE(STATUS "GStreamer: WARNING: app library not found")
84+
ENDIF(GSTREAMER_APP_LIBRARY)
85+
86+
IF(GSTREAMER_INCLUDE_DIR AND GSTREAMER_LIBRARIES AND GSTREAMER_BASE_LIBRARY AND GSTREAMER_APP_LIBRARY AND GSTREAMER_VIDEO_LIBRARY)
87+
SET(GSTREAMER_FOUND TRUE)
88+
ELSE(GSTREAMER_INCLUDE_DIR AND GSTREAMER_LIBRARIES AND GSTREAMER_BASE_LIBRARY AND GSTREAMER_APP_LIBRARY AND GSTREAMER_VIDEO_LIBRARY)
89+
SET(GSTREAMER_FOUND FALSE)
90+
ENDIF(GSTREAMER_INCLUDE_DIR AND GSTREAMER_LIBRARIES AND GSTREAMER_BASE_LIBRARY AND GSTREAMER_APP_LIBRARY AND GSTREAMER_VIDEO_LIBRARY)
91+
92+
IF(GSTREAMER_FOUND)
93+
IF(NOT GStreamer_FIND_QUIETLY)
94+
MESSAGE(STATUS "Found GStreamer: ${GSTREAMER_LIBRARIES}")
95+
ENDIF (NOT GStreamer_FIND_QUIETLY)
96+
ELSE(GSTREAMER_FOUND)
97+
IF(GStreamer_FIND_REQUIRED)
98+
MESSAGE(SEND_ERROR "Could NOT find GStreamer")
99+
ENDIF (GStreamer_FIND_REQUIRED)
100+
ENDIF (GSTREAMER_FOUND)
101+
102+
INCLUDE(FindPackageHandleStandardArgs)
103+
104+
IF(GSTREAMER_VERSION)
105+
find_package_handle_standard_args(Gstreamer
106+
REQUIRED_VARS
107+
GSTREAMER_LIBRARIES
108+
GSTREAMER_INCLUDE_DIR
109+
VERSION_VAR
110+
GSTREAMER_VERSION
111+
FAIL_MESSAGE
112+
"Could NOT find Gstreamer, try to set the path to Gstreamer root folder in the system variable"
113+
)
114+
ELSE()
115+
find_package_handle_standard_args(Gstreamer "Could NOT find Gstreamer, try to set the path to Gstreamer root folder in the system variable"
116+
GSTREAMER_LIBRARIES
117+
GSTREAMER_INCLUDE_DIR
118+
)
119+
ENDIF()
120+
121+
MARK_AS_ADVANCED(GSTREAMER_INCLUDE_DIR GSTREAMER_LIBRARIES GSTREAMER_BASE_LIBRARY GSTREAMER_INTERFACE_LIBRARY GSTREAMER_APP_LIBRARY GSTREAMER_VIDEO_LIBRARY)

0 commit comments

Comments
 (0)