Copy and adapt FindCairo.cmake for Pixman

This commit is contained in:
Simon Richter 2017-01-18 02:01:27 +01:00 committed by Wayne Stambaugh
parent 632cce7aa7
commit 78a5f450ce
1 changed files with 135 additions and 27 deletions

View File

@ -1,40 +1,148 @@
# - Find Pixman
# Find the Pixman libraries
# - Try to find the PIXMAN library
# Once done this will define
#
# This module defines the following variables:
# PIXMAN_FOUND - true if PIXMAN_INCLUDE_DIR & PIXMAN_LIBRARY are found
# PIXMAN_LIBRARIES - Set when PIXMAN_LIBRARY is found
# PIXMAN_INCLUDE_DIRS - Set when PIXMAN_INCLUDE_DIR is found
#
# PIXMAN_INCLUDE_DIR - where to find pixman.h, etc.
# PIXMAN_LIBRARY - the Pixman library
# PIXMAN_ROOT_DIR - Set this variable to the root installation of PIXMAN
#
# Read-Only variables:
# PIXMAN_FOUND - system has the PIXMAN library
# PIXMAN_INCLUDE_DIR - the PIXMAN include directory
# PIXMAN_LIBRARIES - The libraries needed to use PIXMAN
# PIXMAN_VERSION - This is set to $major.$minor.$revision (eg. 0.9.8)
#=============================================================================
# Copyright 2013 Marc-Andre Moreau <marcandre.moreau@gmail.com>
# Copyright 2012 Dmitry Baryshnikov <polimax at mail dot ru>
# Copyright 2017 Simon Richter <Simon.Richter at hogyros dot de>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
find_path(PIXMAN_INCLUDE_DIR NAMES pixman.h PATH_SUFFIXES pixman-1)
find_package(PkgConfig)
find_library(PIXMAN_LIBRARY NAMES pixman-1)
if(PKG_CONFIG_FOUND)
pkg_check_modules(_PIXMAN pixman-1)
endif (PKG_CONFIG_FOUND)
find_package_handle_standard_args(pixman-1 DEFAULT_MSG PIXMAN_LIBRARY PIXMAN_INCLUDE_DIR)
SET(_PIXMAN_ROOT_HINTS
$ENV{PIXMAN}
${PIXMAN_ROOT_DIR}
)
SET(_PIXMAN_ROOT_PATHS
$ENV{PIXMAN}/src
/usr
/usr/local
)
SET(_PIXMAN_ROOT_HINTS_AND_PATHS
HINTS ${_PIXMAN_ROOT_HINTS}
PATHS ${_PIXMAN_ROOT_PATHS}
)
if(PIXMAN-1_FOUND)
set(PIXMAN_LIBRARIES ${PIXMAN_LIBRARY})
set(PIXMAN_INCLUDE_DIRS ${PIXMAN_INCLUDE_DIR})
FIND_PATH(PIXMAN_INCLUDE_DIR
NAMES
pixman.h
HINTS
${_PIXMAN_INCLUDEDIR}
${_PIXMAN_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
include
"include/pixman-1"
)
IF(NOT PKGCONFIG_FOUND AND WIN32 AND NOT CYGWIN)
# MINGW should go here too
IF(MSVC)
# Implementation details:
# We are using the libraries located in the VC subdir instead of the parent directory eventhough :
FIND_LIBRARY(PIXMAN
NAMES
pixman-1
${_PIXMAN_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
"lib"
"VC"
"lib/VC"
)
MARK_AS_ADVANCED(PIXMAN)
set( PIXMAN_LIBRARIES ${PIXMAN})
ELSEIF(MINGW)
# same player, for MingW
FIND_LIBRARY(PIXMAN
NAMES
pixman-1
${_PIXMAN_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
"lib"
"lib/MinGW"
)
MARK_AS_ADVANCED(PIXMAN)
set( PIXMAN_LIBRARIES ${PIXMAN})
ELSE(MSVC)
# Not sure what to pick for -say- intel, let's use the toplevel ones and hope someone report issues:
FIND_LIBRARY(PIXMAN
NAMES
pixman-1
HINTS
${_PIXMAN_LIBDIR}
${_PIXMAN_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
lib
)
MARK_AS_ADVANCED(PIXMAN)
set( PIXMAN_LIBRARIES ${PIXMAN} )
ENDIF(MSVC)
ELSE()
FIND_LIBRARY(PIXMAN_LIBRARY
NAMES
pixman-1
HINTS
${_PIXMAN_LIBDIR}
${_PIXMAN_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
"lib"
"local/lib"
)
MARK_AS_ADVANCED(PIXMAN_LIBRARY)
# compat defines
SET(PIXMAN_LIBRARIES ${PIXMAN_LIBRARY})
ENDIF()
#message( STATUS "Pixman_FIND_VERSION=${Pixman_FIND_VERSION}.")
#message( STATUS "PIXMAN_INCLUDE_DIR=${PIXMAN_INCLUDE_DIR}.")
# Fetch version from pixman-version.h if a version was requested by find_package()
if(PIXMAN_INCLUDE_DIR AND Pixman_FIND_VERSION)
file(READ "${PIXMAN_INCLUDE_DIR}/pixman-version.h" _PIXMAN_VERSION_H_CONTENTS)
string(REGEX REPLACE "^(.*\n)?#define[ \t]+PIXMAN_VERSION_MAJOR[ \t]+([0-9]+).*"
"\\2" PIXMAN_VERSION_MAJOR ${_PIXMAN_VERSION_H_CONTENTS})
string(REGEX REPLACE "^(.*\n)?#define[ \t]+PIXMAN_VERSION_MINOR[ \t]+([0-9]+).*"
"\\2" PIXMAN_VERSION_MINOR ${_PIXMAN_VERSION_H_CONTENTS})
string(REGEX REPLACE "^(.*\n)?#define[ \t]+PIXMAN_VERSION_MICRO[ \t]+([0-9]+).*"
"\\2" PIXMAN_VERSION_MICRO ${_PIXMAN_VERSION_H_CONTENTS})
set(PIXMAN_VERSION ${PIXMAN_VERSION_MAJOR}.${PIXMAN_VERSION_MINOR}.${PIXMAN_VERSION_MICRO}
CACHE INTERNAL "The version number for Pixman libraries")
endif()
mark_as_advanced(PIXMAN_INCLUDE_DIR PIXMAN_LIBRARY)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Pixman
REQUIRED_VARS
PIXMAN_LIBRARIES
PIXMAN_INCLUDE_DIR
VERSION_VAR
PIXMAN_VERSION
)
MARK_AS_ADVANCED(PIXMAN_INCLUDE_DIR PIXMAN_LIBRARIES)