SVN commit 957437 by cgilles:
libkdcraw from trunk : OpenMP support : Parallelized RAW demosaicing operations are now enabled by default. We check which GCC version is available to use right compilation/linking flags. If gcc version is bad, OpenMP support is disabled. Note to packagers : a CMake option is available to disable OPenMP support if necessary (default=OFF). Look in README for details. CCMAIL: [hidden email] CCMAIL: [hidden email] M +39 -12 CMakeLists.txt M +1 -0 NEWS M +5 -4 README M +3 -3 libkdcraw/kdcraw.cpp M +7 -2 libkdcraw/libraw_config.h.cmake --- trunk/KDE/kdegraphics/libs/libkdcraw/CMakeLists.txt #957436:957437 @@ -1,8 +1,8 @@ PROJECT(libkdcraw) -OPTION(ENABLE_OPENMP "Build with OpenMP support to use LibRaw parallel demosaicing operation" OFF) +OPTION(DISABLE_OPENMP "Build without LibRaw OpenMP support" OFF) -# ======================================================= +# ================================================================================================== # Information to update before to release this library. # Library version history: @@ -38,7 +38,7 @@ SET(DCRAW_LIB_SO_REV_VERSION "1") SET(DCRAW_LIB_SO_AGE_VERSION "0") -# ======================================================= +# ================================================================================================== # Set env. variables accordinly. SET(DCRAW_LIB_VERSION_STRING "${DCRAW_LIB_MAJOR_VERSION}.${DCRAW_LIB_MINOR_VERSION}.${DCRAW_LIB_PATCH_VERSION}${DCRAW_LIB_SUFFIX_VERSION}") @@ -46,12 +46,12 @@ SET(DCRAW_LIB_SO_VERSION_STRING "${DCRAW_LIB_SO_CUR_VERSION}.${DCRAW_LIB_SO_REV_VERSION}.${DCRAW_LIB_SO_AGE_VERSION}") -# ======================================================= +# ================================================================================================== # LibRAW source code -IF( NOT WIN32) +IF(NOT WIN32) FIND_LIBRARY(MATH_LIBRARY m) -ENDIF( NOT WIN32 ) +ENDIF(NOT WIN32) find_package(LCMS REQUIRED) @@ -64,17 +64,44 @@ # LibRaw use C++ exception. ADD_DEFINITIONS(${KDE4_ENABLE_EXCEPTIONS}) -# OpenMP support to use parallelized code. -IF(ENABLE_OPENMP) - ADD_DEFINITIONS(-fopenmp) - SET(OPENMP_LDFLAGS -lgomp) -ENDIF(ENABLE_OPENMP) - # Under Windows, use specific flag to compile. IF( WIN32 ) ADD_DEFINITIONS( -DDJGPP ) ENDIF( WIN32 ) +# ================================================================================================== +# get the gcc version + +# Check gcc version to see if OpenMP support is available to perform parallelized +# demosaicing with LibRaw + +IF (NOT DISABLE_OPENMP) + IF(CMAKE_COMPILER_IS_GNUCXX) + EXEC_PROGRAM(${CMAKE_CXX_COMPILER} ARGS --version OUTPUT_VARIABLE VERSION_GCC_INFO) + STRING(REGEX MATCH " [34]\\.[0-9]\\.[0-9]" GCC_VERSION "${VERSION_GCC_INFO}") + + # gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the patch level, handle this here: + IF(NOT GCC_VERSION) + STRING(REGEX REPLACE ".*\\(GCC\\).* ([34]\\.[0-9]) .*" "\\1.0" GCC_VERSION "${VERSION_GCC_INFO}") + ENDIF (NOT GCC_VERSION) + + #Only GCC >= 4.3.2 support properly OpenMP, especially with KIOSlave. + MACRO_ENSURE_VERSION("4.3.2" "${GCC_VERSION}" GCC_VERSION_GOOD) + + IF(GCC_VERSION_GOOD) + + MESSAGE(STATUS "GCC version (${GCC_VERSION} ) detected: we will use OpenMP extension with LibRaw.") + ADD_DEFINITIONS(-fopenmp) + SET(OPENMP_LDFLAGS -lgomp) + + ENDIF(GCC_VERSION_GOOD) + ENDIF(CMAKE_COMPILER_IS_GNUCXX) +ELSEIF(NOT DISABLE_OPENMP) + MESSAGE(STATUS "OpenMP extension support with LibRaw is disabled.") +ENDIF(NOT DISABLE_OPENMP) + +# ================================================================================================== + INCLUDE_DIRECTORIES( ${JPEG_INCLUDE_DIR} ${LCMS_INCLUDE_DIR} --- trunk/KDE/kdegraphics/libs/libkdcraw/NEWS #957436:957437 @@ -16,6 +16,7 @@ - New option to switch on/off auto brightness adjsutements. - Add support of Leica Raw files (RWL). - New method to see if Libraw use OpenMP shared library to perform parallel demosaicing. +- OpenMP support auto detection based on check of GCC version. 0.4.0 - Released with KDE 4.2.0 ------------------------------------------------------------------------ --- trunk/KDE/kdegraphics/libs/libkdcraw/README #957436:957437 @@ -22,14 +22,15 @@ libkde >= 4.0.x http://www.kde.org liblcms >= 1.14.x (used by libraw) http://www.littlecms.com libjpeg >= 6b (used by libraw) http://www.ijg.org +libgomp >= 4.3.x (used by libraw) http://gcc.gnu.org/projects/gomp +Note: OpenMP support is hightly recommended to speed-up RAW demosaicing +operations using parallelized code. + Optional: -"-DENABLE_OPENMP=yes" CMake option set on parallelized LibRaw code to -speed-up RAW demosaicing operations. -libgomp >= 4.3.x (used by libraw) http://gcc.gnu.org/projects/gomp +"-DDISABLE_OPENMP=yes" CMake option to disable OpenMP support with LibRaw. - -- INSTALL ------------------------------------------------------------ In order to compile, especially when QT3/Qt4 are installed at the same time, --- trunk/KDE/kdegraphics/libs/libkdcraw/libkdcraw/kdcraw.cpp #957436:957437 @@ -758,10 +758,10 @@ bool KDcraw::librawUseGomp() { -#ifdef ENABLE_OPENMP +#ifdef DISABLE_OPENMP + return false; +#else return true; -#else - return false; #endif } --- trunk/KDE/kdegraphics/libs/libkdcraw/libkdcraw/libraw_config.h.cmake #957436:957437 @@ -1,2 +1,7 @@ -/* Define to 1 if LibRaw use OpenMP shared library to perform parallel demosaicing */ -#cmakedefine ENABLE_OPENMP 1 +#ifndef LIBRAW_CONFIG_H +#define LIBRAW_CONFIG_H + +/* Define to 1 if LibRaw don't use OpenMP shared library to perform parallel demosaicing */ +#cmakedefine DISABLE_OPENMP 1 + +#endif /* LIBRAW_CONFIG_H */ _______________________________________________ Digikam-devel mailing list [hidden email] https://mail.kde.org/mailman/listinfo/digikam-devel |
Free forum by Nabble | Edit this page |