From 6487730e70c817e1e96a3ce8be0d60a3dd01ce93 Mon Sep 17 00:00:00 2001 From: cristy Date: Tue, 23 Aug 2011 19:10:31 +0000 Subject: [PATCH] --- Magick++/bin/Magick++-config | 2 +- MagickCore/magick-config.h | 27 ++- MagickCore/version.h | 2 +- config/configure.xml | 6 +- configure | 331 ++++++++++++++++++++++++++++++++--- configure.ac | 113 +++++++++--- 6 files changed, 414 insertions(+), 67 deletions(-) diff --git a/Magick++/bin/Magick++-config b/Magick++/bin/Magick++-config index 7204d6f62..0d719f875 100755 --- a/Magick++/bin/Magick++-config +++ b/Magick++/bin/Magick++-config @@ -55,7 +55,7 @@ while test $# -gt 0; do echo '-L/usr/local/lib ' ;; --libs) - echo "-L${libdir} -lMagick++ -lMagickWand -lMagickCore -llcms2 -ltiff -lfreetype -ljasper -ljpeg -lpng -ldjvulibre -lfontconfig -lXext -lXt -lSM -lICE -lX11 -llzma -lbz2 -lxml2 -lgvc -lgraph -lcdt -lz -lm -lgomp -lpthread -lltdl" + echo "-L${libdir} -lMagick++ -lMagickWand -lMagickCore -llcms2 -ltiff -lfreetype -ljasper -ljpeg -lpng12 -ldjvulibre -lfontconfig -lXext -lXt -lSM -lICE -lX11 -llzma -lbz2 -lxml2 -lgvc -lgraph -lcdt -lz -lm -lgomp -lpthread -lltdl" ;; *) echo "${usage}" 1>&2 diff --git a/MagickCore/magick-config.h b/MagickCore/magick-config.h index efe979e75..d0dd86310 100644 --- a/MagickCore/magick-config.h +++ b/MagickCore/magick-config.h @@ -12,9 +12,7 @@ /* #undef AUTOTRACE_DELEGATE */ /* Define if coders and filters are to be built as modules. */ -#ifndef MAGICKCORE_BUILD_MODULES -#define MAGICKCORE_BUILD_MODULES 1 -#endif +/* #undef BUILD_MODULES */ /* Define if you have the bzip2 library */ #ifndef MAGICKCORE_BZLIB_DELEGATE @@ -80,9 +78,7 @@ #endif /* Define if you have FFTW library */ -#ifndef MAGICKCORE_FFTW_DELEGATE -#define MAGICKCORE_FFTW_DELEGATE 1 -#endif +/* #undef FFTW_DELEGATE */ /* Location of filter modules */ #ifndef MAGICKCORE_FILTER_PATH @@ -1161,6 +1157,9 @@ /* Define if you have umem memory allocation library */ /* #undef HasUMEM */ +/* Define if you have wmflite library */ +/* #undef HasWMFlite */ + /* ImageMagick is formally installed under prefix */ #ifndef MAGICKCORE_INSTALLED_SUPPORT #define MAGICKCORE_INSTALLED_SUPPORT 1 @@ -1208,7 +1207,7 @@ /* Define to the system default library search path. */ #ifndef MAGICKCORE_LT_DLSEARCH_PATH -#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/R/lib:/usr/lib64/alliance/lib:/usr/lib64/atlas:/opt/modules/pkg/intel/f77/10.0.025/lib:/usr/lib64/kicad:/usr/lib/llvm:/usr/lib64/llvm:/usr/local/lib:/usr/lib64/mpich2/lib/:/usr/lib64/mysql:/usr/lib64/octave/3.4.2:/usr/lib64/openmotif:/usr/lib64/qt-3.3/lib:/usr/lib64/tcl8.5/tclx8.4:/usr/lib/wine/:/usr/lib64/wine/:/usr/lib64/xulrunner-2" +#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/atlas:/usr/lib/llvm:/usr/lib64/llvm:/usr/lib64/mysql:/usr/lib64/qt-3.3/lib:/usr/lib64/tcl8.5/tclx8.4:/usr/lib64/tcl8.5:/usr/lib/wine/:/usr/lib64/wine/:/usr/lib64/xulrunner-2" #endif /* The archive extension */ @@ -1259,9 +1258,7 @@ /* #undef NO_MINUS_C_MINUS_O */ /* Define if you have OPENEXR library */ -#ifndef MAGICKCORE_OPENEXR_DELEGATE -#define MAGICKCORE_OPENEXR_DELEGATE 1 -#endif +/* #undef OPENEXR_DELEGATE */ /* Define to the address where bug reports for this package should be sent. */ #ifndef MAGICKCORE_PACKAGE_BUGREPORT @@ -1316,9 +1313,7 @@ #endif /* Define if you have RSVG library */ -#ifndef MAGICKCORE_RSVG_DELEGATE -#define MAGICKCORE_RSVG_DELEGATE 1 -#endif +/* #undef RSVG_DELEGATE */ /* Define to the type of arg 1 for `select'. */ #ifndef MAGICKCORE_SELECT_TYPE_ARG1 @@ -1463,10 +1458,8 @@ /* Define if using the dmalloc debugging malloc package */ /* #undef WITH_DMALLOC */ -/* Define if you have WMF library */ -#ifndef MAGICKCORE_WMF_DELEGATE -#define MAGICKCORE_WMF_DELEGATE 1 -#endif +/* Define if you have wmf library */ +/* #undef WMF_DELEGATE */ /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ diff --git a/MagickCore/version.h b/MagickCore/version.h index e893ff71d..8a0410db2 100644 --- a/MagickCore/version.h +++ b/MagickCore/version.h @@ -27,7 +27,7 @@ extern "C" { */ #define MagickPackageName "ImageMagick" #define MagickCopyright "Copyright (C) 1999-2011 ImageMagick Studio LLC" -#define MagickSVNRevision "exported" +#define MagickSVNRevision "5041" #define MagickLibVersion 0x700 #define MagickLibVersionText "7.0.0" #define MagickLibVersionNumber 5,0,0 diff --git a/config/configure.xml b/config/configure.xml index 66ea3cb69..5d1e58fa7 100644 --- a/config/configure.xml +++ b/config/configure.xml @@ -10,8 +10,8 @@ - - + + @@ -28,7 +28,7 @@ - + diff --git a/configure b/configure index 9ab875bf3..3274ec001 100755 --- a/configure +++ b/configure @@ -3584,7 +3584,7 @@ MAGICK_LIBRARY_CURRENT_MIN=`expr $MAGICK_LIBRARY_CURRENT - $MAGICK_LIBRARY_AGE` MAGICK_LIBRARY_VERSION_INFO=$MAGICK_LIBRARY_CURRENT:$MAGICK_LIBRARY_REVISION:$MAGICK_LIBRARY_AGE -MAGICK_SVN_REVISION=5035 +MAGICK_SVN_REVISION=5041 @@ -30039,16 +30039,17 @@ fi have_png='no' PNG_LIBS='' + if test "$with_png" != 'no'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: -------------------------------------------------------------" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: -------------------------------------------------------------" >&5 $as_echo "-------------------------------------------------------------" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PNG" >&5 -$as_echo_n "checking for PNG... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PNG support " >&5 +$as_echo_n "checking for PNG support ... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } - failed=0 - passed=0 - ac_fn_c_check_header_mongrel "$LINENO" "png.h" "ac_cv_header_png_h" "$ac_includes_default" + failed=0 + passed=0 + ac_fn_c_check_header_mongrel "$LINENO" "png.h" "ac_cv_header_png_h" "$ac_includes_default" if test "x$ac_cv_header_png_h" = xyes; then : passed=`expr $passed + 1` else @@ -30056,7 +30057,284 @@ else fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_get_io_ptr in -lpng" >&5 + + if test $passed -gt 0; then + for var in 5 4 2 '' ; do + if test "x${var}" == 'x' ; then + pnglib='png' + else + pnglib="png1${var}" + fi + if test "$have_png" == 'no' ; then + +# Test for compatible LIBPNG library + failed=0 + passed=0 + if test "$with_png" == 'yes' -o "$with_png" == "libpng1${var}" ; then + if test "${pnglib}" != 'png' ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBPNG1${var} support " >&5 +$as_echo_n "checking for LIBPNG1${var} support ... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include + +int +main () +{ + +#if PNG_LIBPNG_VER_MINOR != ${var} +#error LIBPNG library must be version 1${var}! +Kaboom, Kaboom +#endif +return 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_libpng_ok='yes' +else + ac_cv_libpng_ok='no' +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test "$ac_cv_libpng_ok" = 'yes' ; then + passed=`expr $passed + 1` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + failed=`expr $failed + 1` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + else + passed=`expr $passed + 1` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi + fi + + if test $passed -gt 0 -a $failed -le 0; then + if test "1${var}" = '15' ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_get_io_ptr in -lpng15" >&5 +$as_echo_n "checking for png_get_io_ptr in -lpng15... " >&6; } +if ${ac_cv_lib_png15_png_get_io_ptr+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpng15 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char png_get_io_ptr (); +int +main () +{ +return png_get_io_ptr (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_png15_png_get_io_ptr=yes +else + ac_cv_lib_png15_png_get_io_ptr=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png15_png_get_io_ptr" >&5 +$as_echo "$ac_cv_lib_png15_png_get_io_ptr" >&6; } +if test "x$ac_cv_lib_png15_png_get_io_ptr" = xyes; then : + passed=`expr $passed + 1` +else + failed=`expr $failed + 1` +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_longjmp in -lpng15" >&5 +$as_echo_n "checking for png_longjmp in -lpng15... " >&6; } +if ${ac_cv_lib_png15_png_longjmp+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpng15 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char png_longjmp (); +int +main () +{ +return png_longjmp (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_png15_png_longjmp=yes +else + ac_cv_lib_png15_png_longjmp=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png15_png_longjmp" >&5 +$as_echo "$ac_cv_lib_png15_png_longjmp" >&6; } +if test "x$ac_cv_lib_png15_png_longjmp" = xyes; then : + passed=`expr $passed + 1` +else + failed=`expr $failed + 1` +fi + + fi + if test "1${var}" = '14' ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_get_io_ptr in -lpng14" >&5 +$as_echo_n "checking for png_get_io_ptr in -lpng14... " >&6; } +if ${ac_cv_lib_png14_png_get_io_ptr+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpng14 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char png_get_io_ptr (); +int +main () +{ +return png_get_io_ptr (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_png14_png_get_io_ptr=yes +else + ac_cv_lib_png14_png_get_io_ptr=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png14_png_get_io_ptr" >&5 +$as_echo "$ac_cv_lib_png14_png_get_io_ptr" >&6; } +if test "x$ac_cv_lib_png14_png_get_io_ptr" = xyes; then : + passed=`expr $passed + 1` +else + failed=`expr $failed + 1` +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_get_io_state in -lpng14" >&5 +$as_echo_n "checking for png_get_io_state in -lpng14... " >&6; } +if ${ac_cv_lib_png14_png_get_io_state+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpng14 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char png_get_io_state (); +int +main () +{ +return png_get_io_state (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_png14_png_get_io_state=yes +else + ac_cv_lib_png14_png_get_io_state=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png14_png_get_io_state" >&5 +$as_echo "$ac_cv_lib_png14_png_get_io_state" >&6; } +if test "x$ac_cv_lib_png14_png_get_io_state" = xyes; then : + passed=`expr $passed + 1` +else + failed=`expr $failed + 1` +fi + + fi + if test "1${var}" = '12' ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_get_io_ptr in -lpng12" >&5 +$as_echo_n "checking for png_get_io_ptr in -lpng12... " >&6; } +if ${ac_cv_lib_png12_png_get_io_ptr+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpng12 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char png_get_io_ptr (); +int +main () +{ +return png_get_io_ptr (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_png12_png_get_io_ptr=yes +else + ac_cv_lib_png12_png_get_io_ptr=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png12_png_get_io_ptr" >&5 +$as_echo "$ac_cv_lib_png12_png_get_io_ptr" >&6; } +if test "x$ac_cv_lib_png12_png_get_io_ptr" = xyes; then : + passed=`expr $passed + 1` +else + failed=`expr $failed + 1` +fi + + fi + if test "1${var}" = '1' ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_get_io_ptr in -lpng" >&5 $as_echo_n "checking for png_get_io_ptr in -lpng... " >&6; } if ${ac_cv_lib_png_png_get_io_ptr+:} false; then : $as_echo_n "(cached) " >&6 @@ -30098,28 +30376,33 @@ else failed=`expr $failed + 1` fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if PNG package is complete" >&5 -$as_echo_n "checking if PNG package is complete... " >&6; } - if test $passed -gt 0; then - if test $failed -gt 0; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no -- some components failed test" >&5 + fi + if test $passed -gt 0 -a $failed -le 0 ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ${pnglib} package is complete" >&5 +$as_echo_n "checking if ${pnglib} package is complete... " >&6; } + if test $passed -gt 0 ; then + if test $failed -gt 0 ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no -- some components failed test" >&5 $as_echo "no -- some components failed test" >&6; } - have_png='no (failed tests)' - else - PNG_LIBS='-lpng' - LIBS="$PNG_LIBS $LIBS" + have_png='no (failed tests)' + else + PNG_LIBS="-l${pnglib}" + LIBS="$PNG_LIBS $LIBS" $as_echo "#define PNG_DELEGATE 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - have_png='yes' + have_png='yes' + fi + fi + fi fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi + fi + done + fi fi + if test "$have_png" = 'yes'; then PNG_DELEGATE_TRUE= PNG_DELEGATE_FALSE='#' diff --git a/configure.ac b/configure.ac index b70ef37a9..61e6e8438 100755 --- a/configure.ac +++ b/configure.ac @@ -2413,30 +2413,101 @@ fi have_png='no' PNG_LIBS='' + if test "$with_png" != 'no'; then - AC_MSG_RESULT([-------------------------------------------------------------]) - AC_MSG_CHECKING([for PNG]) - AC_MSG_RESULT([]) - failed=0 - passed=0 - AC_CHECK_HEADER(png.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`,) - AC_CHECK_LIB(png,png_get_io_ptr,passed=`expr $passed + 1`,failed=`expr $failed + 1`,) - AC_MSG_CHECKING([if PNG package is complete]) - if test $passed -gt 0; then - if test $failed -gt 0; then - AC_MSG_RESULT([no -- some components failed test]) - have_png='no (failed tests)' - else - PNG_LIBS='-lpng' - LIBS="$PNG_LIBS $LIBS" - AC_DEFINE(PNG_DELEGATE,1,Define if you have PNG library) - AC_MSG_RESULT([yes]) - have_png='yes' + AC_MSG_RESULT([-------------------------------------------------------------]) + AC_MSG_CHECKING(for PNG support ) + AC_MSG_RESULT() + failed=0 + passed=0 + AC_CHECK_HEADER(png.h,passed=`expr $passed + 1`, failed=`expr $failed + 1`,) + + if test $passed -gt 0; then + for var in 5 4 2 '' ; do + if test "x${var}" == 'x' ; then + pnglib='png' + else + pnglib="png1${var}" + fi + if test "$have_png" == 'no' ; then + +# Test for compatible LIBPNG library + failed=0 + passed=0 + if test "$with_png" == 'yes' -o "$with_png" == "libpng1${var}" ; then + if test "${pnglib}" != 'png' ; then + AC_MSG_CHECKING(for LIBPNG1${var} support ) + AC_TRY_COMPILE( +#include +#include +#include +, +changequote(<<, >>)dnl +<< +#if PNG_LIBPNG_VER_MINOR != ${var} +#error LIBPNG library must be version 1${var}! +Kaboom, Kaboom +#endif +return 0; +>>, + changequote([, ])dnl + ac_cv_libpng_ok='yes', + ac_cv_libpng_ok='no') + if test "$ac_cv_libpng_ok" = 'yes' ; then + passed=`expr $passed + 1` + AC_MSG_RESULT(yes) + else + failed=`expr $failed + 1` + AC_MSG_RESULT(no) + fi + else + passed=`expr $passed + 1` + AC_MSG_RESULT(yes) + fi fi - else - AC_MSG_RESULT([no]) - fi + + if test $passed -gt 0 -a $failed -le 0; then + if test "1${var}" = '15' ; then + AC_CHECK_LIB(png15,png_get_io_ptr,passed=`expr $passed + 1`, + failed=`expr $failed + 1`,) + AC_CHECK_LIB(png15,png_longjmp,passed=`expr $passed + 1`, + failed=`expr $failed + 1`,) + fi + if test "1${var}" = '14' ; then + AC_CHECK_LIB(png14,png_get_io_ptr,passed=`expr $passed + 1`, + failed=`expr $failed + 1`,) + AC_CHECK_LIB(png14,png_get_io_state,passed=`expr $passed + 1`, + failed=`expr $failed + 1`,) + fi + if test "1${var}" = '12' ; then + AC_CHECK_LIB(png12,png_get_io_ptr,passed=`expr $passed + 1`, + failed=`expr $failed + 1`,) + fi + if test "1${var}" = '1' ; then + AC_CHECK_LIB(png,png_get_io_ptr,passed=`expr $passed + 1`, + failed=`expr $failed + 1`,) + fi + if test $passed -gt 0 -a $failed -le 0 ; then + AC_MSG_CHECKING(if ${pnglib} package is complete) + if test $passed -gt 0 ; then + if test $failed -gt 0 ; then + AC_MSG_RESULT(no -- some components failed test) + have_png='no (failed tests)' + else + PNG_LIBS="-l${pnglib}" + LIBS="$PNG_LIBS $LIBS" + AC_DEFINE(PNG_DELEGATE,1,Define if you have PNG library) + AC_MSG_RESULT(yes) + have_png='yes' + fi + fi + fi + fi + fi + done + fi fi + AM_CONDITIONAL(PNG_DELEGATE,test "$have_png" = 'yes') AC_SUBST(PNG_LIBS) -- 2.40.0