mirror of
https://github.com/audacity/linuxdeploy.git
synced 2025-12-10 03:56:50 -06:00
Add FetchContent fallback for CImg
This commit is contained in:
parent
fb5cd4d32d
commit
d2e9567029
@ -7,8 +7,6 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/Modules/")
|
||||
|
||||
set(USE_SYSTEM_CIMG ON CACHE BOOL "Set to OFF to use CImg library bundled in lib directory")
|
||||
|
||||
# support for ccache
|
||||
# call CMake with -DUSE_CCACHE=ON to make use of it
|
||||
set(USE_CCACHE ON CACHE BOOL "")
|
||||
|
||||
@ -1,34 +1,97 @@
|
||||
# required for PNG imported target
|
||||
cmake_minimum_required(VERSION 3.6)
|
||||
#[=======================================================================[.rst:
|
||||
FindCImg
|
||||
-------
|
||||
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(libpng REQUIRED IMPORTED_TARGET libpng)
|
||||
pkg_check_modules(libjpeg REQUIRED IMPORTED_TARGET libjpeg)
|
||||
Finds the CImg library.
|
||||
|
||||
message(STATUS "Searching for CImg")
|
||||
Imported Targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module provides the following imported targets, if found:
|
||||
|
||||
``CImg``
|
||||
The CImg library
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This will define the following variables:
|
||||
|
||||
``CImg_FOUND``
|
||||
True if the system has the CImg library.
|
||||
``CImg_VERSION``
|
||||
The version of the CImg library which was found.
|
||||
``CImg_INCLUDE_DIRS``
|
||||
Include directories needed to use CImg.
|
||||
``CImg_LIBRARIES``
|
||||
Libraries needed to link to CImg.
|
||||
|
||||
Cache Variables
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
The following cache variables may also be set:
|
||||
|
||||
``CImg_INCLUDE_DIR``
|
||||
The directory containing ``CImg.h``.
|
||||
|
||||
#]=======================================================================]
|
||||
|
||||
# 3.6 required for PNG imported target
|
||||
# 3.9 required for CMAKE_MATCH_<n>
|
||||
cmake_minimum_required(VERSION 3.9)
|
||||
|
||||
find_path(CIMG_H_DIR
|
||||
NAMES CImg.h
|
||||
HINTS ${CMAKE_INSTALL_PREFIX}
|
||||
HINTS ${CMAKE_INSTALL_PREFIX} ${CIMG_DIR}
|
||||
PATH_SUFFIXES include include/linux
|
||||
)
|
||||
|
||||
if(NOT CIMG_H_DIR)
|
||||
message(FATAL_ERROR "CImg.h not found")
|
||||
endif()
|
||||
set(CImg_FOUND FALSE)
|
||||
else()
|
||||
set(CImg_FOUND TRUE)
|
||||
|
||||
find_package(PkgConfig)
|
||||
|
||||
pkg_check_modules(libpng REQUIRED libpng)
|
||||
pkg_check_modules(libjpeg REQUIRED libjpeg)
|
||||
|
||||
set(PNG_INCLUDE_DIR ${libpng_INCLUDE_DIRS})
|
||||
set(PNG_INCLUDE_DIR ${libjpeg_INCLUDE_DIRS})
|
||||
set(JPEG_INCLUDE_DIR ${libjpeg_INCLUDE_DIRS})
|
||||
|
||||
if(NOT STATIC_BUILD)
|
||||
set(PNG_LIBRARY ${libpng_LIBRARIES})
|
||||
set(JPEG_LIBRARIES ${libjpeg_LIBRARIES})
|
||||
else()
|
||||
if(STATIC_BUILD)
|
||||
set(PNG_LIBRARY ${libpng_STATIC_LIBRARIES})
|
||||
set(JPEG_LIBRARIES ${libjpeg_STATIC_LIBRARIES})
|
||||
else()
|
||||
set(PNG_LIBRARY ${libpng_LIBRARIES})
|
||||
set(JPEG_LIBRARIES ${libjpeg_LIBRARIES})
|
||||
endif()
|
||||
|
||||
set(CImg_INCLUDE_DIR ${CIMG_H_DIR} CACHE STRING "")
|
||||
set(CImg_INCLUDE_DIRS ${CImg_INCLUDE_DIR})
|
||||
set(CImg_LIBRARIES "${PNG_LIBRARY};${JPEG_LIBRARIES}")
|
||||
set(CImg_DEFINITIONS "cimg_display=0;cimg_use_png=1;cimg_use_jpeg=1")
|
||||
|
||||
file(READ "${CIMG_H_DIR}/CImg.h" header)
|
||||
string(REGEX MATCH "#define cimg_version ([0-9a-zA-Z\.]+)" _ "${header}")
|
||||
set(CImg_VERSION "${CMAKE_MATCH_1}")
|
||||
|
||||
# CImg_VERSION
|
||||
|
||||
if(NOT TARGET CImg)
|
||||
add_library(CImg INTERFACE)
|
||||
set_property(TARGET CImg PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CIMG_H_DIR};${PNG_INCLUDE_DIR};${JPEG_INCLUDE_DIR}")
|
||||
set_property(TARGET CImg PROPERTY INTERFACE_LINK_LIBRARIES "${PNG_LIBRARY};${JPEG_LIBRARIES}")
|
||||
set_property(TARGET CImg PROPERTY INTERFACE_COMPILE_DEFINITIONS "cimg_display=0;cimg_use_png=1;cimg_use_jpeg=1")
|
||||
set_property(TARGET CImg PROPERTY INTERFACE_LINK_LIBRARIES "${CImg_LIBRARIES}")
|
||||
set_property(TARGET CImg PROPERTY INTERFACE_COMPILE_DEFINITIONS "${CImg_DEFINITIONS}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(CImg
|
||||
FOUND_VAR CImg_FOUND
|
||||
REQUIRED_VARS
|
||||
CImg_INCLUDE_DIRS
|
||||
CImg_LIBRARIES
|
||||
CImg_DEFINITIONS
|
||||
VERSION_VAR CImg_VERSION
|
||||
)
|
||||
|
||||
@ -5,7 +5,28 @@ file(GLOB HEADERS ${PROJECT_SOURCE_DIR}/include/linuxdeploy/core/*.h)
|
||||
|
||||
find_package(Threads)
|
||||
|
||||
find_package(CImg)
|
||||
|
||||
if(NOT CImg_FOUND)
|
||||
message(STATUS "CImg not found, fetching from GitHub")
|
||||
|
||||
cmake_minimum_required(VERSION 3.14)
|
||||
|
||||
FetchContent_Declare(
|
||||
CImg
|
||||
GIT_REPOSITORY https://github.com/dtschump/CImg
|
||||
GIT_TAG v.2.9.9
|
||||
)
|
||||
|
||||
FetchContent_MakeAvailable(CImg)
|
||||
|
||||
# unfortunately there is no easy way to fetch the source dir with MakeAvailable
|
||||
# FETCHCONTENT_SOURCE_DIR_CIMG is not set
|
||||
# we can apparently predict the path from the base dir, though
|
||||
# we'll have to see how reliable this is going to be
|
||||
set(CIMG_DIR "${FETCHCONTENT_BASE_DIR}/cimg-src")
|
||||
find_package(CImg REQUIRED)
|
||||
endif()
|
||||
|
||||
message(STATUS "Generating excludelist")
|
||||
execute_process(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user