From 32f44ebefc95c645f4464e8184077582b13bc109 Mon Sep 17 00:00:00 2001 From: nicolas Date: Mon, 20 Sep 2010 01:23:12 +0000 Subject: [PATCH] temporary version of LanczosFast --- Magick++/bin/Magick++-config | 2 +- PerlMagick/Makefile.PL | 8 +- config/configure.xml | 6 +- config/type-dejavu.xml | 84 ++++++++++---------- config/type-ghostscript.xml | 68 ++++++++--------- config/type.xml | 2 +- libtool | 28 +++---- magick/Magick-config | 2 +- magick/magick-config.h | 34 +++++---- magick/resize.c | 143 ++++++++++++++++++++++++++++------- magick/version.h | 2 +- wand/Wand-config | 2 +- 12 files changed, 237 insertions(+), 144 deletions(-) diff --git a/Magick++/bin/Magick++-config b/Magick++/bin/Magick++-config index 917a32b52..358177aa5 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 -ltiff -lfreetype -ljasper -ljpeg -lpng -lfontconfig -lXext -lXt -lSM -lICE -lX11 -lbz2 -lxml2 -lz -lm -lgomp -lpthread -lltdl" + echo "-L${libdir} -lMagick++ -lMagickWand -lMagickCore -llcms -ltiff -lfreetype -ljasper -ljpeg -lpng -ldjvulibre -lwmf -lwmflite -lXext -lXt -lSM -lICE -lX11 -lbz2 -pthread -lIlmImf -lz -lImath -lHalf -lIex -lIlmThread -lxml2 -lgvc -lgraph -lcdt -lz -lm -lgomp -lpthread -lltdl" ;; *) echo "${usage}" 1>&2 diff --git a/PerlMagick/Makefile.PL b/PerlMagick/Makefile.PL index 8178f18c2..af934ea3e 100644 --- a/PerlMagick/Makefile.PL +++ b/PerlMagick/Makefile.PL @@ -125,7 +125,7 @@ EOF # Compute test specification my $delegate_tests='t/*.t'; my $delegate; -foreach $delegate (qw/bzlib fontconfig freetype jpeg jng jp2 png tiff x11 xml zlib/) { +foreach $delegate (qw/bzlib djvu freetype gvc jpeg jng jp2 lcms openexr png tiff x11 xml wmf zlib/) { if ( -d "t/$delegate" ) { if ( defined($ENV{'DISPLAY'}) && ($^O ne 'MSWin32') ) { if ( defined $ENV{'DISPLAY'} ) { @@ -138,9 +138,9 @@ foreach $delegate (qw/bzlib fontconfig freetype jpeg jng jp2 png tiff x11 xml zl } # defaults for LIBS & INC & CCFLAGS params that we later pass to Writemakefile -my $INC_magick = '-I../ -I.. -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/freetype2 -I/usr/include/libxml2 -I"' . $Config{'usrinc'} . '/ImageMagick"'; +my $INC_magick = '-I../ -I.. -I/usr/include/graphviz -I/usr/include/freetype2 -I/usr/include/libxml2 -I"' . $Config{'usrinc'} . '/ImageMagick"'; my $LIBS_magick = '-L../magick/.libs -lMagickCore -lperl -lm'; -my $CCFLAGS_magick = "$Config{'ccflags'} -fopenmp -g -O2 -Wall -pthread"; +my $CCFLAGS_magick = "$Config{'ccflags'} -pthread -I/usr/include/OpenEXR -fopenmp -g -O2 -Wall -pthread"; my $LDFLAGS_magick = "-L../magick/.libs -lMagickCore $Config{'ldflags'} "; my $LDDLFLAGS_magick = "-L../magick/.libs -lMagickCore $Config{'lddlflags'} "; @@ -183,7 +183,7 @@ WriteMakefile #'CC' => 'gcc -std=gnu99 -std=gnu99', # C pre-processor flags (e.g. -I & -D options) - # 'CPPFLAGS' => "$Config{'cppflags'} -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/freetype2 -I/usr/include/libxml2", + # 'CPPFLAGS' => "$Config{'cppflags'} -I/usr/include/graphviz -I/usr/include/freetype2 -I/usr/include/libxml2", # C compiler flags (e.g. -O -g) 'CCFLAGS' => $CCFLAGS_magick, diff --git a/config/configure.xml b/config/configure.xml index 7ace2b852..5c60ef71b 100644 --- a/config/configure.xml +++ b/config/configure.xml @@ -15,18 +15,18 @@ - + - + - + diff --git a/config/type-dejavu.xml b/config/type-dejavu.xml index 88c0d7224..0db1fc8e9 100644 --- a/config/type-dejavu.xml +++ b/config/type-dejavu.xml @@ -17,46 +17,46 @@ ]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/type-ghostscript.xml b/config/type-ghostscript.xml index 0f5beb90f..d8d554b97 100644 --- a/config/type-ghostscript.xml +++ b/config/type-ghostscript.xml @@ -17,38 +17,38 @@ ]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/type.xml b/config/type.xml index 96866bf8f..ccf5d65dc 100644 --- a/config/type.xml +++ b/config/type.xml @@ -17,5 +17,5 @@ ]> - + diff --git a/libtool b/libtool index 5d5f1ecae..7ab2d74c9 100755 --- a/libtool +++ b/libtool @@ -1,8 +1,8 @@ -#! /bin/sh +#! /bin/bash # libtool - Provide generalized library-building support services. # Generated automatically by config.status (ImageMagick) 6.6.4-5 -# Libtool was configured on host magick.imagemagick.org: +# Libtool was configured on host nicolas-laptop: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, @@ -55,7 +55,7 @@ EGREP="/bin/grep -E" FGREP="/bin/grep -F" # Shell to use when invoking shell scripts. -SHELL="/bin/sh" +SHELL="/bin/bash" # An echo program that protects backslashes. ECHO="printf %s\\n" @@ -102,7 +102,7 @@ NM="/usr/bin/nm -B" LN_S="ln -s" # What is the maximum length of a command? -max_cmd_len=1966080 +max_cmd_len=1572864 # Object file suffix (normally "o"). objext=o @@ -144,7 +144,7 @@ lock_old_archive_extraction=no LTCC="gcc -std=gnu99 -std=gnu99" # LTCC compiler flags. -LTCFLAGS="-fopenmp -g -O2 -Wall -pthread" +LTCFLAGS="-pthread -I/usr/include/OpenEXR -fopenmp -g -O2 -Wall -pthread" # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'" @@ -243,10 +243,10 @@ finish_eval="" hardcode_into_libs=yes # Compile-time system search path for libraries. -sys_lib_search_path_spec="/usr/lib/gcc/x86_64-redhat-linux/4.5.1 /usr/lib64 /lib64 " +sys_lib_search_path_spec="/usr/lib/gcc/x86_64-linux-gnu/4.4.3 /usr/lib /lib /usr/lib/x86_64-linux-gnu " # Run-time system search path for libraries. -sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib /usr/lib64/atlas /usr/lib64/mysql /usr/lib64/qt-3.3/lib /usr/lib/wine/ /usr/lib64/wine/ /usr/lib64/xulrunner-1.9.2 " +sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib /usr/lib/mesa /usr/lib32/mesa /usr/lib/alsa-lib /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu " # Whether dlopen is supported. dlopen_support=yes @@ -255,7 +255,7 @@ dlopen_support=yes dlopen_self=yes # Whether dlopen of statically linked programs is supported. -dlopen_self_static=yes +dlopen_self_static=no # Commands to strip libraries. old_striplib="strip --strip-debug" @@ -288,7 +288,7 @@ wl="-Wl," pic_flag=" -fPIC -DPIC" # Compiler flag to prevent dynamic linking. -link_static_flag="" +link_static_flag="-static" # Does compiler simultaneously support -c and -o options? compiler_c_o="yes" @@ -9286,7 +9286,7 @@ wl="-Wl," pic_flag=" -fPIC -DPIC" # Compiler flag to prevent dynamic linking. -link_static_flag="" +link_static_flag="-static" # Does compiler simultaneously support -c and -o options? compiler_c_o="yes" @@ -9396,17 +9396,17 @@ file_list_spec="" hardcode_action=immediate # The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs="/usr/lib/gcc/x86_64-redhat-linux/4.5.1 /usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../lib64 /lib/../lib64 /usr/lib/../lib64 /usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../.." +compiler_lib_search_dirs="/usr/lib/gcc/x86_64-linux-gnu/4.4.3 /usr/lib/gcc/x86_64-linux-gnu/4.4.3 /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib /lib/../lib /usr/lib/../lib /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../.. /usr/lib/x86_64-linux-gnu" # Dependencies to place before and after the objects being linked to # create a shared library. -predep_objects="/usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/4.5.1/crtbeginS.o" -postdep_objects="/usr/lib/gcc/x86_64-redhat-linux/4.5.1/crtendS.o /usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../lib64/crtn.o" +predep_objects="/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.4.3/crtbeginS.o" +postdep_objects="/usr/lib/gcc/x86_64-linux-gnu/4.4.3/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crtn.o" predeps="" postdeps="-lstdc++ -lm -lgomp -lgcc_s -lpthread -lc -lgcc_s" # The library search path used internally by the compiler when linking # a shared library. -compiler_lib_search_path="-L/usr/lib/gcc/x86_64-redhat-linux/4.5.1 -L/usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../.." +compiler_lib_search_path="-L/usr/lib/gcc/x86_64-linux-gnu/4.4.3 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.3 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../.. -L/usr/lib/x86_64-linux-gnu" # ### END LIBTOOL TAG CONFIG: CXX diff --git a/magick/Magick-config b/magick/Magick-config index ed474943c..467f513f6 100755 --- a/magick/Magick-config +++ b/magick/Magick-config @@ -52,7 +52,7 @@ while test $# -gt 0; do echo '-L/usr/local/lib ' ;; --libs) - echo "-L${libdir} -lMagickCore -ltiff -lfreetype -ljasper -ljpeg -lpng -lfontconfig -lXext -lXt -lSM -lICE -lX11 -lbz2 -lxml2 -lz -lm -lgomp -lpthread -lltdl" + echo "-L${libdir} -lMagickCore -llcms -ltiff -lfreetype -ljasper -ljpeg -lpng -ldjvulibre -lwmf -lwmflite -lXext -lXt -lSM -lICE -lX11 -lbz2 -pthread -lIlmImf -lz -lImath -lHalf -lIex -lIlmThread -lxml2 -lgvc -lgraph -lcdt -lz -lm -lgomp -lpthread -lltdl" ;; *) echo "${usage}" 1>&2 diff --git a/magick/magick-config.h b/magick/magick-config.h index cfec31781..18b624c4e 100644 --- a/magick/magick-config.h +++ b/magick/magick-config.h @@ -20,9 +20,7 @@ #endif /* Define if you have CAIRO library */ -#ifndef MAGICKCORE_CAIRO_DELEGATE -#define MAGICKCORE_CAIRO_DELEGATE 1 -#endif +/* #undef CAIRO_DELEGATE */ /* permit enciphering and deciphering image pixels */ #ifndef MAGICKCORE_CIPHER_SUPPORT @@ -54,7 +52,9 @@ #endif /* Define if you have DJVU library */ -/* #undef DJVU_DELEGATE */ +#ifndef MAGICKCORE_DJVU_DELEGATE +#define MAGICKCORE_DJVU_DELEGATE 1 +#endif /* Directory where ImageMagick documents live. */ #ifndef MAGICKCORE_DOCUMENTATION_PATH @@ -89,9 +89,7 @@ #endif /* Define if you have FONTCONFIG library */ -#ifndef MAGICKCORE_FONTCONFIG_DELEGATE -#define MAGICKCORE_FONTCONFIG_DELEGATE 1 -#endif +/* #undef FONTCONFIG_DELEGATE */ /* Define if you have FlashPIX library */ /* #undef FPX_DELEGATE */ @@ -105,7 +103,9 @@ /* #undef GS_DELEGATE */ /* Define if you have GVC library */ -/* #undef GVC_DELEGATE */ +#ifndef MAGICKCORE_GVC_DELEGATE +#define MAGICKCORE_GVC_DELEGATE 1 +#endif /* Define to 1 if you have the `argz_add' function. */ #ifndef MAGICKCORE_HAVE_ARGZ_ADD @@ -394,7 +394,9 @@ /* #undef HAVE_LCMS2_LCMS2_H */ /* Define if you have the header file. */ -/* #undef HAVE_LCMS_H */ +#ifndef MAGICKCORE_HAVE_LCMS_H +#define MAGICKCORE_HAVE_LCMS_H 1 +#endif /* Define if you have the header file. */ /* #undef HAVE_LCMS_LCMS_H */ @@ -1069,7 +1071,9 @@ #endif /* Define if you have LCMS (v1.11 or later) library */ -/* #undef LCMS_DELEGATE */ +#ifndef MAGICKCORE_LCMS_DELEGATE +#define MAGICKCORE_LCMS_DELEGATE 1 +#endif /* Directory where architecture-dependent files live. */ #ifndef MAGICKCORE_LIBRARY_PATH @@ -1095,7 +1099,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/atlas:/usr/lib64/mysql:/usr/lib64/qt-3.3/lib:/usr/lib/wine/:/usr/lib64/wine/:/usr/lib64/xulrunner-1.9.2" +#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib/mesa:/usr/lib32/mesa:/usr/lib/alsa-lib:/usr/local/lib:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu" #endif /* The archive extension */ @@ -1136,7 +1140,9 @@ /* #undef NO_MINUS_C_MINUS_O */ /* Define if you have OPENEXR library */ -/* #undef OPENEXR_DELEGATE */ +#ifndef MAGICKCORE_OPENEXR_DELEGATE +#define MAGICKCORE_OPENEXR_DELEGATE 1 +#endif /* Define to the address where bug reports for this package should be sent. */ #ifndef MAGICKCORE_PACKAGE_BUGREPORT @@ -1334,7 +1340,9 @@ /* #undef WITH_DMALLOC */ /* Define if you have WMF library */ -/* #undef WMF_DELEGATE */ +#ifndef MAGICKCORE_WMF_DELEGATE +#define MAGICKCORE_WMF_DELEGATE 1 +#endif /* 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/magick/resize.c b/magick/resize.c index 73fbccdeb..af2a3ee83 100644 --- a/magick/resize.c +++ b/magick/resize.c @@ -310,6 +310,11 @@ static MagickRealType Lagrange(const MagickRealType x, static MagickRealType LanczosFast(const MagickRealType x, const ResizeFilter *resize_filter) { + /* + WARNING: + LanczosFast only outputs correct values if support is a + POSITIVE INTEGER. + */ /* Computing the Lanczos kernel directly from its definition @@ -330,42 +335,122 @@ static MagickRealType LanczosFast(const MagickRealType x, product-of-(fast)sincs formula. It also reverts to the usual if x>support (an expert-only possibility). + In order to eliminate the remaining trig call, high precision + "minimax" polynomial approximants are used. See the SincFast + comments for details. + Recursive formula for the product of the sine of an angle and the sine of a multiple of the angle discovered by Nicolas Robidoux (pending the discovery of an earlier discoverer) with the - assistance of Chantal Racette. + assistance of Chantal Racette. Approximations of cos(pi x) over + the interval [-1,1] constructed by Nicolas Robidoux and Chantal + Racette with funding from the Natural Sciences and Engineering + Research Council of Canada. */ - const MagickRealType support = resize_filter->support; - MagickRealType supportn = (MagickRealType) nearbyint((double) support); /* - We assume that support > 0. + We assume that support > 0 and x >= 0. */ - if ((supportn != support) || (x > support)) - return(SincFast(x,resize_filter)*SincFast(x/support,resize_filter)); + const MagickRealType support = resize_filter->support; + const MagickRealType xos = x/support; + const MagickRealType xx = xos*xos; + const MagickRealType pi2xx = (MagickPIL*MagickPIL)*x*x; + if (pi2xx == (MagickRealType) 0.0) + return(1.0); { - const MagickRealType pi2xx = (MagickRealType) ((MagickPIL*MagickPIL)*x*x); - if (pi2xx == (MagickRealType) 0.0) - return(1.0); - { - const MagickRealType c = cos((double) ((MagickPIL/support)*x)); - MagickRealType ss1 = 1.0-c*c; - if (support < 2.0) - return(1.0/pi2xx*ss1); + MagickRealType c; + if (xos>1.0) { - int n = (int) support - 2; - const MagickRealType cpc = c+c; - MagickRealType ss = ss1*cpc; - MagickRealType temp; - while (n--) - { - temp=ss; - ss=ss*cpc-ss1; - ss1=temp; - } - return(support/pi2xx*ss); - } - } - } + c = (MagickRealType) cos((double) (MagickPIL*xos)); + } + else + { +#if MAGICKCORE_QUANTUM_DEPTH <= 8 + /* + Maximum absolute relative error 1.8e-8 < 1/2^25. + */ + const MagickRealType c0 = + 3.99999992643142920211338040253631444680L; + const MagickRealType c1 = + -3.73920425616710679261196824501740620846L; + const MagickRealType c2 = + 1.27796557877584024350399820493902002676L; + const MagickRealType c3 = + -0.228809086406287387417934333009611810036L; + const MagickRealType c4 = + 0.249852427433082398345689482146854999198e-1L; + const MagickRealType c5 = + -0.160409656670710471758484348423047271587e-2L; + const MagickRealType p = + c0+xx*(c1+xx*(c2+xx*(c3+xx*(c4+xx*c5)))); +#elif MAGICKCORE_QUANTUM_DEPTH <= 16 + /* + Max. abs. rel. error 1.6e-12 < 1/2^39. + */ + const MagickRealType c0 = + 3.99999999999369507875837503656312381210L; + const MagickRealType c1 = + -3.73920880146193419336832119898956139180L; + const MagickRealType c2 = + 1.27801328321259865639714208686127144980L; + const MagickRealType c3 = + -0.228997785334013943051673846919195886430L; + const MagickRealType c4 = + 0.253305916511203326575532808976653777888e-1L; + const MagickRealType c5 = + -0.190290817480650124504465021065476218977e-2L; + const MagickRealType c6 = + 0.102686888764524439708563743432769693793e-3L; + const MagickRealType c7 = + -0.373344419226166828092642504009826630593e-5L; + const MagickRealType p = + c0+xx*(c1+xx*(c2+xx*(c3+xx*(c4+xx*(c5+xx*(c6+xx*c7)))))); +#else + /* + Max. abs. rel. error 6.1e-16 < 1/2^50 if computed with + "true" long doubles, 5.6e-17 < 1/2^53 if long doubles are + IEEE doubles. + */ + const MagickRealType c0 = + 3.99999999999999977653487536495855668234L; + const MagickRealType c1 = + -3.73920880217867665744995903521564136498L; + const MagickRealType c2 = + 1.27801329695096620491074078493372289128L; + const MagickRealType c3 = + -0.228997887594702717198738793082652705850L; + const MagickRealType c4 = + 0.253309709061066296103141786511835130143e-1L; + const MagickRealType c5 = + -0.190368124507833605338686581554879104404e-2L; + const MagickRealType c6 = + 0.103570244775199129899717783834074546882e-3L; + const MagickRealType c7 = + -0.426762781982225449936672742185198500277e-5L; + const MagickRealType c8 = + 0.137089756109639545966503908032203389025e-6L; + const MagickRealType c9 = + -0.321199312802383349700375491874286104564e-8L; + const MagickRealType p = + c0+xx*(c1+xx*(c2+xx*(c3+xx*(c4+xx*(c5+xx*(c6+xx*(c7+xx*(c8+xx*c9 + )))))))); +#endif + c = (0.25-xx)*p; + } + { + const MagickRealType cpc = c+c; + MagickRealType ss = 1.0-c*c; + MagickRealType n = support-1.0; + MagickRealType ss1 = 0.0; + MagickRealType temp; + while (n>0.0) + { + temp = ss; + ss = cpc*temp-ss1; + ss1 = temp; + n = n-1.0; + } + return(support/pi2xx*ss); + } } } static MagickRealType Quadratic(const MagickRealType x, @@ -752,7 +837,7 @@ MagickExport ResizeFilter *AcquireResizeFilter(const Image *image, { LanczosFastFilter, BoxFilter } /* Raw fast Lanczos (expert) */ }; /* - Table maping the filter/window from the above table to an actual + Table mapping the filter/window from the above table to an actual function. The default support size for that filter as a weighting function, the range to scale with to use that function as a sinc windowing function, (typ 1.0). diff --git a/magick/version.h b/magick/version.h index 93ea6dce5..b11eb621d 100644 --- a/magick/version.h +++ b/magick/version.h @@ -34,7 +34,7 @@ extern "C" { #define MagickLibInterface 4 #define MagickLibMinInterface 4 #define MagickReleaseDate "2010-09-19" -#define MagickChangeDate "20100919" +#define MagickChangeDate "20100920" #define MagickAuthoritativeURL "http://www.imagemagick.org" #define MagickFeatures "OpenMP " #define MagickHomeURL "file:///usr/local/share/doc/ImageMagick-6.6.4/index.html" diff --git a/wand/Wand-config b/wand/Wand-config index 47228f64d..cf9b4cee8 100755 --- a/wand/Wand-config +++ b/wand/Wand-config @@ -52,7 +52,7 @@ while test $# -gt 0; do echo '-L/usr/local/lib ' ;; --libs) - echo "-L${libdir} -lMagickWand -lMagickCore -ltiff -lfreetype -ljasper -ljpeg -lpng -lfontconfig -lXext -lXt -lSM -lICE -lX11 -lbz2 -lxml2 -lz -lm -lgomp -lpthread -lltdl" + echo "-L${libdir} -lMagickWand -lMagickCore -llcms -ltiff -lfreetype -ljasper -ljpeg -lpng -ldjvulibre -lwmf -lwmflite -lXext -lXt -lSM -lICE -lX11 -lbz2 -pthread -lIlmImf -lz -lImath -lHalf -lIex -lIlmThread -lxml2 -lgvc -lgraph -lcdt -lz -lm -lgomp -lpthread -lltdl" ;; *) echo "${usage}" 1>&2 -- 2.40.0