From 1527f0b6dbfa8695ca3d17ca51f711add12c6664 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Mon, 30 May 2022 10:02:05 +0200 Subject: [PATCH] Use pkg-config for pixman This is the standard method of finding it on Unix systems, so make sure we use it. Still keep a fallback, though, for other systems, e.g. Windows. --- cmake/Modules/FindPixman.cmake | 47 ++++++---------------------------- cmake/StaticBuild.cmake | 2 +- common/rfb/CMakeLists.txt | 5 ++-- 3 files changed, 12 insertions(+), 42 deletions(-) diff --git a/cmake/Modules/FindPixman.cmake b/cmake/Modules/FindPixman.cmake index 7bfca77b..04fe481f 100644 --- a/cmake/Modules/FindPixman.cmake +++ b/cmake/Modules/FindPixman.cmake @@ -1,40 +1,9 @@ -# - Find Pixman -# Find the Pixman libraries -# -# 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 -# - -#============================================================================= -# Copyright 2013 Marc-Andre Moreau -# -# 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 -# -# 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. -#============================================================================= - -find_path(PIXMAN_INCLUDE_DIR NAMES pixman.h PATH_SUFFIXES pixman-1) - -find_library(PIXMAN_LIBRARY NAMES pixman-1) - -find_package_handle_standard_args(pixman-1 DEFAULT_MSG PIXMAN_LIBRARY PIXMAN_INCLUDE_DIR) - -if(PIXMAN-1_FOUND) - set(PIXMAN_LIBRARIES ${PIXMAN_LIBRARY}) - set(PIXMAN_INCLUDE_DIRS ${PIXMAN_INCLUDE_DIR}) +find_package(PkgConfig) + +if (PKG_CONFIG_FOUND) + pkg_check_modules(PIXMAN pixman-1) +else() + find_path(PIXMAN_INCLUDE_DIRS NAMES pixman.h PATH_SUFFIXES pixman-1) + find_library(PIXMAN_LIBRARIES NAMES pixman-1) + find_package_handle_standard_args(PIXMAN DEFAULT_MSG PIXMAN_LIBRARIES PIXMAN_INCLUDE_DIRS) endif() - -mark_as_advanced(PIXMAN_INCLUDE_DIR PIXMAN_LIBRARY) diff --git a/cmake/StaticBuild.cmake b/cmake/StaticBuild.cmake index b96d800b..7ce219de 100644 --- a/cmake/StaticBuild.cmake +++ b/cmake/StaticBuild.cmake @@ -20,7 +20,7 @@ if(BUILD_STATIC) set(JPEG_LIBRARIES "-Wl,-Bstatic -ljpeg -Wl,-Bdynamic") set(ZLIB_LIBRARIES "-Wl,-Bstatic -lz -Wl,-Bdynamic") - set(PIXMAN_LIBRARY "-Wl,-Bstatic -lpixman-1 -Wl,-Bdynamic") + set(PIXMAN_LIBRARIES "-Wl,-Bstatic -lpixman-1 -Wl,-Bdynamic") # gettext is included in libc on many unix systems if(NOT LIBC_HAS_DGETTEXT) diff --git a/common/rfb/CMakeLists.txt b/common/rfb/CMakeLists.txt index 07728453..1b43ed11 100644 --- a/common/rfb/CMakeLists.txt +++ b/common/rfb/CMakeLists.txt @@ -1,4 +1,4 @@ -include_directories(${CMAKE_SOURCE_DIR}/common ${JPEG_INCLUDE_DIR} ${PIXMAN_INCLUDE_DIR}) +include_directories(${CMAKE_SOURCE_DIR}/common ${JPEG_INCLUDE_DIR} ${PIXMAN_INCLUDE_DIRS}) add_library(rfb STATIC Blacklist.cxx @@ -65,7 +65,8 @@ add_library(rfb STATIC util.cxx) target_link_libraries(rfb os rdr) -target_link_libraries(rfb ${JPEG_LIBRARIES} ${PIXMAN_LIBRARY}) +target_link_libraries(rfb ${JPEG_LIBRARIES} ${PIXMAN_LIBRARIES}) +target_link_directories(rfb PUBLIC ${PIXMAN_LIBRARY_DIRS}) if(ENABLE_H264 AND NOT H264_LIBS STREQUAL "NONE") target_sources(rfb PRIVATE H264Decoder.cxx H264DecoderContext.cxx) -- 2.39.5