summaryrefslogtreecommitdiff
path: root/cmake/FindCompiz.cmake
blob: 3aafc5de3478b0628c45d21c376980e29753f04c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89



################################################################################
#
# FindCompiz
#
# This module finds Compiz (www.compiz.org). It uses the FindPkgConfig to
# locate Compiz and adds the Compiz CMake module path to the CMake module path.
# It also loads the CompizDefaults that sets all variables to compile Compiz
# modules. 
#
# This module sets the following variables:
#   COMPIZ_FOUND          ... set to true if compiz and its CompizDefaults macro
#                             is found
#
# Variables set by the FindPkgConfig macro for compiz
#   COMPIZ_LIBRARY_DIRS   ... the paths of the libraries (w/o the '-L')
#   COMPIZ_LDFLAGS        ... all required linker flags
#   COMPIZ_LDFLAGS_OTHER  ... all other linker flags
#   COMPIZ_INCLUDE_DIRS   ... the '-I' preprocessor flags (w/o the '-I')
#   COMPIZ_CFLAGS         ... all required cflags
#   COMPIZ_CFLAGS_OTHER   ... the other compiler flags
#   COMPIZ_VERSION        ... version of the module
#   COMPIZ_PREFIX         ... prefix-directory of the module
#   COMPIZ_INCLUDEDIR     ... include-dir of the module
#   COMPIZ_LIBDIR         ... lib-dir of the module
#
# If the _COMPIZ_INTERNAL variable is set to true, then this module will do
# nothing. This is required for the Compiz core package build system.
#
#  Author: Dennis Kasprzyk <onestone@compiz.org>
#
################################################################################

if (NOT _COMPIZ_INTERNAL)

    if (Compiz_FIND_REQUIRED)
	set (_req REQUIRED)
    endif ()

    # look for pkg-config
    find_package (PkgConfig ${_req})

    if (PKG_CONFIG_FOUND)

	# do we need to look for a specified version?
	set (_comp_ver)
	if (Compiz_FIND_VERSION)
	    if (Compiz_FIND_VERSION_EXACT)
		set (_comp_ver "=${Compiz_FIND_VERSION}")
	    else ()
		set (_comp_ver ">=${Compiz_FIND_VERSION}")
	    endif ()
	endif ()

	# add install prefix to pkgconfig search path if needed
        string (REGEX REPLACE "([\\+\\(\\)\\^\\\$\\.\\-\\*\\?\\|])" "\\\\\\1" PKGCONFIG_REGEX ${CMAKE_INSTALL_PREFIX})
	set (PKGCONFIG_REGEX ".*${PKGCONFIG_REGEX}/lib/pkgconfig:${PKGCONFIG_REGEX}/share/pkgconfig.*")

	if (NOT "$ENV{PKG_CONFIG_PATH}" MATCHES "${PKGCONFIG_REGEX}")
	    if ("" STREQUAL "$ENV{PKG_CONFIG_PATH}")
		set (ENV{PKG_CONFIG_PATH} "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig:${CMAKE_INSTALL_PREFIX}/share/pkgconfig")
	    else ()
		set (ENV{PKG_CONFIG_PATH}
		    "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig:${CMAKE_INSTALL_PREFIX}/share/pkgconfig:$ENV{PKG_CONFIG_PATH}")
	    endif ()
	endif ()

	# look for compiz
	pkg_check_modules (COMPIZ ${_req} "compiz${_comp_ver}")

	# is the CompizDefaults module installed?
	find_path(_compiz_def_macro CompizDefaults.cmake ${COMPIZ_PREFIX}/share/compiz/cmake)

	if (COMPIZ_FOUND AND _compiz_def_macro)
            # everything found. Set module path and include defaults module
	    set (CMAKE_MODULE_PATH  ${CMAKE_MODULE_PATH} ${COMPIZ_PREFIX}/share/compiz/cmake)
	    include (CompizDefaults)
	else ()
	    set (COMPIZ_FOUND 0)
	endif ()

        if (Compiz_FIND_REQUIRED AND NOT COMPIZ_FOUND)
	    message (FATAL_ERROR "Unable to find Compiz ${_comp_ver}")
	endif ()
    endif ()
endif ()