--- CMakeModules/FindPixman.cmake | 162 +++++++++++++++++++++++++++++++++++------- 1 file changed, 135 insertions(+), 27 deletions(-)
diff --git a/CMakeModules/FindPixman.cmake b/CMakeModules/FindPixman.cmake index 18e0c399e..128ca8237 100644 --- a/CMakeModules/FindPixman.cmake +++ b/CMakeModules/FindPixman.cmake @@ -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.mor...@gmail.com> -# -# 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 +# Copyright 2012 Dmitry Baryshnikov <polimax at mail dot ru> +# Copyright 2017 Simon Richter <Simon.Richter at hogyros dot de> # -# http://www.apache.org/licenses/LICENSE-2.0 +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. # -# 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_package(PkgConfig) + +if(PKG_CONFIG_FOUND) + pkg_check_modules(_PIXMAN pixman-1) +endif (PKG_CONFIG_FOUND) + +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} + ) + +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" + ) -find_path(PIXMAN_INCLUDE_DIR NAMES pixman.h PATH_SUFFIXES pixman-1) + 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" + ) -find_library(PIXMAN_LIBRARY NAMES pixman-1) + 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 + ) -find_package_handle_standard_args(pixman-1 DEFAULT_MSG PIXMAN_LIBRARY PIXMAN_INCLUDE_DIR) + MARK_AS_ADVANCED(PIXMAN) + set( PIXMAN_LIBRARIES ${PIXMAN} ) + ENDIF(MSVC) +ELSE() -if(PIXMAN-1_FOUND) - set(PIXMAN_LIBRARIES ${PIXMAN_LIBRARY}) - set(PIXMAN_INCLUDE_DIRS ${PIXMAN_INCLUDE_DIR}) + 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) \ No newline at end of file +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)
_______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp