kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #27240
[PATCH 2/2] Copy and adapt FindCairo.cmake for Pixman
---
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.moreau@xxxxxxxxx>
-#
-# 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)
Follow ups
References