Warning, /graphics/krita/3rdparty/ext_libraw/0001-LibRaw-cmake.patch is written in an unsupported language. File is not indexed.
0001 From ca53730ea40e56f58bf7ec77fcc6247ab6e2efa3 Mon Sep 17 00:00:00 2001 0002 From: "L. E. Segovia" <amy@amyspark.me> 0003 Date: Sun, 21 Feb 2021 00:13:50 +0000 0004 Subject: [PATCH 1/2] LibRaw-cmake 0005 0006 --- 0007 CMakeLists.txt | 718 +++++++++++++++++++ 0008 INSTALL.CMAKE | 62 ++ 0009 LICENSE | 22 + 0010 cmake/data/libraw.lsm.cmake | 13 + 0011 cmake/data/libraw.pc.cmake | 12 + 0012 cmake/data/libraw_config.h.cmake | 50 ++ 0013 cmake/data/libraw_r.pc.cmake | 12 + 0014 cmake/modules/FindLCMS.cmake | 60 ++ 0015 cmake/modules/FindLCMS2.cmake | 72 ++ 0016 cmake/modules/FindLibRaw.cmake | 96 +++ 0017 cmake/modules/MacroBoolTo01.cmake | 20 + 0018 cmake/modules/MacroLogFeature.cmake | 159 ++++ 0019 cmake/modules/MacroOptionalFindPackage.cmake | 48 ++ 0020 cmake/modules/Uninstall.cmake | 22 + 0021 14 files changed, 1366 insertions(+) 0022 create mode 100644 CMakeLists.txt 0023 create mode 100644 INSTALL.CMAKE 0024 create mode 100644 LICENSE 0025 create mode 100644 cmake/data/libraw.lsm.cmake 0026 create mode 100644 cmake/data/libraw.pc.cmake 0027 create mode 100644 cmake/data/libraw_config.h.cmake 0028 create mode 100644 cmake/data/libraw_r.pc.cmake 0029 create mode 100644 cmake/modules/FindLCMS.cmake 0030 create mode 100644 cmake/modules/FindLCMS2.cmake 0031 create mode 100644 cmake/modules/FindLibRaw.cmake 0032 create mode 100644 cmake/modules/MacroBoolTo01.cmake 0033 create mode 100644 cmake/modules/MacroLogFeature.cmake 0034 create mode 100644 cmake/modules/MacroOptionalFindPackage.cmake 0035 create mode 100644 cmake/modules/Uninstall.cmake 0036 0037 diff --git a/CMakeLists.txt b/CMakeLists.txt 0038 new file mode 100644 0039 index 0000000..948a0a0 0040 --- /dev/null 0041 +++ b/CMakeLists.txt 0042 @@ -0,0 +1,718 @@ 0043 +# =========================================================== 0044 +# 0045 +# This file is a part of Libraw project 0046 +# <a href="http://www.libraw.org">http://www.libraw.org</a> 0047 +# 0048 +# @date 2013-09-07 0049 +# @brief Library for reading and processing of RAW images 0050 +# 0051 +# @author Copyright (C) 2013 by Gilles Caulier 0052 +# <a href="mailto:caulier dot gilles at gmail dot com">caulier dot gilles at gmail dot com</a> 0053 +# 0054 +# This program is free software; you can redistribute it 0055 +# and/or modify it under the terms of the GNU General 0056 +# Public License as published by the Free Software Foundation; 0057 +# either version 2, or (at your option) 0058 +# any later version. 0059 +# 0060 +# This program is distributed in the hope that it will be useful, 0061 +# but WITHOUT ANY WARRANTY; without even the implied warranty of 0062 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0063 +# GNU General Public License for more details. 0064 +# 0065 +# ============================================================ 0066 + 0067 +CMAKE_MINIMUM_REQUIRED(VERSION 3.12..16) 0068 + 0069 + 0070 +# Determine if libraw is built as a subproject (using add_subdirectory) 0071 +# or if it is the master project. 0072 +set(MASTER_PROJECT OFF) 0073 +if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) 0074 + set(MASTER_PROJECT ON) 0075 + message(STATUS "CMake version: ${CMAKE_VERSION}") 0076 +endif () 0077 + 0078 +set(LIBRAW_PATH ${CMAKE_CURRENT_SOURCE_DIR} CACHE STRING "Relative path to libraw directory (default=CMAKE_CURRENT_SOURCE_DIR)") 0079 +if(NOT EXISTS "${LIBRAW_PATH}") 0080 + message(STATUS "LIBRAW_PATH=${LIBRAW_PATH}") 0081 + message(FATAL_ERROR "LIBRAW_PATH does not contain a valid path to the libraw home") 0082 +endif() 0083 + 0084 +file(TO_CMAKE_PATH "${LIBRAW_PATH}" LIBRAW_PATH) 0085 + 0086 +# ================================================================================================== 0087 +# Library version info extraction 0088 + 0089 +FILE(READ ${LIBRAW_PATH}/libraw/libraw_version.h _libraw_version_content) 0090 + 0091 +# API version strings 0092 +STRING(REGEX MATCH "#define LIBRAW_MAJOR_VERSION[ \t]*([0-9]*)\n" _version_major_match ${_libraw_version_content}) 0093 +SET(RAW_LIB_MAJOR_VERSION "${CMAKE_MATCH_1}") 0094 + 0095 +STRING(REGEX MATCH "#define LIBRAW_MINOR_VERSION[ \t]*([0-9]*)\n" _version_minor_match ${_libraw_version_content}) 0096 +SET(RAW_LIB_MINOR_VERSION "${CMAKE_MATCH_1}") 0097 + 0098 +STRING(REGEX MATCH "#define LIBRAW_PATCH_VERSION[ \t]*([0-9]*)\n" _version_patch_match ${_libraw_version_content}) 0099 +SET(RAW_LIB_PATCH_VERSION "${CMAKE_MATCH_1}") 0100 + 0101 +# ABI version strings 0102 + 0103 +STRING(REGEX MATCH "#define LIBRAW_SHLIB_CURRENT[ \t]*([0-9]*)\n" _version_socur_match ${_libraw_version_content}) 0104 +SET(RAW_LIB_SO_CUR_VERSION "${CMAKE_MATCH_1}") 0105 + 0106 +STRING(REGEX MATCH "#define LIBRAW_SHLIB_REVISION[ \t]*([0-9]*)\n" _version_sorev_match ${_libraw_version_content}) 0107 +SET(RAW_LIB_SO_REV_VERSION "${CMAKE_MATCH_1}") 0108 + 0109 +STRING(REGEX MATCH "#define LIBRAW_SHLIB_AGE[ \t]*([0-9]*)\n" _version_soage_match ${_libraw_version_content}) 0110 +SET(RAW_LIB_SO_AGE_VERSION "${CMAKE_MATCH_1}") 0111 + 0112 +# Set env. variables accordinly. 0113 +SET(RAW_LIB_VERSION_STRING "${RAW_LIB_MAJOR_VERSION}.${RAW_LIB_MINOR_VERSION}.${RAW_LIB_PATCH_VERSION}") 0114 +SET(RAW_LIB_VERSION_ID "0x${RAW_LIB_MAJOR_VERSION}${RAW_LIB_MINOR_VERSION}${RAW_LIB_PATCH_VERSION}") 0115 +SET(RAW_LIB_SO_VERSION_STRING "${RAW_LIB_SO_CUR_VERSION}.${RAW_LIB_SO_REV_VERSION}.${RAW_LIB_SO_AGE_VERSION}") 0116 + 0117 +MESSAGE(STATUS "LibRaw string version: ${RAW_LIB_VERSION_STRING}") 0118 +MESSAGE(STATUS "LibRaw ID version: ${RAW_LIB_VERSION_ID}") 0119 +MESSAGE(STATUS "LibRaw SO version: ${RAW_LIB_SO_VERSION_STRING}") 0120 + 0121 +project(libraw VERSION ${RAW_LIB_VERSION_STRING} LANGUAGES CXX) 0122 + 0123 +# ================================================================================================== 0124 +# Project Options 0125 +OPTION(BUILD_SHARED_LIBS "Build library as shared library (default=ON)" ON) 0126 +OPTION(ENABLE_OPENMP "Build library with OpenMP support (default=ON)" ON) 0127 +OPTION(ENABLE_LCMS "Build library with LCMS support (default=ON)" ON) 0128 +OPTION(ENABLE_JASPER "Build library with libjasper support (default=ON)" ON) 0129 +OPTION(ENABLE_EXAMPLES "Build library with sample command-line programs (default=ON)" ${MASTER_PROJECT}) 0130 +OPTION(ENABLE_RAWSPEED "Build library with extra RawSpeed codec support (default=OFF)" OFF) 0131 +OPTION(ENABLE_DCRAW_DEBUG "Build library with debug message from dcraw (default=OFF)" OFF) 0132 +OPTION(ENABLE_X3FTOOLS "Build library with Foveon X3F support (default=OFF)" OFF) 0133 +OPTION(ENABLE_6BY9RPI "Build library with Raspberry Pi RAW support (default=OFF)" OFF) 0134 +option(LIBRAW_UNINSTALL_TARGET "Add a custom target to ease removal of installed targets" ${MASTER_PROJECT}) 0135 +option(LIBRAW_INSTALL "Generate the install target." ${MASTER_PROJECT}) 0136 + 0137 +SET(RAWSPEED_RPATH "RawSpeed" CACHE STRING 0138 + "Relative path to extra RawSpeed codec (default=RawSpeed)") 0139 + 0140 +SET(RAWSPEED_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${RAWSPEED_RPATH}") 0141 + 0142 +SET(INSTALL_CMAKE_MODULE_PATH "share/libraw/cmake" CACHE STRING 0143 + "Path to install cmake module (default=share/libraw/cmake)") 0144 + 0145 +# ================================================================================================== 0146 +# General definitions rules 0147 + 0148 +SET(LIB_SUFFIX "" CACHE STRING "Define suffix of lib directory name (32/64)" ) 0149 + 0150 +IF(WIN32 AND NOT DEFINED CMAKE_DEBUG_POSTFIX) 0151 + SET(CMAKE_DEBUG_POSTFIX "d") 0152 +ENDIF() 0153 + 0154 +# To prevent warnings from M$ compiler 0155 +IF(WIN32 AND MSVC) 0156 + ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) 0157 + ADD_DEFINITIONS(-D_ATL_SECURE_NO_WARNINGS) 0158 + ADD_DEFINITIONS(-D_AFX_SECURE_NO_WARNINGS) 0159 +ENDIF() 0160 + 0161 +# Under Windows, use specific flag to compile. 0162 +IF(WIN32) 0163 + ADD_DEFINITIONS(-DDJGPP) 0164 +ENDIF() 0165 + 0166 +# -- Check dependencies -------------------------------------------------------------------------------- 0167 + 0168 +SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH} ) 0169 + 0170 +INCLUDE(MacroBoolTo01) 0171 +INCLUDE(MacroLogFeature) 0172 +INCLUDE(MacroOptionalFindPackage) 0173 + 0174 +# Math library check 0175 + 0176 +IF(NOT WIN32) 0177 + FIND_LIBRARY(MATH_LIBRARY m) 0178 +ENDIF() 0179 + 0180 +# LCMS version 1 and 2 library check 0181 + 0182 +SET(LCMS_SUPPORT_CAN_BE_COMPILED false) 0183 + 0184 +IF (ENABLE_LCMS) 0185 + MESSAGE(STATUS "Check for LCMS2 availability...") 0186 + FIND_PACKAGE(LCMS2) 0187 + IF (LCMS2_FOUND AND (LCMS2_VERSION VERSION_EQUAL 2.1 OR LCMS2_VERSION VERSION_GREATER 2.1)) 0188 + MESSAGE(STATUS "Found LCMS2 : ${LCMS2_LIBRARIES} ${LCMS2_INCLUDE_DIR}") 0189 + INCLUDE_DIRECTORIES(${LCMS2_INCLUDE_DIR}) 0190 + MACRO_LOG_FEATURE(LCMS2_FOUND "LCMS2" "A small-footprint color management engine" "http://www.littlecms.com" FALSE "" "Needed by libkdcraw") 0191 + # Flag to compile Little CMS version 2 with LibRaw 0192 + ADD_DEFINITIONS(-DUSE_LCMS2) 0193 + SET(LCMS_SUPPORT_CAN_BE_COMPILED true) 0194 + ELSE () 0195 + MESSAGE(STATUS "Check for LCMS availability instead LCMS2...") 0196 + FIND_PACKAGE(LCMS) 0197 + IF (LCMS_FOUND) 0198 + MESSAGE(STATUS "Found LCMS1: ${LCMS_LIBRARIES} ${LCMS_INCLUDE_DIR}") 0199 + INCLUDE_DIRECTORIES(${LCMS_INCLUDE_DIR}) 0200 + MACRO_LOG_FEATURE(LCMS_FOUND "LCMS1" "A small-footprint color management engine" "http://www.littlecms.com" TRUE "" "Needed by libkdcraw") 0201 + # Flag to compile Little CMS version 1 with LibRaw 0202 + ADD_DEFINITIONS(-DUSE_LCMS) 0203 + # For compatibility 0204 + SET(LCMS2_LIBRARIES ${LCMS_LIBRARIES}) 0205 + SET(LCMS_SUPPORT_CAN_BE_COMPILED true) 0206 + ENDIF () 0207 + ENDIF () 0208 +ENDIF() 0209 + 0210 +# For registration to libraw_config.h 0211 +MACRO_BOOL_TO_01(LCMS_SUPPORT_CAN_BE_COMPILED LIBRAW_USE_LCMS) 0212 + 0213 +# zlib library check 0214 + 0215 +FIND_PACKAGE(ZLIB) 0216 +FIND_PACKAGE(JPEG) 0217 + 0218 +# Flag to use zlib with LibRaw DNG deflate codec 0219 +IF(ZLIB_FOUND) 0220 + ADD_DEFINITIONS(-DUSE_ZLIB) 0221 +ENDIF() 0222 + 0223 +# For registration to libraw_config.h 0224 +MACRO_BOOL_TO_01(ZLIB_FOUND LIBRAW_USE_DNGDEFLATECODEC) 0225 + 0226 +# JPEG library check 0227 +find_package(JPEG) 0228 +IF(JPEG_FOUND) 0229 + if (${JPEG_VERSION} LESS 80) 0230 + set(JPEG8_FOUND FALSE) 0231 + else() 0232 + set(JPEG8_FOUND TRUE) 0233 + endif() 0234 +ENDIF() 0235 + 0236 +MACRO_LOG_FEATURE(JPEG8_FOUND "libjpeg" "JPEG image format support" "http://www.ijg.org" FALSE "80" "needed for the LibRaw DNG lossy codec") 0237 + 0238 +# Flag to use libjpeg with LibRaw DNG lossy codec 0239 +IF(JPEG8_FOUND) 0240 + ADD_DEFINITIONS(-DUSE_JPEG) 0241 + ADD_DEFINITIONS(-DUSE_JPEG8) 0242 +ENDIF() 0243 + 0244 +# For registration to libraw_config.h 0245 +MACRO_BOOL_TO_01(JPEG8_FOUND LIBRAW_USE_DNGLOSSYCODEC) 0246 + 0247 +IF(ENABLE_OPENMP) 0248 + find_package(OpenMP REQUIRED) 0249 +ENDIF(ENABLE_OPENMP) 0250 + 0251 +# For registration to libraw_config.h 0252 +MACRO_BOOL_TO_01(OpenMP_FOUND LIBRAW_USE_OPENMP) 0253 + 0254 +# Jasper library check 0255 +SET(JASPER_FOUND false) 0256 +IF(ENABLE_JASPER) 0257 + FIND_PACKAGE(Jasper) 0258 + 0259 + # Flag to use libjasper with LibRaw RedCine codec 0260 + IF(JASPER_FOUND) 0261 + ADD_DEFINITIONS(-DUSE_JASPER) 0262 + INCLUDE_DIRECTORIES(${JASPER_INCLUDE_DIR}) 0263 + ENDIF() 0264 +ENDIF() 0265 + 0266 +# For registration to libraw_config.h 0267 +MACRO_BOOL_TO_01(JASPER_FOUND LIBRAW_USE_REDCINECODEC) 0268 + 0269 +# For RawSpeed Codec Support 0270 + 0271 +SET(RAWSPEED_FOUND false) 0272 +SET(RAWSPEED_SUPPORT_CAN_BE_COMPILED false) 0273 + 0274 +IF(ENABLE_RAWSPEED) 0275 + 0276 + FIND_PACKAGE(LibXml2) 0277 + FIND_PACKAGE(Threads REQUIRED) 0278 + 0279 + MESSAGE(STATUS "RawSpeed codec path: ${RAWSPEED_PATH}") 0280 + 0281 + IF(EXISTS "${RAWSPEED_PATH}/Common.cpp") 0282 + SET(RAWSPEED_FOUND true) 0283 + ELSE() 0284 + MESSAGE(STATUS "RawSpeed source code not found. Please checkout source code from RawStudio project website.") 0285 + ENDIF() 0286 + 0287 + IF(ENABLE_RAWSPEED AND RAWSPEED_FOUND AND JPEG8_FOUND AND LIBXML2_FOUND AND PTHREADS_FOUND) 0288 + 0289 + SET(RAWSPEED_SUPPORT_CAN_BE_COMPILED true) 0290 + 0291 + ELSE() 0292 + IF (NOT JPEG8_FOUND) 0293 + MESSAGE(STATUS "LibJPEG dependency not resolved. LibRaw cannot be compiled with RawSpeed codec") 0294 + ENDIF() 0295 + 0296 + IF (NOT LIBXML2_FOUND) 0297 + MESSAGE(STATUS "LibXML2 dependency not resolved. LibRaw cannot be compiled with RawSpeed codec") 0298 + ENDIF() 0299 + 0300 + IF (NOT PTHREADS_FOUND) 0301 + MESSAGE(STATUS "Pthreads dependency not resolved. LibRaw cannot be compiled with RawSpeed codec") 0302 + ENDIF() 0303 + 0304 + ENDIF() 0305 +ENDIF() 0306 + 0307 +# For registration to libraw_config.h 0308 +MACRO_BOOL_TO_01(RAWSPEED_SUPPORT_CAN_BE_COMPILED LIBRAW_USE_RAWSPEED) 0309 + 0310 +# -- Compilation rules for RawSpeed library ------------------------------------------------------------- 0311 + 0312 +IF(RAWSPEED_SUPPORT_CAN_BE_COMPILED) 0313 + 0314 + INCLUDE_DIRECTORIES(${RAWSPEED_PATH}) 0315 + 0316 + INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR} ${PTHREADS_INCLUDE_DIR}) 0317 + 0318 + # Flag to include RawSpeed codec with Libraw 0319 + ADD_DEFINITIONS(-DUSE_RAWSPEED) 0320 + 0321 + ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} ${PTHREADS_DEFINITIONS}) 0322 + 0323 + SET(librawspeed_LIB_SRCS ${RAWSPEED_PATH}/ArwDecoder.cpp 0324 + ${RAWSPEED_PATH}/BitPumpJPEG.cpp 0325 + ${RAWSPEED_PATH}/BitPumpMSB.cpp 0326 + ${RAWSPEED_PATH}/BitPumpMSB32.cpp 0327 + ${RAWSPEED_PATH}/BitPumpPlain.cpp 0328 + ${RAWSPEED_PATH}/BlackArea.cpp 0329 + ${RAWSPEED_PATH}/ByteStream.cpp 0330 + ${RAWSPEED_PATH}/ByteStreamSwap.cpp 0331 + ${RAWSPEED_PATH}/Camera.cpp 0332 + ${RAWSPEED_PATH}/CameraMetaData.cpp 0333 + ${RAWSPEED_PATH}/CameraMetadataException.cpp 0334 + ${RAWSPEED_PATH}/CameraSensorInfo.cpp 0335 + ${RAWSPEED_PATH}/ColorFilterArray.cpp 0336 + ${RAWSPEED_PATH}/Common.cpp 0337 + ${RAWSPEED_PATH}/Cr2Decoder.cpp 0338 + ${RAWSPEED_PATH}/DngDecoder.cpp 0339 + ${RAWSPEED_PATH}/DngDecoderSlices.cpp 0340 + ${RAWSPEED_PATH}/DngOpcodes.cpp 0341 + ${RAWSPEED_PATH}/FileIOException.cpp 0342 + ${RAWSPEED_PATH}/FileMap.cpp 0343 + ${RAWSPEED_PATH}/IOException.cpp 0344 + ${RAWSPEED_PATH}/LJpegDecompressor.cpp 0345 + ${RAWSPEED_PATH}/LJpegPlain.cpp 0346 + ${RAWSPEED_PATH}/NefDecoder.cpp 0347 + ${RAWSPEED_PATH}/NikonDecompressor.cpp 0348 + ${RAWSPEED_PATH}/OrfDecoder.cpp 0349 + ${RAWSPEED_PATH}/PefDecoder.cpp 0350 + ${RAWSPEED_PATH}/PentaxDecompressor.cpp 0351 + ${RAWSPEED_PATH}/RawDecoder.cpp 0352 + ${RAWSPEED_PATH}/RawDecoderException.cpp 0353 + ${RAWSPEED_PATH}/RawImage.cpp 0354 + ${RAWSPEED_PATH}/RawImageDataFloat.cpp 0355 + ${RAWSPEED_PATH}/RawImageDataU16.cpp 0356 + ${RAWSPEED_PATH}/RawParser.cpp 0357 + ${RAWSPEED_PATH}/Rw2Decoder.cpp 0358 + ${RAWSPEED_PATH}/SrwDecoder.cpp 0359 + ${RAWSPEED_PATH}/TiffEntry.cpp 0360 + ${RAWSPEED_PATH}/TiffEntryBE.cpp 0361 + ${RAWSPEED_PATH}/TiffIFD.cpp 0362 + ${RAWSPEED_PATH}/TiffIFDBE.cpp 0363 + ${RAWSPEED_PATH}/TiffParser.cpp 0364 + ${RAWSPEED_PATH}/TiffParserException.cpp 0365 + ${RAWSPEED_PATH}/TiffParserHeaderless.cpp 0366 + ${RAWSPEED_PATH}/TiffParserOlympus.cpp 0367 + ) 0368 + 0369 +ENDIF() 0370 + 0371 +# -- Common LibRaw library compilation rules ------------------------------------------------------------------ 0372 + 0373 +# Flag to add debug print on the console 0374 +IF(ENABLE_DCRAW_DEBUG) 0375 + ADD_DEFINITIONS(-DDCRAW_VERBOSE) 0376 +ENDIF() 0377 + 0378 +# For registration to libraw_config.h 0379 +MACRO_BOOL_TO_01(ENABLE_DCRAW_DEBUG LIBRAW_USE_DCRAW_DEBUG) 0380 + 0381 +# Flag to add Foveon X3F support 0382 +IF(ENABLE_X3FTOOLS) 0383 + ADD_DEFINITIONS(-DUSE_X3FTOOLS) 0384 +ENDIF() 0385 + 0386 +# For registration to libraw_config.h 0387 +MACRO_BOOL_TO_01(ENABLE_X3FTOOLS LIBRAW_USE_X3FTOOLS) 0388 + 0389 +# Flag to add Raspberry Pi RAW support 0390 +IF(ENABLE_6BY9RPI) 0391 + ADD_DEFINITIONS(-DUSE_6BY9RPI) 0392 +ENDIF() 0393 + 0394 +# For registration to libraw_config.h 0395 +MACRO_BOOL_TO_01(ENABLE_6BY9RPI LIBRAW_USE_6BY9RPI) 0396 + 0397 +# Flag to export library symbols 0398 +IF (WIN32) 0399 + ADD_DEFINITIONS(-DLIBRAW_BUILDLIB) 0400 +ENDIF() 0401 + 0402 +# Create a config header for client application. 0403 +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/data/libraw_config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/libraw_config.h) 0404 + 0405 +# Put the include dirs which are in the source or build tree 0406 +# before all other include dirs, so the headers in the sources 0407 +# are preferred over the already installed ones 0408 +SET(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON) 0409 + 0410 +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/ 0411 + ${LIBRAW_PATH}/ 0412 + ) 0413 + 0414 +# -- Log messages about configuration ------------------------------------------------------------------ 0415 + 0416 +MESSAGE(STATUS "") 0417 +MESSAGE(STATUS "----------------------------------------------------------------------------------") 0418 +MESSAGE(STATUS " Libraw ${RAW_LIB_VERSION_STRING} configuration <http://www.libraw.org>") 0419 +MESSAGE(STATUS "") 0420 + 0421 +IF(OpenMP_FOUND) 0422 + MESSAGE(STATUS " Libraw will be compiled with OpenMP support .................. YES") 0423 +ELSE() 0424 + MESSAGE(STATUS " Libraw will be compiled with OpenMP support .................. NO") 0425 +ENDIF() 0426 + 0427 +IF(LCMS_SUPPORT_CAN_BE_COMPILED) 0428 + MESSAGE(STATUS " Libraw will be compiled with LCMS support .................... YES") 0429 +ELSE() 0430 + MESSAGE(STATUS " Libraw will be compiled with LCMS support .................... NO") 0431 +ENDIF() 0432 + 0433 +IF(ENABLE_EXAMPLES) 0434 + MESSAGE(STATUS " Libraw will be compiled with example command-line programs ... YES") 0435 +ELSE() 0436 + MESSAGE(STATUS " Libraw will be compiled with example command-line programs ... NO") 0437 +ENDIF() 0438 + 0439 +IF(JASPER_FOUND) 0440 + MESSAGE(STATUS " Libraw will be compiled with RedCine codec support ........... YES") 0441 +ELSE() 0442 + MESSAGE(STATUS " Libraw will be compiled with RedCine codec support ........... NO") 0443 +ENDIF() 0444 + 0445 +IF(ZLIB_FOUND) 0446 + MESSAGE(STATUS " Libraw will be compiled with DNG deflate codec support ....... YES") 0447 +ELSE() 0448 + MESSAGE(STATUS " Libraw will be compiled with DNG deflate codec support ....... NO") 0449 +ENDIF() 0450 + 0451 +IF(JPEG8_FOUND) 0452 + MESSAGE(STATUS " Libraw will be compiled with DNG lossy codec support ......... YES") 0453 +ELSE() 0454 + MESSAGE(STATUS " Libraw will be compiled with DNG lossy codec support ......... NO") 0455 +ENDIF() 0456 + 0457 +IF(RAWSPEED_SUPPORT_CAN_BE_COMPILED) 0458 + MESSAGE(STATUS " Libraw will be compiled with RawSpeed support ................ YES") 0459 +ELSE() 0460 + MESSAGE(STATUS " Libraw will be compiled with RawSpeed support ................ NO") 0461 +ENDIF() 0462 + 0463 +IF(ENABLE_DCRAW_DEBUG) 0464 + MESSAGE(STATUS " Libraw will be compiled with debug message from dcraw ........ YES") 0465 +ELSE() 0466 + MESSAGE(STATUS " Libraw will be compiled with debug message from dcraw ........ NO") 0467 +ENDIF() 0468 + 0469 +IF(ENABLE_X3FTOOLS) 0470 + MESSAGE(STATUS " Libraw will be compiled with Foveon X3F support .............. YES") 0471 +ELSE() 0472 + MESSAGE(STATUS " Libraw will be compiled with Foveon X3F support .............. NO") 0473 +ENDIF() 0474 + 0475 +IF(ENABLE_6BY9RPI) 0476 + MESSAGE(STATUS " Libraw will be compiled with Raspberry Pi RAW support ........ YES") 0477 +ELSE() 0478 + MESSAGE(STATUS " Libraw will be compiled with Raspberry Pi RAW support ........ NO") 0479 +ENDIF() 0480 + 0481 +IF(BUILD_SHARED_LIBS) 0482 + MESSAGE(STATUS " Libraw will be compiled as a shared library") 0483 +ELSE() 0484 + MESSAGE(STATUS " Libraw will be compiled as a static library") 0485 +ENDIF() 0486 + 0487 +MESSAGE(STATUS "----------------------------------------------------------------------------------") 0488 +MESSAGE(STATUS "") 0489 + 0490 +# -- Dedicated libraw target which does not support multi-threading --------------------------------------- 0491 + 0492 +IF(RAW_LIB_VERSION_STRING VERSION_LESS 0.21) 0493 + SET(libraw_LIB_SRCS ${LIBRAW_PATH}/internal/dcraw_common.cpp 0494 + ${LIBRAW_PATH}/internal/dcraw_fileio.cpp 0495 + ${LIBRAW_PATH}/internal/demosaic_packs.cpp 0496 + ${LIBRAW_PATH}/src/libraw_cxx.cpp 0497 + ${LIBRAW_PATH}/src/libraw_c_api.cpp 0498 + ${LIBRAW_PATH}/src/libraw_datastream.cpp 0499 + ) 0500 +ELSE() 0501 + FILE(GLOB_RECURSE libraw_LIB_SRCS CONFIGURE_DEPENDS "${LIBRAW_PATH}/src/*.cpp") 0502 + 0503 + # Exclude placeholder (stub) implementations 0504 + FILE(GLOB_RECURSE exclude_libraw_LIB_SRCS CONFIGURE_DEPENDS "${LIBRAW_PATH}/src/*_ph.cpp") 0505 + LIST(REMOVE_ITEM libraw_LIB_SRCS ${exclude_libraw_LIB_SRCS}) 0506 +ENDIF() 0507 + 0508 +IF(RAWSPEED_SUPPORT_CAN_BE_COMPILED) 0509 + SET(libraw_LIB_SRCS ${libraw_LIB_SRCS} ${librawspeed_LIB_SRCS}) 0510 +ENDIF() 0511 + 0512 + 0513 +add_library(raw ${libraw_LIB_SRCS}) 0514 +add_library(libraw::libraw ALIAS raw) 0515 +target_compile_definitions(raw PRIVATE LIBRAW_NOTHREADS) 0516 + 0517 +# Disable compilation warnings from LibRaw. Just to be clear on the console. 0518 +# Use O4 GCC compilation option to prevent artifacts with OpenMP 0519 +IF(WIN32 AND MSVC) 0520 + target_compile_options(raw PRIVATE -w) 0521 +ELSE() 0522 + target_compile_options(raw PRIVATE -w -O4) 0523 +ENDIF() 0524 + 0525 +target_include_directories(raw 0526 + PUBLIC 0527 + $<INSTALL_INTERFACE:libraw> 0528 + $<BUILD_INTERFACE:${LIBRAW_PATH}>) 0529 + 0530 +TARGET_LINK_LIBRARIES(raw ${MATH_LIBRARY}) 0531 + 0532 +IF(MINGW) 0533 + TARGET_LINK_LIBRARIES(raw ws2_32) 0534 +ENDIF() 0535 + 0536 +IF(OpenMP_FOUND) 0537 + target_link_libraries(raw OpenMP::OpenMP_CXX) 0538 +ENDIF() 0539 + 0540 +IF(LCMS_SUPPORT_CAN_BE_COMPILED) 0541 + TARGET_LINK_LIBRARIES(raw ${LCMS2_LIBRARIES}) 0542 +ENDIF() 0543 + 0544 +IF(ZLIB_FOUND) 0545 + TARGET_LINK_LIBRARIES(raw ZLIB::ZLIB) 0546 +ENDIF() 0547 + 0548 +IF(JPEG8_FOUND) 0549 + TARGET_LINK_LIBRARIES(raw JPEG::JPEG) 0550 +ENDIF() 0551 + 0552 +IF(JASPER_FOUND) 0553 + TARGET_LINK_LIBRARIES(raw ${JASPER_LIBRARIES}) 0554 +ENDIF() 0555 + 0556 +IF(RAWSPEED_SUPPORT_CAN_BE_COMPILED) 0557 + TARGET_LINK_LIBRARIES(raw ${LIBXML2_LIBRARIES}) 0558 +ENDIF() 0559 + 0560 +SET_TARGET_PROPERTIES(raw PROPERTIES VERSION ${RAW_LIB_SO_VERSION_STRING}) 0561 +SET_TARGET_PROPERTIES(raw PROPERTIES SOVERSION ${RAW_LIB_SO_CUR_VERSION}) 0562 +SET_TARGET_PROPERTIES(raw PROPERTIES OUTPUT_NAME "raw") 0563 +SET_TARGET_PROPERTIES(raw PROPERTIES COMPILE_PDB_NAME "raw") 0564 + 0565 +# -- Dedicated libraw target to support multi-threading --------------------------------------------- 0566 + 0567 +SET(libraw_r_LIB_SRCS ${libraw_LIB_SRCS}) 0568 + 0569 +ADD_LIBRARY(raw_r ${libraw_r_LIB_SRCS}) 0570 +add_library(libraw::libraw_r ALIAS raw_r) 0571 + 0572 +IF(WIN32 AND MSVC) 0573 + target_compile_options(raw_r PRIVATE -w) 0574 +ELSE() 0575 + target_compile_options(raw_r PRIVATE -w -O4) 0576 +ENDIF() 0577 + 0578 +# Always build position-independent code (PIC), even when building Libraw as a 0579 +# static library so that shared libraries can link against it, not just 0580 +# executables (PIC does not apply on Windows). 0581 +# Use set_target_properties() not append_target_property() here as 0582 +# POSITION_INDEPENDENT_CODE is a binary ON/OFF switch. 0583 +set_target_properties(raw PROPERTIES POSITION_INDEPENDENT_CODE ON) 0584 +set_target_properties(raw_r PROPERTIES POSITION_INDEPENDENT_CODE ON) 0585 + 0586 +TARGET_LINK_LIBRARIES(raw_r ${MATH_LIBRARY}) 0587 +target_include_directories(raw_r 0588 + PUBLIC 0589 + $<INSTALL_INTERFACE:libraw> 0590 + $<BUILD_INTERFACE:${LIBRAW_PATH}>) 0591 + 0592 +IF(MINGW) 0593 + TARGET_LINK_LIBRARIES(raw_r ws2_32) 0594 +ENDIF() 0595 + 0596 +IF(OpenMP_FOUND) 0597 + TARGET_LINK_LIBRARIES(raw_r OpenMP::OpenMP_CXX) 0598 +ENDIF() 0599 + 0600 +IF(LCMS_SUPPORT_CAN_BE_COMPILED) 0601 + TARGET_LINK_LIBRARIES(raw_r ${LCMS2_LIBRARIES}) 0602 +ENDIF() 0603 + 0604 +IF(ZLIB_FOUND) 0605 + TARGET_LINK_LIBRARIES(raw_r ZLIB::ZLIB) 0606 +ENDIF() 0607 + 0608 +IF(JPEG8_FOUND) 0609 + TARGET_LINK_LIBRARIES(raw_r JPEG::JPEG) 0610 +ENDIF() 0611 + 0612 +IF(JASPER_FOUND) 0613 + TARGET_LINK_LIBRARIES(raw_r ${JASPER_LIBRARIES}) 0614 +ENDIF() 0615 + 0616 +IF(RAWSPEED_SUPPORT_CAN_BE_COMPILED) 0617 + TARGET_LINK_LIBRARIES(raw_r ${LIBXML2_LIBRARIES} Threads::Threads) 0618 +ENDIF() 0619 + 0620 +SET_TARGET_PROPERTIES(raw_r PROPERTIES VERSION ${RAW_LIB_SO_VERSION_STRING}) 0621 +SET_TARGET_PROPERTIES(raw_r PROPERTIES SOVERSION ${RAW_LIB_SO_CUR_VERSION}) 0622 +SET_TARGET_PROPERTIES(raw_r PROPERTIES OUTPUT_NAME "raw_r") 0623 +SET_TARGET_PROPERTIES(raw_r PROPERTIES COMPILE_PDB_NAME "raw_r") 0624 + 0625 +# -- Files to install ------------------------------------------------------------------------------------- 0626 +if (LIBRAW_INSTALL) 0627 + 0628 +# Configure and install data file for packaging. 0629 +IF(NOT WIN32) 0630 + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/data/libraw.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libraw.pc @ONLY) 0631 + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libraw.pc DESTINATION lib${LIB_SUFFIX}/pkgconfig) 0632 + 0633 + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/data/libraw_r.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libraw_r.pc @ONLY) 0634 + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libraw_r.pc DESTINATION lib${LIB_SUFFIX}/pkgconfig) 0635 + 0636 + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/data/libraw.lsm.cmake ${CMAKE_CURRENT_BINARY_DIR}/libraw.lsm) 0637 +ENDIF() 0638 + 0639 +# Install Shared header files. 0640 +INSTALL(FILES ${LIBRAW_PATH}/libraw/libraw.h 0641 + ${LIBRAW_PATH}/libraw/libraw_alloc.h 0642 + ${LIBRAW_PATH}/libraw/libraw_const.h 0643 + ${LIBRAW_PATH}/libraw/libraw_datastream.h 0644 + ${LIBRAW_PATH}/libraw/libraw_internal.h 0645 + ${LIBRAW_PATH}/libraw/libraw_types.h 0646 + ${LIBRAW_PATH}/libraw/libraw_version.h 0647 + ${CMAKE_CURRENT_BINARY_DIR}/libraw_config.h 0648 + DESTINATION include/libraw 0649 + COMPONENT Devel 0650 + ) 0651 + 0652 +# Install Shared binary files. 0653 +INSTALL(TARGETS raw 0654 + RUNTIME DESTINATION bin 0655 + LIBRARY DESTINATION lib${LIB_SUFFIX} 0656 + ARCHIVE DESTINATION lib${LIB_SUFFIX} 0657 + ) 0658 + 0659 +INSTALL(TARGETS raw_r 0660 + RUNTIME DESTINATION bin 0661 + LIBRARY DESTINATION lib${LIB_SUFFIX} 0662 + ARCHIVE DESTINATION lib${LIB_SUFFIX} 0663 + ) 0664 + 0665 +IF(MSVC) 0666 + INSTALL(FILES $<TARGET_PDB_FILE:raw> 0667 + DESTINATION lib 0668 + CONFIGURATIONS Debug RelWithDebInfo 0669 + ) 0670 + INSTALL(FILES $<TARGET_PDB_FILE:raw_r> 0671 + DESTINATION lib 0672 + CONFIGURATIONS Debug RelWithDebInfo 0673 + ) 0674 +ENDIF() 0675 + 0676 +# Install find cmake script to the system for client applications. 0677 +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/FindLibRaw.cmake 0678 + DESTINATION ${INSTALL_CMAKE_MODULE_PATH}) 0679 + 0680 +# Install doc data files. 0681 +IF(NOT WIN32) 0682 + INSTALL(FILES ${LIBRAW_PATH}/COPYRIGHT 0683 + ${LIBRAW_PATH}/LICENSE.CDDL 0684 + ${LIBRAW_PATH}/LICENSE.LGPL 0685 + ${LIBRAW_PATH}/Changelog.txt 0686 + DESTINATION share/libraw 0687 + COMPONENT main 0688 + ) 0689 +ENDIF() 0690 +endif(LIBRAW_INSTALL) 0691 + 0692 +# Uninstall rules 0693 +IF(LIBRAW_UNINSTALL_TARGET) 0694 + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/Uninstall.cmake ${CMAKE_BINARY_DIR}/cmake_uninstall.cmake COPYONLY) 0695 + ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake") 0696 +ENDIF(LIBRAW_UNINSTALL_TARGET) 0697 + 0698 +# -- Compile LibRaw Examples -------------------------------------------------------------------------------- 0699 + 0700 +# add a small macro so that this is a bit cleaner 0701 +MACRO(LIBRAW_BUILD_SAMPLES) 0702 + 0703 + SET(_filename ${ARGV0}) 0704 + SET(_rawlib ${ARGV1}) 0705 + STRING(REPLACE "." ";" _temp ${_filename}) 0706 + LIST(GET _temp 0 _target) 0707 + 0708 + SET(${_target}_SRCS ${LIBRAW_PATH}/samples/${_filename}) 0709 + 0710 + ADD_EXECUTABLE(${_target} ${${_target}_SRCS}) 0711 + target_compile_options(${_target} PRIVATE -w) 0712 + 0713 + TARGET_LINK_LIBRARIES(${_target} PRIVATE ${_rawlib}) 0714 + 0715 + IF(OpenMP_FOUND) 0716 + target_link_libraries(${_target} PUBLIC OpenMP::OpenMP_CXX) 0717 + ENDIF() 0718 + 0719 + IF (${_rawlib} MATCHES "raw_r") 0720 + TARGET_LINK_LIBRARIES(${_target} PUBLIC ${PTHREADS_LIBRARY}) 0721 + ENDIF() 0722 + 0723 + IF(WIN32) 0724 + TARGET_LINK_LIBRARIES(${_target} PUBLIC ws2_32) 0725 + ENDIF() 0726 + 0727 + INSTALL(TARGETS ${_target} 0728 + RUNTIME DESTINATION bin 0729 + LIBRARY DESTINATION lib${LIB_SUFFIX} 0730 + ARCHIVE DESTINATION lib${LIB_SUFFIX} 0731 + ) 0732 + 0733 +ENDMACRO(LIBRAW_BUILD_SAMPLES) 0734 + 0735 +IF(ENABLE_EXAMPLES) 0736 + 0737 + LIBRAW_BUILD_SAMPLES(simple_dcraw.cpp raw) 0738 + 0739 + if(EXISTS mem_image.cpp) 0740 + LIBRAW_BUILD_SAMPLES(mem_image.cpp raw) 0741 + else() 0742 + LIBRAW_BUILD_SAMPLES(mem_image_sample.cpp raw) 0743 + endif() 0744 + 0745 + LIBRAW_BUILD_SAMPLES(dcraw_emu.cpp raw) 0746 + LIBRAW_BUILD_SAMPLES(4channels.cpp raw) 0747 + LIBRAW_BUILD_SAMPLES(unprocessed_raw.cpp raw) 0748 + LIBRAW_BUILD_SAMPLES(raw-identify.cpp raw) 0749 + LIBRAW_BUILD_SAMPLES(multirender_test.cpp raw) 0750 + LIBRAW_BUILD_SAMPLES(postprocessing_benchmark.cpp raw) 0751 + 0752 + IF (TARGET Threads::Threads) 0753 + IF(WIN32) 0754 + LIBRAW_BUILD_SAMPLES(half_mt_win32.c raw_r) 0755 + ELSE() 0756 + LIBRAW_BUILD_SAMPLES(dcraw_half.c raw_r) 0757 + LIBRAW_BUILD_SAMPLES(half_mt.c raw_r) 0758 + ENDIF() 0759 + ENDIF() 0760 +ENDIF() 0761 diff --git a/INSTALL.CMAKE b/INSTALL.CMAKE 0762 new file mode 100644 0763 index 0000000..e000651 0764 --- /dev/null 0765 +++ b/INSTALL.CMAKE 0766 @@ -0,0 +1,62 @@ 0767 + 0768 +========= Installing LibRaw (CMake version) ========== 0769 + 0770 +I. Installation steps 0771 + 0772 +1. Unpack the distribution file: 0773 + 0774 + $ tar xzvf LibRaw-0.xx.yy.tar.gz 0775 + 0776 +2. Copy this LibRaw-cmake scripts in LibRaw-... folder 0777 + 0778 +3. Go to LibRaw folder and run ./configure and make: 0779 + 0780 + $ cd LibRaw-0.xx.yy 0781 + $ ./cmake [...optional args...] . 0782 + $ make 0783 + 0784 +4. install by run make install as root: 0785 + 0786 + $ sudo make install 0787 + 0788 + 0789 +II. ./cmake options 0790 + 0791 +-DENABLE_OPENMP=ON/OFF 0792 + 0793 + Enable/disable OpenMP support if compiler supports it. 0794 + OpenMP is enabled by default. 0795 + 0796 + 0797 +-DENABLE_LCMS=ON/OFF 0798 + 0799 + Enable/disable LCMS color engine support. If enabled, ./cmake will try to 0800 + find lcms library. Both LCMS-1.x and LCMS-2.x are supported 0801 + LCMS support is enabled by default 0802 + 0803 + 0804 +-DENABLE_EXAMPLES=ON/OFF 0805 + 0806 + Enables/disables examples compilation and installation. Enabled by default 0807 + 0808 + 0809 +-DENABLE_RAWSPEED=ON/OFF 0810 +-DRAWSPEED_RPATH=FOLDERNAME 0811 + 0812 + Enables/disables support of additional code from RawStudio project 0813 + You need to download RawSpeed source code to use this feature. 0814 + See README.RawSpeed.txt for details. 0815 + ./cmake will try to find RawSpeed code in: 0816 + 0817 + a) If folder is specified via -DRAWSPEED_RPATH=FOLDERNAME 0818 + command-line option, then only this folder will be checked. 0819 + 0820 + b) If no folder is specified in -DENABLE_RAWSPEED switch: 0821 + 0822 + ./RawSpeed (in LibRaw folder) 0823 + 0824 + 0825 + 0826 +-DENABLE_DCRAW_DEBUG=ON/OFF 0827 + 0828 + Enables/disables support of additional debug traces from dcraw operations. Disabled by default 0829 diff --git a/LICENSE b/LICENSE 0830 new file mode 100644 0831 index 0000000..4b41776 0832 --- /dev/null 0833 +++ b/LICENSE 0834 @@ -0,0 +1,22 @@ 0835 +Redistribution and use in source and binary forms, with or without 0836 +modification, are permitted provided that the following conditions 0837 +are met: 0838 + 0839 +1. Redistributions of source code must retain the copyright 0840 + notice, this list of conditions and the following disclaimer. 0841 +2. Redistributions in binary form must reproduce the copyright 0842 + notice, this list of conditions and the following disclaimer in the 0843 + documentation and/or other materials provided with the distribution. 0844 +3. The name of the author may not be used to endorse or promote products 0845 + derived from this software without specific prior written permission. 0846 + 0847 +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 0848 +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 0849 +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 0850 +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 0851 +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 0852 +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 0853 +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 0854 +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 0855 +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 0856 +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 0857 diff --git a/cmake/data/libraw.lsm.cmake b/cmake/data/libraw.lsm.cmake 0858 new file mode 100644 0859 index 0000000..45dfb45 0860 --- /dev/null 0861 +++ b/cmake/data/libraw.lsm.cmake 0862 @@ -0,0 +1,13 @@ 0863 +Begin4 0864 +Title: ${PROJECT_NAME} 0865 +Version: ${RAW_LIB_VERSION_STRING} 0866 +Entered-date: 2013-09-08 0867 +Description: Raw image decoder library 0868 +Keywords: Raw image digital camera demosaicing decoding 0869 +Author: Copyright 2008-2013 LibRaw LLC (info@libraw.org) 0870 +Maintained-by: 0871 +Primary-site: http://www.libraw.org 0872 +Original-site: 0873 +Platforms: Linux and other Unices, MacOs-X, Win32 0874 +Copying-policy: GPL 0875 +End 0876 diff --git a/cmake/data/libraw.pc.cmake b/cmake/data/libraw.pc.cmake 0877 new file mode 100644 0878 index 0000000..aede5f2 0879 --- /dev/null 0880 +++ b/cmake/data/libraw.pc.cmake 0881 @@ -0,0 +1,12 @@ 0882 +prefix=@CMAKE_INSTALL_PREFIX@ 0883 +exec_prefix=${prefix} 0884 +libdir=${prefix}/lib@LIB_SUFFIX@ 0885 +includedir=${prefix}/include/libraw 0886 + 0887 +Name: @PROJECT_NAME@ 0888 +Description: @PROJECT_NAME@ - Raw image decoder library (non-thread-safe) 0889 +URL: http://www.libraw.org 0890 +Requires: 0891 +Version: @RAW_LIB_VERSION_STRING@ 0892 +Libs: -L${libdir} -lraw 0893 +Cflags: -I${includedir} 0894 diff --git a/cmake/data/libraw_config.h.cmake b/cmake/data/libraw_config.h.cmake 0895 new file mode 100644 0896 index 0000000..4e4b314 0897 --- /dev/null 0898 +++ b/cmake/data/libraw_config.h.cmake 0899 @@ -0,0 +1,50 @@ 0900 +/* -*- C++ -*- 0901 + * File: libraw_version.h 0902 + * Copyright 2008-2013 LibRaw LLC (info@libraw.org) 0903 + * Created: Mon Sept 8, 2008 0904 + * 0905 + * LibRaw C++ interface 0906 + * 0907 + 0908 +LibRaw is free software; you can redistribute it and/or modify 0909 +it under the terms of the one of two licenses as you choose: 0910 + 0911 +1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1 0912 +(See the file LICENSE.LGPL provided in LibRaw distribution archive for details). 0913 + 0914 +2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 0915 +(See the file LICENSE.CDDL provided in LibRaw distribution archive for details). 0916 + 0917 + */ 0918 + 0919 +#ifndef __LIBRAW_CONFIG_H 0920 +#define __LIBRAW_CONFIG_H 0921 + 0922 +/* Define to 1 if LibRaw have been compiled with DNG deflate codec support */ 0923 +#cmakedefine LIBRAW_USE_DNGDEFLATECODEC 1 0924 + 0925 +/* Define to 1 if LibRaw have been compiled with DNG lossy codec support */ 0926 +#cmakedefine LIBRAW_USE_DNGLOSSYCODEC 1 0927 + 0928 +/* Define to 1 if LibRaw have been compiled with OpenMP support */ 0929 +#cmakedefine LIBRAW_USE_OPENMP 1 0930 + 0931 +/* Define to 1 if LibRaw have been compiled with LCMS support */ 0932 +#cmakedefine LIBRAW_USE_LCMS 1 0933 + 0934 +/* Define to 1 if LibRaw have been compiled with RedCine codec support */ 0935 +#cmakedefine LIBRAW_USE_REDCINECODEC 1 0936 + 0937 +/* Define to 1 if LibRaw have been compiled with RawSpeed codec support */ 0938 +#cmakedefine LIBRAW_USE_RAWSPEED 1 0939 + 0940 +/* Define to 1 if LibRaw have been compiled with debug message from dcraw */ 0941 +#cmakedefine LIBRAW_USE_DCRAW_DEBUG 1 0942 + 0943 +/* Define to 1 if LibRaw have been compiled with Foveon X3F support */ 0944 +#cmakedefine LIBRAW_USE_X3FTOOLS 1 0945 + 0946 +/* Define to 1 if LibRaw have been compiled with Raspberry Pi RAW support */ 0947 +#cmakedefine LIBRAW_USE_6BY9RPI 1 0948 + 0949 +#endif 0950 diff --git a/cmake/data/libraw_r.pc.cmake b/cmake/data/libraw_r.pc.cmake 0951 new file mode 100644 0952 index 0000000..16134e8 0953 --- /dev/null 0954 +++ b/cmake/data/libraw_r.pc.cmake 0955 @@ -0,0 +1,12 @@ 0956 +prefix=@CMAKE_INSTALL_PREFIX@ 0957 +exec_prefix=${prefix} 0958 +libdir=${prefix}/lib@LIB_SUFFIX@ 0959 +includedir=${prefix}/include/libraw 0960 + 0961 +Name: @PROJECT_NAME@ 0962 +Description: @PROJECT_NAME@ - Raw image decoder library (thread-safe) 0963 +URL: http://www.libraw.org 0964 +Requires: 0965 +Version: @RAW_LIB_VERSION_STRING@ 0966 +Libs: -L${libdir} -lraw_r 0967 +Cflags: -I${includedir} 0968 diff --git a/cmake/modules/FindLCMS.cmake b/cmake/modules/FindLCMS.cmake 0969 new file mode 100644 0970 index 0000000..d82d82e 0971 --- /dev/null 0972 +++ b/cmake/modules/FindLCMS.cmake 0973 @@ -0,0 +1,60 @@ 0974 +# - Find LCMS 0975 +# Find the LCMS (Little Color Management System) library and includes and 0976 +# This module defines 0977 +# LCMS_INCLUDE_DIR, where to find lcms.h 0978 +# LCMS_LIBRARIES, the libraries needed to use LCMS. 0979 +# LCMS_DOT_VERSION, The version number of the LCMS library, e.g. "1.19" 0980 +# LCMS_VERSION, Similar to LCMS_DOT_VERSION, but without the dots, e.g. "119" 0981 +# LCMS_FOUND, If false, do not try to use LCMS. 0982 +# 0983 +# The minimum required version of LCMS can be specified using the 0984 +# standard syntax, e.g. find_package(LCMS 1.10) 0985 + 0986 +# Copyright (c) 2008, Adrian Page, <adrian@pagenet.plus.com> 0987 +# Copyright (c) 2009, Cyrille Berger, <cberger@cberger.net> 0988 +# 0989 +# Redistribution and use is allowed according to the terms of the BSD license. 0990 +# For details see the accompanying LICENSE file. 0991 + 0992 + 0993 +# use pkg-config to get the directories and then use these values 0994 +# in the FIND_PATH() and FIND_LIBRARY() calls 0995 +if(NOT WIN32) 0996 + find_package(PkgConfig) 0997 + pkg_check_modules(PC_LCMS lcms) 0998 + set(LCMS_DEFINITIONS ${PC_LCMS_CFLAGS_OTHER}) 0999 +endif(NOT WIN32) 1000 + 1001 +find_path(LCMS_INCLUDE_DIR lcms.h 1002 + HINTS 1003 + ${PC_LCMS_INCLUDEDIR} 1004 + ${PC_LCMS_INCLUDE_DIRS} 1005 + PATH_SUFFIXES lcms liblcms1 1006 +) 1007 + 1008 +find_library(LCMS_LIBRARIES NAMES lcms liblcms lcms-1 liblcms-1 1009 + HINTS 1010 + ${PC_LCMS_LIBDIR} 1011 + ${PC_LCMS_LIBRARY_DIRS} 1012 + PATH_SUFFIXES lcms 1013 +) 1014 + 1015 +# Store the LCMS version number in the cache, so we don't have to search every time again 1016 +if(LCMS_INCLUDE_DIR AND NOT LCMS_VERSION) 1017 + file(READ ${LCMS_INCLUDE_DIR}/lcms.h LCMS_VERSION_CONTENT) 1018 + string(REGEX MATCH "#define LCMS_VERSION[ ]*[0-9]*\n" LCMS_VERSION_MATCH ${LCMS_VERSION_CONTENT}) 1019 + if(LCMS_VERSION_MATCH) 1020 + string(REGEX REPLACE "#define LCMS_VERSION[ ]*([0-9]*)\n" "\\1" _LCMS_VERSION ${LCMS_VERSION_MATCH}) 1021 + string(SUBSTRING ${_LCMS_VERSION} 0 1 LCMS_MAJOR_VERSION) 1022 + string(SUBSTRING ${_LCMS_VERSION} 1 2 LCMS_MINOR_VERSION) 1023 + endif(LCMS_VERSION_MATCH) 1024 + set(LCMS_VERSION "${LCMS_MAJOR_VERSION}${LCMS_MINOR_VERSION}" CACHE STRING "Version number of lcms" FORCE) 1025 + set(LCMS_DOT_VERSION "${LCMS_MAJOR_VERSION}.${LCMS_MINOR_VERSION}" CACHE STRING "Version number of lcms split into components" FORCE) 1026 +endif(LCMS_INCLUDE_DIR AND NOT LCMS_VERSION) 1027 + 1028 +include(FindPackageHandleStandardArgs) 1029 +find_package_handle_standard_args(LCMS REQUIRED_VARS LCMS_LIBRARIES LCMS_INCLUDE_DIR 1030 + VERSION_VAR LCMS_DOT_VERSION ) 1031 + 1032 +mark_as_advanced(LCMS_INCLUDE_DIR LCMS_LIBRARIES LCMS_VERSION) 1033 + 1034 diff --git a/cmake/modules/FindLCMS2.cmake b/cmake/modules/FindLCMS2.cmake 1035 new file mode 100644 1036 index 0000000..4e3e482 1037 --- /dev/null 1038 +++ b/cmake/modules/FindLCMS2.cmake 1039 @@ -0,0 +1,72 @@ 1040 +# - Find LCMS2 1041 +# Find the LCMS2 includes and library 1042 +# This module defines 1043 +# LCMS2_INCLUDE_DIR, where to find lcms.h 1044 +# LCMS2_LIBRARIES, the libraries needed to use LCMS2. 1045 +# LCMS2_VERSION, The value of LCMS_VERSION defined in lcms.h 1046 +# LCMS2_FOUND, If false, do not try to use LCMS2. 1047 + 1048 + 1049 +# Copyright (c) 2008, Adrian Page, <adrian@pagenet.plus.com> 1050 +# Copyright (c) 2009, Cyrille Berger, <cberger@cberger.net> 1051 +# 1052 +# Redistribution and use is allowed according to the terms of the BSD license. 1053 +# For details see the accompanying LICENSE file. 1054 + 1055 + 1056 +# use pkg-config to get the directories and then use these values 1057 +# in the FIND_PATH() and FIND_LIBRARY() calls 1058 +if(NOT WIN32) 1059 + find_package(PkgConfig) 1060 + pkg_check_modules(PC_LCMS2 lcms2) 1061 + set(LCMS2_DEFINITIONS ${PC_LCMS2_CFLAGS_OTHER}) 1062 +endif(NOT WIN32) 1063 + 1064 +find_path(LCMS2_INCLUDE_DIR lcms2.h 1065 + PATHS 1066 + ${PC_LCMS2_INCLUDEDIR} 1067 + ${PC_LCMS2_INCLUDE_DIRS} 1068 + PATH_SUFFIXES lcms2 liblcms2 1069 +) 1070 + 1071 +find_library(LCMS2_LIBRARIES NAMES lcms2 liblcms2 lcms-2 liblcms-2 1072 + PATHS 1073 + ${PC_LCMS2_LIBDIR} 1074 + ${PC_LCMS2_LIBRARY_DIRS} 1075 + PATH_SUFFIXES lcms2 1076 +) 1077 + 1078 +if(LCMS2_INCLUDE_DIR AND LCMS2_LIBRARIES) 1079 + set(LCMS2_FOUND TRUE) 1080 +else(LCMS2_INCLUDE_DIR AND LCMS2_LIBRARIES) 1081 + set(LCMS2_FOUND FALSE) 1082 +endif(LCMS2_INCLUDE_DIR AND LCMS2_LIBRARIES) 1083 + 1084 +if(LCMS2_FOUND) 1085 + file(READ ${LCMS2_INCLUDE_DIR}/lcms2.h LCMS2_VERSION_CONTENT) 1086 + string(REGEX MATCH "#define LCMS_VERSION[ ]*[0-9]*\n" LCMS2_VERSION_MATCH ${LCMS2_VERSION_CONTENT}) 1087 + if(LCMS2_VERSION_MATCH) 1088 + string(REGEX REPLACE "#define LCMS_VERSION[ ]*([0-9]*)\n" "\\1" LCMS2_VERSION ${LCMS2_VERSION_MATCH}) 1089 + if(NOT LCMS2_FIND_QUIETLY) 1090 + string(SUBSTRING ${LCMS2_VERSION} 0 1 LCMS2_MAJOR_VERSION) 1091 + string(SUBSTRING ${LCMS2_VERSION} 1 2 LCMS2_MINOR_VERSION) 1092 + message(STATUS "Found lcms version ${LCMS2_MAJOR_VERSION}.${LCMS2_MINOR_VERSION}, ${LCMS2_LIBRARIES}") 1093 + endif(NOT LCMS2_FIND_QUIETLY) 1094 + else(LCMS2_VERSION_MATCH) 1095 + if(NOT LCMS2_FIND_QUIETLY) 1096 + message(STATUS "Found lcms2 but failed to find version ${LCMS2_LIBRARIES}") 1097 + endif(NOT LCMS2_FIND_QUIETLY) 1098 + set(LCMS2_VERSION NOTFOUND) 1099 + endif(LCMS2_VERSION_MATCH) 1100 +else(LCMS2_FOUND) 1101 + if(NOT LCMS2_FIND_QUIETLY) 1102 + if(LCMS2_FIND_REQUIRED) 1103 + message(FATAL_ERROR "Required package lcms2 NOT found") 1104 + else(LCMS2_FIND_REQUIRED) 1105 + message(STATUS "lcms2 NOT found") 1106 + endif(LCMS2_FIND_REQUIRED) 1107 + endif(NOT LCMS2_FIND_QUIETLY) 1108 +endif(LCMS2_FOUND) 1109 + 1110 +mark_as_advanced(LCMS2_INCLUDE_DIR LCMS2_LIBRARIES LCMS2_VERSION) 1111 + 1112 diff --git a/cmake/modules/FindLibRaw.cmake b/cmake/modules/FindLibRaw.cmake 1113 new file mode 100644 1114 index 0000000..2ce7140 1115 --- /dev/null 1116 +++ b/cmake/modules/FindLibRaw.cmake 1117 @@ -0,0 +1,96 @@ 1118 +# - Find LibRaw 1119 +# Find the LibRaw library <http://www.libraw.org> 1120 +# This module defines 1121 +# LibRaw_VERSION_STRING, the version string of LibRaw 1122 +# LibRaw_INCLUDE_DIR, where to find libraw.h 1123 +# LibRaw_LIBRARIES, the libraries needed to use LibRaw (non-thread-safe) 1124 +# LibRaw_r_LIBRARIES, the libraries needed to use LibRaw (thread-safe) 1125 +# LibRaw_DEFINITIONS, the definitions needed to use LibRaw (non-thread-safe) 1126 +# LibRaw_r_DEFINITIONS, the definitions needed to use LibRaw (thread-safe) 1127 +# 1128 +# Copyright (c) 2013, Pino Toscano <pino at kde dot org> 1129 +# Copyright (c) 2013, Gilles Caulier <caulier dot gilles at gmail dot com> 1130 +# 1131 +# Redistribution and use is allowed according to the terms of the BSD license. 1132 +# For details see the accompanying LICENSE file. 1133 + 1134 +FIND_PACKAGE(PkgConfig) 1135 + 1136 +IF(PKG_CONFIG_FOUND) 1137 + PKG_CHECK_MODULES(PC_LIBRAW libraw) 1138 + SET(LibRaw_DEFINITIONS ${PC_LIBRAW_CFLAGS_OTHER}) 1139 + 1140 + PKG_CHECK_MODULES(PC_LIBRAW_R libraw_r) 1141 + SET(LibRaw_r_DEFINITIONS ${PC_LIBRAW_R_CFLAGS_OTHER}) 1142 +ENDIF() 1143 + 1144 +FIND_PATH(LibRaw_INCLUDE_DIR libraw.h 1145 + HINTS 1146 + ${PC_LIBRAW_INCLUDEDIR} 1147 + ${PC_LibRaw_INCLUDE_DIRS} 1148 + PATH_SUFFIXES libraw 1149 + ) 1150 + 1151 +FIND_LIBRARY(LibRaw_LIBRARY_RELEASE NAMES raw 1152 + HINTS 1153 + ${PC_LIBRAW_LIBDIR} 1154 + ${PC_LIBRAW_LIBRARY_DIRS} 1155 + ) 1156 + 1157 +FIND_LIBRARY(LibRaw_LIBRARY_DEBUG NAMES rawd 1158 + HINTS 1159 + ${PC_LIBRAW_LIBDIR} 1160 + ${PC_LIBRAW_LIBRARY_DIRS} 1161 + ) 1162 + 1163 +include(SelectLibraryConfigurations) 1164 +select_library_configurations(LibRaw) 1165 + 1166 +FIND_LIBRARY(LibRaw_r_LIBRARY_RELEASE NAMES raw_r 1167 + HINTS 1168 + ${PC_LIBRAW_R_LIBDIR} 1169 + ${PC_LIBRAW_R_LIBRARY_DIRS} 1170 + ) 1171 + 1172 +FIND_LIBRARY(LibRaw_r_LIBRARY_DEBUG NAMES raw_rd 1173 + HINTS 1174 + ${PC_LIBRAW_R_LIBDIR} 1175 + ${PC_LIBRAW_R_LIBRARY_DIRS} 1176 + ) 1177 + 1178 +select_library_configurations(LibRaw_r) 1179 + 1180 +IF(LibRaw_INCLUDE_DIR) 1181 + FILE(READ ${LibRaw_INCLUDE_DIR}/libraw_version.h _libraw_version_content) 1182 + 1183 + STRING(REGEX MATCH "#define LIBRAW_MAJOR_VERSION[ \t]*([0-9]*)\n" _version_major_match ${_libraw_version_content}) 1184 + SET(_libraw_version_major "${CMAKE_MATCH_1}") 1185 + 1186 + STRING(REGEX MATCH "#define LIBRAW_MINOR_VERSION[ \t]*([0-9]*)\n" _version_minor_match ${_libraw_version_content}) 1187 + SET(_libraw_version_minor "${CMAKE_MATCH_1}") 1188 + 1189 + STRING(REGEX MATCH "#define LIBRAW_PATCH_VERSION[ \t]*([0-9]*)\n" _version_patch_match ${_libraw_version_content}) 1190 + SET(_libraw_version_patch "${CMAKE_MATCH_1}") 1191 + 1192 + IF(_version_major_match AND _version_minor_match AND _version_patch_match) 1193 + SET(LibRaw_VERSION_STRING "${_libraw_version_major}.${_libraw_version_minor}.${_libraw_version_patch}") 1194 + ELSE() 1195 + IF(NOT LibRaw_FIND_QUIETLY) 1196 + MESSAGE(STATUS "Failed to get version information from ${LibRaw_INCLUDE_DIR}/libraw_version.h") 1197 + ENDIF() 1198 + ENDIF() 1199 +ENDIF() 1200 + 1201 +INCLUDE(FindPackageHandleStandardArgs) 1202 +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibRaw 1203 + REQUIRED_VARS LibRaw_LIBRARIES LibRaw_INCLUDE_DIR 1204 + VERSION_VAR LibRaw_VERSION_STRING 1205 + ) 1206 + 1207 +MARK_AS_ADVANCED(LibRaw_VERSION_STRING 1208 + LibRaw_INCLUDE_DIR 1209 + LibRaw_LIBRARIES 1210 + LibRaw_r_LIBRARIES 1211 + LibRaw_DEFINITIONS 1212 + LibRaw_r_DEFINITIONS 1213 + ) 1214 diff --git a/cmake/modules/MacroBoolTo01.cmake b/cmake/modules/MacroBoolTo01.cmake 1215 new file mode 100644 1216 index 0000000..a6f2fd8 1217 --- /dev/null 1218 +++ b/cmake/modules/MacroBoolTo01.cmake 1219 @@ -0,0 +1,20 @@ 1220 +# MACRO_BOOL_TO_01( VAR RESULT0 ... RESULTN ) 1221 +# This macro evaluates its first argument 1222 +# and sets all the given vaiables either to 0 or 1 1223 +# depending on the value of the first one 1224 + 1225 +# Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org> 1226 +# 1227 +# Redistribution and use is allowed according to the terms of the BSD license. 1228 +# For details see the accompanying LICENSE file. 1229 + 1230 + 1231 +MACRO(MACRO_BOOL_TO_01 FOUND_VAR ) 1232 + FOREACH (_current_VAR ${ARGN}) 1233 + IF(${FOUND_VAR}) 1234 + SET(${_current_VAR} 1) 1235 + ELSE(${FOUND_VAR}) 1236 + SET(${_current_VAR} 0) 1237 + ENDIF(${FOUND_VAR}) 1238 + ENDFOREACH(_current_VAR) 1239 +ENDMACRO(MACRO_BOOL_TO_01) 1240 diff --git a/cmake/modules/MacroLogFeature.cmake b/cmake/modules/MacroLogFeature.cmake 1241 new file mode 100644 1242 index 0000000..5917a09 1243 --- /dev/null 1244 +++ b/cmake/modules/MacroLogFeature.cmake 1245 @@ -0,0 +1,159 @@ 1246 +# This file defines the Feature Logging macros. 1247 +# 1248 +# MACRO_LOG_FEATURE(VAR FEATURE DESCRIPTION URL [REQUIRED [MIN_VERSION [COMMENTS]]]) 1249 +# Logs the information so that it can be displayed at the end 1250 +# of the configure run 1251 +# VAR : TRUE or FALSE, indicating whether the feature is supported 1252 +# FEATURE: name of the feature, e.g. "libjpeg" 1253 +# DESCRIPTION: description what this feature provides 1254 +# URL: home page 1255 +# REQUIRED: TRUE or FALSE, indicating whether the feature is required 1256 +# MIN_VERSION: minimum version number. empty string if unneeded 1257 +# COMMENTS: More info you may want to provide. empty string if unnecessary 1258 +# 1259 +# MACRO_DISPLAY_FEATURE_LOG() 1260 +# Call this to display the collected results. 1261 +# Exits CMake with a FATAL error message if a required feature is missing 1262 +# 1263 +# Example: 1264 +# 1265 +# INCLUDE(MacroLogFeature) 1266 +# 1267 +# FIND_PACKAGE(JPEG) 1268 +# MACRO_LOG_FEATURE(JPEG_FOUND "libjpeg" "Support JPEG images" "http://www.ijg.org" TRUE "3.2a" "") 1269 +# ... 1270 +# MACRO_DISPLAY_FEATURE_LOG() 1271 + 1272 +# Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org> 1273 +# Copyright (c) 2006, Allen Winter, <winter@kde.org> 1274 +# Copyright (c) 2009, Sebastian Trueg, <trueg@kde.org> 1275 +# 1276 +# Redistribution and use is allowed according to the terms of the BSD license. 1277 +# For details see the accompanying LICENSE file. 1278 + 1279 +IF (NOT _macroLogFeatureAlreadyIncluded) 1280 + SET(_file ${CMAKE_BINARY_DIR}/MissingRequirements.txt) 1281 + IF (EXISTS ${_file}) 1282 + FILE(REMOVE ${_file}) 1283 + ENDIF (EXISTS ${_file}) 1284 + 1285 + SET(_file ${CMAKE_BINARY_DIR}/EnabledFeatures.txt) 1286 + IF (EXISTS ${_file}) 1287 + FILE(REMOVE ${_file}) 1288 + ENDIF (EXISTS ${_file}) 1289 + 1290 + SET(_file ${CMAKE_BINARY_DIR}/DisabledFeatures.txt) 1291 + IF (EXISTS ${_file}) 1292 + FILE(REMOVE ${_file}) 1293 + ENDIF (EXISTS ${_file}) 1294 + 1295 + SET(_macroLogFeatureAlreadyIncluded TRUE) 1296 + 1297 + INCLUDE(FeatureSummary) 1298 + 1299 +ENDIF (NOT _macroLogFeatureAlreadyIncluded) 1300 + 1301 + 1302 +MACRO(MACRO_LOG_FEATURE _var _package _description _url ) # _required _minvers _comments) 1303 + 1304 + STRING(TOUPPER "${ARGV4}" _required) 1305 + SET(_minvers "${ARGV5}") 1306 + SET(_comments "${ARGV6}") 1307 + 1308 + IF (${_var}) 1309 + SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/EnabledFeatures.txt) 1310 + ELSE (${_var}) 1311 + IF ("${_required}" STREQUAL "TRUE") 1312 + SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/MissingRequirements.txt) 1313 + ELSE ("${_required}" STREQUAL "TRUE") 1314 + SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/DisabledFeatures.txt) 1315 + ENDIF ("${_required}" STREQUAL "TRUE") 1316 + ENDIF (${_var}) 1317 + 1318 + SET(_logtext " * ${_package}") 1319 + 1320 + IF (NOT ${_var}) 1321 + IF (${_minvers} MATCHES ".*") 1322 + SET(_logtext "${_logtext} (${_minvers} or higher)") 1323 + ENDIF (${_minvers} MATCHES ".*") 1324 + SET(_logtext "${_logtext} <${_url}>\n ") 1325 + ELSE (NOT ${_var}) 1326 + SET(_logtext "${_logtext} - ") 1327 + ENDIF (NOT ${_var}) 1328 + 1329 + SET(_logtext "${_logtext}${_description}") 1330 + 1331 + IF (NOT ${_var}) 1332 + IF (${_comments} MATCHES ".*") 1333 + SET(_logtext "${_logtext}\n ${_comments}") 1334 + ENDIF (${_comments} MATCHES ".*") 1335 +# SET(_logtext "${_logtext}\n") #double-space missing features? 1336 + ENDIF (NOT ${_var}) 1337 + 1338 + FILE(APPEND "${_LOGFILENAME}" "${_logtext}\n") 1339 + 1340 + IF(COMMAND SET_PACKAGE_PROPERTIES) 1341 + SET_PACKAGE_PROPERTIES("${_package}" PROPERTIES URL "${_url}" DESCRIPTION "\"${_description}\"") 1342 + ELSEIF(COMMAND SET_PACKAGE_INFO) # in FeatureSummary.cmake since CMake 2.8.3 1343 + SET_PACKAGE_INFO("${_package}" "\"${_description}\"" "${_url}" "\"${_comments}\"") 1344 + ENDIF(COMMAND SET_PACKAGE_PROPERTIES) 1345 + 1346 +ENDMACRO(MACRO_LOG_FEATURE) 1347 + 1348 + 1349 +MACRO(MACRO_DISPLAY_FEATURE_LOG) 1350 + IF(COMMAND FEATURE_SUMMARY) # in FeatureSummary.cmake since CMake 2.8.3 1351 + FEATURE_SUMMARY(FILENAME ${CMAKE_CURRENT_BINARY_DIR}/FindPackageLog.txt 1352 + WHAT ALL) 1353 + ENDIF(COMMAND FEATURE_SUMMARY) 1354 + 1355 + SET(_missingFile ${CMAKE_BINARY_DIR}/MissingRequirements.txt) 1356 + SET(_enabledFile ${CMAKE_BINARY_DIR}/EnabledFeatures.txt) 1357 + SET(_disabledFile ${CMAKE_BINARY_DIR}/DisabledFeatures.txt) 1358 + 1359 + IF (EXISTS ${_missingFile} OR EXISTS ${_enabledFile} OR EXISTS ${_disabledFile}) 1360 + SET(_printSummary TRUE) 1361 + ENDIF (EXISTS ${_missingFile} OR EXISTS ${_enabledFile} OR EXISTS ${_disabledFile}) 1362 + 1363 + IF(_printSummary) 1364 + SET(_missingDeps 0) 1365 + IF (EXISTS ${_enabledFile}) 1366 + FILE(READ ${_enabledFile} _enabled) 1367 + FILE(REMOVE ${_enabledFile}) 1368 + SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following external packages were located on your system.\n-- This installation will have the extra features provided by these packages.\n-----------------------------------------------------------------------------\n${_enabled}") 1369 + ENDIF (EXISTS ${_enabledFile}) 1370 + 1371 + 1372 + IF (EXISTS ${_disabledFile}) 1373 + SET(_missingDeps 1) 1374 + FILE(READ ${_disabledFile} _disabled) 1375 + FILE(REMOVE ${_disabledFile}) 1376 + SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following OPTIONAL packages could NOT be located on your system.\n-- Consider installing them to enable more features from this software.\n-----------------------------------------------------------------------------\n${_disabled}") 1377 + ENDIF (EXISTS ${_disabledFile}) 1378 + 1379 + 1380 + IF (EXISTS ${_missingFile}) 1381 + SET(_missingDeps 1) 1382 + FILE(READ ${_missingFile} _requirements) 1383 + SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following REQUIRED packages could NOT be located on your system.\n-- You must install these packages before continuing.\n-----------------------------------------------------------------------------\n${_requirements}") 1384 + FILE(REMOVE ${_missingFile}) 1385 + SET(_haveMissingReq 1) 1386 + ENDIF (EXISTS ${_missingFile}) 1387 + 1388 + 1389 + IF (NOT ${_missingDeps}) 1390 + SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- Congratulations! All external packages have been found.") 1391 + ENDIF (NOT ${_missingDeps}) 1392 + 1393 + 1394 + MESSAGE(${_summary}) 1395 + MESSAGE("-----------------------------------------------------------------------------\n") 1396 + 1397 + 1398 + IF(_haveMissingReq) 1399 + MESSAGE(FATAL_ERROR "Exiting: Missing Requirements") 1400 + ENDIF(_haveMissingReq) 1401 + 1402 + ENDIF(_printSummary) 1403 + 1404 +ENDMACRO(MACRO_DISPLAY_FEATURE_LOG) 1405 diff --git a/cmake/modules/MacroOptionalFindPackage.cmake b/cmake/modules/MacroOptionalFindPackage.cmake 1406 new file mode 100644 1407 index 0000000..05fa139 1408 --- /dev/null 1409 +++ b/cmake/modules/MacroOptionalFindPackage.cmake 1410 @@ -0,0 +1,48 @@ 1411 +# - MACRO_OPTIONAL_FIND_PACKAGE() combines FIND_PACKAGE() with an OPTION() 1412 +# MACRO_OPTIONAL_FIND_PACKAGE( <name> [QUIT] ) 1413 +# This macro is a combination of OPTION() and FIND_PACKAGE(), it 1414 +# works like FIND_PACKAGE(), but additionally it automatically creates 1415 +# an option name WITH_<name>, which can be disabled via the cmake GUI. 1416 +# or via -DWITH_<name>=OFF 1417 +# The standard <name>_FOUND variables can be used in the same way 1418 +# as when using the normal FIND_PACKAGE() 1419 + 1420 +# Copyright (c) 2006-2010 Alexander Neundorf, <neundorf@kde.org> 1421 +# 1422 +# Redistribution and use is allowed according to the terms of the BSD license. 1423 +# For details see the accompanying LICENSE file. 1424 + 1425 +# This is just a helper macro to set a bunch of variables empty. 1426 +# We don't know whether the package uses UPPERCASENAME or CamelCaseName, so we try both: 1427 +macro(_MOFP_SET_EMPTY_IF_DEFINED _name _var) 1428 + if(DEFINED ${_name}_${_var}) 1429 + set(${_name}_${_var} "") 1430 + endif(DEFINED ${_name}_${_var}) 1431 + 1432 + string(TOUPPER ${_name} _nameUpper) 1433 + if(DEFINED ${_nameUpper}_${_var}) 1434 + set(${_nameUpper}_${_var} "") 1435 + endif(DEFINED ${_nameUpper}_${_var}) 1436 +endmacro(_MOFP_SET_EMPTY_IF_DEFINED _package _var) 1437 + 1438 + 1439 +macro (MACRO_OPTIONAL_FIND_PACKAGE _name ) 1440 + option(WITH_${_name} "Search for ${_name} package" ON) 1441 + if (WITH_${_name}) 1442 + find_package(${_name} ${ARGN}) 1443 + else (WITH_${_name}) 1444 + string(TOUPPER ${_name} _nameUpper) 1445 + set(${_name}_FOUND FALSE) 1446 + set(${_nameUpper}_FOUND FALSE) 1447 + 1448 + _mofp_set_empty_if_defined(${_name} INCLUDE_DIRS) 1449 + _mofp_set_empty_if_defined(${_name} INCLUDE_DIR) 1450 + _mofp_set_empty_if_defined(${_name} INCLUDES) 1451 + _mofp_set_empty_if_defined(${_name} LIBRARY) 1452 + _mofp_set_empty_if_defined(${_name} LIBRARIES) 1453 + _mofp_set_empty_if_defined(${_name} LIBS) 1454 + _mofp_set_empty_if_defined(${_name} FLAGS) 1455 + _mofp_set_empty_if_defined(${_name} DEFINITIONS) 1456 + endif (WITH_${_name}) 1457 +endmacro (MACRO_OPTIONAL_FIND_PACKAGE) 1458 + 1459 diff --git a/cmake/modules/Uninstall.cmake b/cmake/modules/Uninstall.cmake 1460 new file mode 100644 1461 index 0000000..36dd9ba 1462 --- /dev/null 1463 +++ b/cmake/modules/Uninstall.cmake 1464 @@ -0,0 +1,22 @@ 1465 +IF(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") 1466 + MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_BINARY_DIR@/install_manifest.txt\"") 1467 +ENDIF(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") 1468 + 1469 +FILE(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files) 1470 +STRING(REGEX REPLACE "\n" ";" files "${files}") 1471 +FOREACH(file ${files}) 1472 + MESSAGE(STATUS "Uninstalling \"${file}\"") 1473 + IF(EXISTS "${file}") 1474 + EXEC_PROGRAM( 1475 + "@CMAKE_COMMAND@" ARGS "-E remove \"${file}\"" 1476 + OUTPUT_VARIABLE rm_out 1477 + RETURN_VALUE rm_retval 1478 + ) 1479 + IF("${rm_retval}" STREQUAL 0) 1480 + ELSE("${rm_retval}" STREQUAL 0) 1481 + MESSAGE(FATAL_ERROR "Problem when removing \"${file}\"") 1482 + ENDIF("${rm_retval}" STREQUAL 0) 1483 + ELSE(EXISTS "${file}") 1484 + MESSAGE(STATUS "File \"${file}\" does not exist.") 1485 + ENDIF(EXISTS "${file}") 1486 +ENDFOREACH(file) 1487 -- 1488 2.30.1.windows.1 1489