"Fossies" - the Fresh Open Source Software Archive

Member "pfstools-2.2.0/CMakeLists.txt" (12 Aug 2021, 9138 Bytes) of package /linux/privat/pfstools-2.2.0.tgz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 cmake_minimum_required (VERSION 2.8.8)
    2 project(pfstools)
    3 
    4 set(CPACK_GENERATOR TGZ)
    5 set(CPACK_SOURCE_GENERATOR TGZ)
    6 # CPack version numbers for release tarball name.
    7 set(CPACK_PACKAGE_VERSION_MAJOR 2)
    8 set(CPACK_PACKAGE_VERSION_MINOR 1)
    9 set(CPACK_PACKAGE_VERSION_PATCH 0)
   10 set(CPACK_SOURCE_IGNORE_FILES
   11 "~$"
   12 "\\\\.cvsignore$"
   13 "^${PROJECT_SOURCE_DIR}.*/CVS/"
   14 "^${PROJECT_SOURCE_DIR}/debian/"
   15 "^${PROJECT_SOURCE_DIR}/old/"
   16 )
   17 include( CPack )
   18 
   19 #cmake_policy(SET CMP0074 NEW)
   20 
   21 # This gets rid of some warning messages in MSVC
   22 add_definitions(-D_CRT_SECURE_NO_WARNINGS)
   23 
   24 #SET(ZLIB_DIR "C:/Users/manti/Documents/projects/vs2019_libs")
   25 #SET(CMAKE_INCLUDE_PATH ${ZLIB_DIR}/include ${CMAKE_INCLUDE_PATH})
   26 #SET(CMAKE_LIBRARY_PATH ${ZLIB_DIR}/ ${ZLIB_DIR}/lib ${CMAKE_LIBRARY_PATH})
   27 #set(CMAKE_PREFIX_PATH "C:\\Qt\\5.15.2\\msvc2019_64")
   28 
   29 if( "${CYGWIN}" STREQUAL "" )
   30   set(CYGWIN 0)  
   31 endif( "${CYGWIN}" STREQUAL "" )
   32 
   33 set (pfstools_VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR})
   34 set (pfstools_VERSION_MINOR ${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH})
   35 set (pfslib_version 1.2)
   36 set(CMAKE_LEGACY_CYGWIN_WIN32 0)
   37  
   38 set (MAN_DIR "${CMAKE_INSTALL_PREFIX}/share/man/man1" CACHE PATH "The directory where the man pages are")
   39 
   40 include( CheckCXXSourceCompiles )
   41 
   42 
   43 # ======== Check for OpenMP =======
   44 
   45 find_package(OpenMP)
   46 if( OPENMP_FOUND )
   47   set( HAVE_OpenMP 1 )
   48 else( OPENMP_FOUND )
   49   set( HAVE_OpenMP 0 )
   50 endif( OPENMP_FOUND )
   51   
   52 
   53 # ======== Has branch prediction =======
   54 
   55 check_cxx_source_compiles( "int main() { int x = 0; if( __builtin_expect((x),0) ) x = 1; return 0; }" HAS_BRANCH_PEDICTION )
   56 
   57 if( HAS_BRANCH_PREDICTION )
   58   set( BRANCH_PREDICTION 1 )
   59 else( HAS_BRANCH_PREDICTION )
   60   set( BRANCH_PREDICTION 0 )
   61 endif( HAS_BRANCH_PREDICTION )
   62 
   63 # ======== Find bash =======
   64 
   65 # TODO: What if the check fails
   66 find_program (BASH_EXECUTABLE bash)
   67 message( "Using bash: ${BASH_EXECUTABLE}" )
   68 
   69 # ======== Find perl =======
   70 
   71 find_program (PERL_EXECUTABLE perl)
   72 if( PERL_EXECUTABLE )
   73 	message( "Using perl: ${PERL_EXECUTABLE}" )
   74 else( PERL_EXECUTABLE )
   75 	message( "Perl interpreter not found. Reading multiple exposures (pfsinhdrgen, pfsinme) will not work" )
   76 endif( PERL_EXECUTABLE )
   77 
   78 # ======== Build static or dynamic libraries =======
   79 
   80 OPTION (BUILD_SHARED_LIBS "Build pfs as a shared library" OFF)
   81 # TODO: Shared libs do not work with VS. Add declspec as explained at: http://www.cmake.org/Wiki/BuildingWinDLL
   82 # Set the LIB_TYPE variable to STATIC
   83 SET (LIB_TYPE STATIC)
   84 IF (BUILD_SHARED_LIBS)
   85   SET (LIB_TYPE SHARED)
   86 ENDIF (BUILD_SHARED_LIBS)
   87 
   88 # ======== Check for getopt, which is missing on Windows ========
   89 
   90 check_cxx_source_compiles( "#include \"getopt.h\" \n int main() { return 0; }" HAS_GETOPT )
   91 if( NOT HAS_GETOPT )
   92   MESSAGE( STATUS "getopt not found, a replacement needs to be compiled. " )
   93   set( GETOPT_INCLUDE "${PROJECT_SOURCE_DIR}/src/getopt" )
   94   set( GETOPT_OBJECT "$<TARGET_OBJECTS:getopt>" )
   95 else( NOT HAS_GETOPT )
   96   MESSAGE( STATUS "getopt found. " )
   97   set( GETOPT_INCLUDE ".") # work around, cannot pass empty string
   98   set( GETOPT_OBJECT )
   99 endif( NOT HAS_GETOPT )
  100 
  101 set( CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake )
  102 
  103 # ======== OpenEXR ===========
  104 
  105 OPTION(WITH_OpenEXR "Compile with OpenEXR library" ON)
  106 
  107 if( WITH_OpenEXR )
  108 
  109 find_package (OpenEXR)
  110 if( NOT OPENEXR_FOUND )
  111 MESSAGE( STATUS "OpenEXR not found. The following command will not be
  112 compiled: pfsinexr pfsoutexr. " )
  113 endif( NOT OPENEXR_FOUND )
  114 
  115 endif( WITH_OpenEXR )
  116 
  117 # ======== Image Magick ===========
  118 
  119 OPTION(WITH_ImageMagick "Use ImageMagick library" ON)
  120 
  121 if( WITH_ImageMagick )
  122 
  123 find_package(ImageMagick COMPONENTS Magick++ MagickCore)
  124 if( NOT ImageMagick_FOUND )
  125 MESSAGE( STATUS "ImageMagick not found. The following commands will not be
  126 compiled: pfsinimgmagick pfsoutimgmagick pfsouthdrhtml. " )
  127 endif( NOT ImageMagick_FOUND )
  128 
  129 else( WITH_ImageMagick )
  130 
  131       set( ImageMagick_FOUND OFF )
  132 
  133 endif( WITH_ImageMagick )
  134 
  135 message( "ImageMagick CFLAGS: " ${ImageMagick_INCLUDE_DIRS} )
  136 
  137 # ======== NetPBM ===========
  138 
  139 #include( ${PROJECT_SRC_DIR}/cmake/FindNETPBM.cmake )
  140 
  141 OPTION(WITH_NetPBM "Use NetPBM library" ON)
  142 
  143 if( WITH_NetPBM )
  144 
  145     find_package(NETPBM)
  146     if( NOT NETPBM_FOUND )
  147     	MESSAGE( STATUS "NetPBM not found. The following commands will
  148     not be compiled: pfsinppm pfsoutppm. " )
  149     endif( NOT NETPBM_FOUND )
  150 
  151 else( WITH_NetPBM )
  152 
  153       set( NETPBM_FOUND OFF )
  154 
  155 endif( WITH_NetPBM )
  156 
  157 # ======== TIFF ===========
  158 
  159 #include( ${PROJECT_SRC_DIR}/cmake/FindTIDD.cmake )
  160 
  161 OPTION(WITH_TIFF "Use TIFF library" ON)
  162 
  163 if( WITH_TIFF )
  164 
  165     find_package(TIFF)
  166     if( NOT TIFF_FOUND )
  167     	MESSAGE( STATUS "TIFF not found. The following commands will
  168     not be compiled: pfsintiff pfsouttiff. " )
  169     endif( NOT TIFF_FOUND )
  170 
  171 else( WITH_TIFF )
  172 
  173       set( NETPBM_FOUND OFF )
  174 
  175 endif( WITH_TIFF )
  176 
  177 # ======== QT ===========
  178 
  179 OPTION(WITH_QT "Use QT library" ON)
  180 
  181 if( WITH_QT )
  182 
  183   find_package(Qt5 COMPONENTS Widgets)
  184     if( NOT Qt5Widgets_FOUND)
  185     	MESSAGE( STATUS "Qt5 library not found. The following commands
  186     will not be compiled: pfsview. " )
  187     else( NOT Qt5Widgets_FOUND )
  188         MESSAGE( STATUS "Qt5 found" )
  189     endif( NOT Qt5Widgets_FOUND )
  190 
  191 else( WITH_QT )
  192 
  193       set( QT_FOUND OFF )
  194 
  195 endif( WITH_QT )
  196 
  197 # ======== Matlab ===========
  198 
  199 OPTION(WITH_MATLAB "Compile Matlab MEX files" ON)
  200 
  201 SET (MATLAB_DEST_DIR "${CMAKE_INSTALL_PREFIX}/share/pfstools/pfstools_matlab"
  202 CACHE PATH  "Copy matlab functions to this directory")
  203 
  204 SET (MEXGCC ""
  205 CACHE PATH "gcc compiler to use with MEX, for example MEXGCC=/usr/bin/gcc-4.7")
  206 
  207 if( WITH_MATLAB )
  208   find_package(MATLAB)
  209 
  210   if( MATLAB_FOUND )
  211     message(STATUS "matlab found. mex command: ${MATLAB_MEX}")
  212   elseif( MATLAB_FOUND )
  213     message( STATUS "Matlab or mex compiler not found. Matlab integration will not be compiled." )
  214   endif( MATLAB_FOUND )
  215   
  216 endif( WITH_MATLAB )
  217 
  218 
  219 #include( FindPkgConfig.cmake )
  220 
  221 # ======== OpenGL ===========
  222 
  223 set(OpenGL_GL_PREFERENCE GLVND)
  224 
  225 OPTION(WITH_pfsglview "Compile pfsglview, requires OpenGL and GLUT" ON)
  226 
  227 if( WITH_pfsglview )
  228 
  229 find_path(OPENGL_INCLUDE_DIR GL/gl.h )
  230 
  231 find_package(OpenGL )
  232 find_package(GLUT )
  233 
  234 if( NOT OPENGL_FOUND )
  235 	MESSAGE( STATUS "OpenGL not found. The following command will not be
  236 compiled: pfsglview. " )
  237 endif( NOT OPENGL_FOUND )
  238 
  239 if( NOT GLUT_FOUND )
  240 	MESSAGE( STATUS "GLUT not found. The following command will not be
  241 compiled: pfsglview. " )
  242 endif( NOT GLUT_FOUND )
  243 
  244 endif( WITH_pfsglview )
  245 
  246 # ========= FFTW  ===========
  247 
  248 OPTION(WITH_FFTW "Use fftw to speed up some operations" ON)
  249 
  250 if( WITH_FFTW )
  251 
  252   find_package (FFTW)
  253 
  254   if( NOT FFTW_FOUND )
  255     MESSAGE( STATUS "FFTW library not found. Acceleration for pfstmo_durand02 disabled. " )
  256     set( HAVE_FFTW3F 0 )
  257     set( HAVE_FFTW3 0 )
  258   else( NOT FFTW_FOUND )
  259     set( HAVE_FFTW3F 1 )
  260     set( HAVE_FFTW3 1 )
  261   endif( NOT FFTW_FOUND )
  262 
  263 else( WITH_FFTW )
  264   set( HAVE_FFTW3F 0 )
  265   set( HAVE_FFTW3 0 )
  266 endif( WITH_FFTW )
  267 
  268 
  269 # ========= GSL  ===========
  270 
  271 OPTION(WITH_GSL "Use Gnu Scientific Libarary required for some TMOs" ON)
  272 
  273 if( WITH_GSL )
  274 
  275 find_package (GSL)
  276 
  277 if( NOT GSL_FOUND )
  278 	MESSAGE( STATUS "GSL library not found. pfstmo_mantiuk08 will not be compiled." )
  279 endif( NOT GSL_FOUND )
  280 
  281 endif( WITH_GSL )
  282 
  283 
  284 # ======== HDRVC ===========
  285 # This is an experimental implementation of HDR-MPEG codec, not included in the official release.
  286 OPTION(WITH_HDRVC "Compile HDRVC (internal release only)" OFF)
  287 
  288 # ======== MKOCTFILE/OCTAVE ===========
  289 
  290 OPTION(WITH_Octave "Compile Octave files" ON)
  291 
  292 SET (OCTAVE_DEST_DIR "" CACHE PATH  "Install octave .m and .oct files in this directory")
  293 
  294 if( OCTAVE_DEST_DIR )
  295   set( OCTAVE_OCT_DIR ${OCTAVE_DEST_DIR} )
  296   set( OCTAVE_M_DIR ${OCTAVE_DEST_DIR} )
  297 else( OCTAVE_DEST_DIR )
  298  execute_process(COMMAND octave-config --oct-site-dir OUTPUT_VARIABLE OCTAVE_OCT_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
  299  set( OCTAVE_OCT_DIR "${OCTAVE_OCT_DIR}/pfstools" )
  300  execute_process(COMMAND octave-config --m-site-dir OUTPUT_VARIABLE OCTAVE_M_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
  301  set( OCTAVE_M_DIR "${OCTAVE_M_DIR}/pfstools" )
  302 endif( OCTAVE_DEST_DIR ) 
  303 
  304 if( WITH_Octave )
  305   
  306   find_program(MKOCTFILE mkoctfile)
  307   if(NOT MKOCTFILE)
  308     message(STATUS "Failed to find mkoctfile. Maybe liboctave-dev is not installed.")
  309   endif()
  310   if(MKOCTFILE)
  311     message(STATUS "mkoctfile found.")
  312   endif()
  313 
  314 endif( WITH_Octave )
  315 
  316 # ======== OpenCV ===========
  317 
  318 OPTION(WITH_OpenCV "Use OpenCV library requires for pfsalign" ON)
  319 
  320 if( WITH_OpenCV )
  321 
  322   find_package( OpenCV )
  323 
  324   if( NOT OpenCV_FOUND )
  325     message( "OpenCV library not found. 'pfsalign' will not be compiled" )
  326   else( NOT OpenCV_FOUND )
  327     message(STATUS "OpenCV library found.")  
  328   endif( NOT OpenCV_FOUND )
  329 
  330 endif( WITH_OpenCV )
  331 
  332 # ======== libexif ==========
  333 
  334 find_package(EXIF)
  335 if( NOT EXIF_FOUND )
  336     message( "EXIF library (libexif) not found. 'pfsalign' will not be compiled" )
  337 else( NOT EXIF_FOUND )
  338     message(STATUS "libexif library found.")  
  339 endif( NOT EXIF_FOUND )
  340 
  341 # ======== Config and sub dirs ===========
  342 
  343 set(PKG_DATADIR "${CMAKE_INSTALL_PREFIX}/share/pfstools")
  344 configure_file (
  345   "${PROJECT_SOURCE_DIR}/cmake_config.h.in"
  346   "${PROJECT_BINARY_DIR}/config.h"
  347   )
  348 
  349 add_subdirectory (src)