Compilation de Imagemagick pour MacOSX
Introduction
Les applications SCENARI utilisent l'utilitaire convert de la suite ImageMagick pour toute manipulation d'image.
Nous incluons une version statique de cet exécutable qu'il est nécessaire de compiler à la main.
| Conseil |
|---|
Cette procédure à été élaboré sur MacOSX 10.5 Intel et MacOSX 10.4 PPC. Elle à été inspiré du PDF écrit par Kevin Dale datant de 2002. La version actuelle de ImageMagick nécessite une étape suplémentaire (voir ci-après). |
| Attention ! |
|---|
La difficulté de la production d'un convert statique réside dans le fait que le make standard de Imagemagick, même configurée pour produire des binaires statiques, ne marche pas: les binaires produits, bien que visiblement contenant toutes les dépendances (au vue de leurs taille) sont toujours liés aux versions dynamiques des dépendances. |
Prérequis
- Les sources de Imagemagick ( http://www.imagemagick.org/script/download.php)
- Les sources des delegates bzip2, freetype, jasper, jbigkit, libjpeg, libpng, libxml2, tiff, zlib
- L'environnement de développement MacOSX
Procédure
Compilation de la version Intel
Dans cet exemple nous allons travailler dans le préfix /Users/sam/dev/im/bui
- Compilez bzip2:
$ cd bzip2-1.0.3 $ make install PREFIX=/Users/sam/dev/im/bui $ ranlib /Users/sam/dev/im/bui/lib/libbz2.a
- Compilez zlib:
$ cd ../zlib-1.2.3 $ ./configure --prefix=/Users/sam/dev/im/bui $ make $ make install
- Compilez libjpeg:
$ cd ../libjpeg-6b $ ./configure --prefix=/Users/sam/dev/im/bui $ make $ make install $ ranlib /Users/sam/dev/im/bui/lib/libjpeg.a
- Compilez jbigkit dans un préfix quelqonque:
$ cd ../jbigkit $ make $ cp libjbig/libjbig.a /Users/sam/dev/im/bui/lib $ cp libjbig/jbig.h /Users/sam/dev/im/bui/include $ ranlib /Users/sam/dev/im/bui/lib/libjbig.a
- Compilez jasper:
$ cd ../jasper-1.900.1 $ ./configure --enable-static --disable-shared --prefix=/Users/sam/dev/im/bui $ make $ make install
- Compilez tiff:
$ cd ../tiff-3.8.2 $ ./configure --prefix=/Users/sam/dev/im/bui $ make $ make install $ ranlib /Users/sam/dev/im/bui/lib/libtiff.a
- Compilez libpng:
$ cd ../libpng-1.2.26 $ cp scripts/makefile.darwin makefile $ ./configure --prefix=/Users/sam/dev/im/bui $ make $ make install
- Compilez libxml2:
$ cd ../libxml2-2.6.29 $ ./configure --prefix=/Users/sam/dev/im/bui --without-iconv $ make $ make install
- Compilez freetype:
$ cd ../freetype-2.3.5 $ ./configure --prefix=/Users/sam/dev/im/bui $ make $ make install
- Configurez ImageMagick:
$ cd ../ImageMagick-6.4.0 $ ./configure --prefix=/Users/sam/dev/im/bui --enable-delegate-build CPPFLAGS='-I/Users/sam/dev/im/bui/include' LDFLAGS='-L/Users/sam/dev/im/bui/lib' --disable-shared --without-modules --without-x --without-openexr --without-wmf --without-perl --with-xml --without-gvc --without-magick-plus-plus
- Lancez et "installez" ImageMagick:
$ make $ make install
- Relancez "à la main" la compilation de l'utilitaire convert:
$ gcc -o convert utilities/convert.o wand/.libs/libMagickWand.a magick/.libs/libMagickCore.a /Users/ui/IM/prefix/lib/libbz2.a /Users/ui/IM/prefix/lib/libtiff.a /Users/ui/IM/prefix/lib/libpng.a /Users/ui/IM/prefix/lib/libz.a /Users/ui/IM/prefix/lib/libz.a /Users/ui/IM/prefix/lib/libjpeg.a /Users/ui/IM/prefix/lib/libjasper.a /Users/ui/IM/prefix/lib/libjbig.a /Users/ui/IM/prefix/lib/libxml2.a /Users/ui/IM/prefix/lib/libfreetype.a
- Le binaire convert aussi obtenu est enfin réellement statique par rapport aux delegates.
Compilation de la version PPC
Pour obtenir la version PPC de convert, il faut, sur un Mac PPC, renouveler la procédure ci-dessus à l'identique.
Production de la version Universal de convert
Une fois que les version Intel et PPC de convert sont compiler il faut les joindre afin de créer une version Universal:
- récupérer les deux convert en les nommant convert_intel et convert_ppc
- utiliser l'utilitaire lipo:
$ lipo convert_intel convert_ppc -create -output convert
- C'est fini ! Le nouveau fichier convert est une version Universal.