Sunday, April 18, 2010

libXpm, libjpeg, libpng

Windows の Emacs (NTEmacs) のイメージサポートに必要な DLL を作る。

現実逃避メモ。

libXpm

#
# XPM
#

$ cd ~/src/
$ wget http://alpha.gnu.org/gnu/emacs/pretest/windows/libxpm-3.5.7-w32-src.zip
$ unzip libxpm-3.5.7-w32-src.zip
$ cd libXpm-3.5.7/src

# MinGW で
$ make
$ cp -pf libXpm.dll /c/emacs/23/bin

# 後始末
$ rm -f *.{dll,o}

または、

$ wget http://ftp.gnu.org/pub/gnu/emacs/windows/libxpm-3.5.8-w32-src.zip
$ mkdir libXpm-3.5.8
$ cd libXpm-3.5.8
$ unzip ../libxpm-3.5.8-w32-src.zip
$ cd src
$ rm -f *.{dll,o}

# MinGW で
$ make

# 後始末
$ rm -f *.{dll,o}

この libxpm-3.5.8-w32-src.zip はたまたま置いてあるだけかも。バイナリもはいってるし。

libjpeg

#
# JPEG
#
# Independent JPEG Group
# http://www.ijg.org/
#

$ wget http://www.ijg.org/files/jpegsrc.v8a.tar.gz
$ tar xzf jpegsrc.v8a.tar.gz
$ cd jpeg-8a/

# MinGW で
$ ./configure CFLAGS="-O2 -mno-cygwin -march=native"
$ make
$ cp -pf .libs/libjpeg-8.dll /c/emacs/23/bin/libjpeg.dll

# 後始末
$ make distclean

zlib

オフィシャルバイナリありがたや。

#
# zlib
#
# zlib Home Site
# http://www.zlib.net/
#

$ wget http://zlib.net/zlib124-dll.zip
$ unzip zlib124-dll.zip
$ cp -pf zlib-1.2.4/zlib1.dll /cygdrive/c/emacs/23/bin

追記@Fri May 14 02:13:19 2010
その後やっぱり自分で作ってみた。

libpng

#
#PNG
#
# libpng Home Page
# http://www.libpng.org/pub/png/libpng.html
#
$ wget ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.4.1.tar.gz
$ tar xzf libpng-1.4.1.tar.gz
$ cd libpng-1.4.1
$ mkdir include
$ cp png.h pngconf.h include/

# MinGW で
$ cp scripts/makefile.mingw Makefile
$ make CFLAGS="-Ic:/Users/yu-ji/home/src/zlib-1.2.4"
$ cp -pf libpng14.dll /c/emacs/23/bin/libpng.dll

# 後始末
$ make clean

giflib

息抜きに…じゃ済まなさそうなので、またいずれ。

libtiff

#
# TIFF
#
# LibTIFF - TIFF Library and Utilities
# http://www.remotesensing.org/libtiff/

$ wget http://download.osgeo.org/libtiff/tiff-3.9.2.tar.gz
$ tar xzf tiff-3.9.2.tar.gz
$ cd tiff-3.9.2

# MinGW で
$ ./configure CFLAGS="-O2 -mno-cygwin -march=native" \
 --with-zlib-include-dir=c:/Users/yu-ji/home/src/zlib-1.2.4 \
 --with-zlib-lib-dir=c:/Users/yu-ji/home/src/zlib-1.2.4 \
 --with-jpeg-include-dir=c:/Users/yu-ji/home/src/jpeg-8a \
 --with-jpeg-lib-dir=c:/Users/yu-ji/home/src/jpeg-8a
$ make
# 途中でこけるけど
$ cp -pf libtiff/.libs/libtiff-3.dll /c/emacs/23/bin/libtiff.dll

# やっぱダメ

DLL できたけど、なんか変。なのでまたこんど。

configure.bat

emacs/nt/configure.bat

configure.bat --with-gcc --no-cygwin --no-debug --prefix=C:/emacs/23 \
 --cflags -Ic:/Users/yu-ji/home/src/libXpm-3.5.8/include \
 --cflags -Ic:/Users/yu-ji/home/src/libXpm-3.5.8/src \
 --cflags -Ic:/Users/yu-ji/home/src/jpeg-8a \
 --cflags -Ic:/Users/yu-ji/home/src/zlib-1.2.4 \
 --cflags -Ic:/Users/yu-ji/home/src/libpng-1.4.1/include \
 --without-gif --without-tiff

目的

後先ですが…、セキュリティ絡みの修正がでても更新されない gnuwin32 の DLL を卒業したいと思った。

さっと息抜きに済ませるはずが、giflib が手強くって、gnuwin32 からソース落として patch を眺めたところで諦めた。libtiff も時間のあるときに延期。

gnuwin32 が更新されたら何も心配しないで済むんですが…。

No comments:

Post a Comment