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(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
|
# support for ccache
|
||||||
# call CMake with -DUSE_CCACHE=ON to make use of it
|
# call CMake with -DUSE_CCACHE=ON to make use of it
|
||||||
set(USE_CCACHE ON CACHE BOOL "")
|
set(USE_CCACHE ON CACHE BOOL "")
|
||||||
|
|||||||
@ -1,34 +1,97 @@
|
|||||||
# required for PNG imported target
|
#[=======================================================================[.rst:
|
||||||
cmake_minimum_required(VERSION 3.6)
|
FindCImg
|
||||||
|
-------
|
||||||
|
|
||||||
find_package(PkgConfig)
|
Finds the CImg library.
|
||||||
pkg_check_modules(libpng REQUIRED IMPORTED_TARGET libpng)
|
|
||||||
pkg_check_modules(libjpeg REQUIRED IMPORTED_TARGET libjpeg)
|
|
||||||
|
|
||||||
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
|
find_path(CIMG_H_DIR
|
||||||
NAMES CImg.h
|
NAMES CImg.h
|
||||||
HINTS ${CMAKE_INSTALL_PREFIX}
|
HINTS ${CMAKE_INSTALL_PREFIX} ${CIMG_DIR}
|
||||||
PATH_SUFFIXES include include/linux
|
PATH_SUFFIXES include include/linux
|
||||||
)
|
)
|
||||||
|
|
||||||
if(NOT CIMG_H_DIR)
|
if(NOT CIMG_H_DIR)
|
||||||
message(FATAL_ERROR "CImg.h not found")
|
set(CImg_FOUND FALSE)
|
||||||
endif()
|
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 ${libpng_INCLUDE_DIRS})
|
||||||
set(PNG_INCLUDE_DIR ${libjpeg_INCLUDE_DIRS})
|
set(JPEG_INCLUDE_DIR ${libjpeg_INCLUDE_DIRS})
|
||||||
|
|
||||||
if(NOT STATIC_BUILD)
|
if(STATIC_BUILD)
|
||||||
set(PNG_LIBRARY ${libpng_LIBRARIES})
|
|
||||||
set(JPEG_LIBRARIES ${libjpeg_LIBRARIES})
|
|
||||||
else()
|
|
||||||
set(PNG_LIBRARY ${libpng_STATIC_LIBRARIES})
|
set(PNG_LIBRARY ${libpng_STATIC_LIBRARIES})
|
||||||
set(JPEG_LIBRARIES ${libjpeg_STATIC_LIBRARIES})
|
set(JPEG_LIBRARIES ${libjpeg_STATIC_LIBRARIES})
|
||||||
|
else()
|
||||||
|
set(PNG_LIBRARY ${libpng_LIBRARIES})
|
||||||
|
set(JPEG_LIBRARIES ${libjpeg_LIBRARIES})
|
||||||
endif()
|
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)
|
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_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_LINK_LIBRARIES "${CImg_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_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(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)
|
find_package(CImg REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
message(STATUS "Generating excludelist")
|
message(STATUS "Generating excludelist")
|
||||||
execute_process(
|
execute_process(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user