Gentoo coLinux で MinGW クロスコンパイル >> GIMPクロスコンパイルへの茨の道 >> さまざまな GIMP Plug-in のコンパイル

さまざまな GIMP Plug-in のコンパイル


Gimp で利用可能なプラグインのコンパイル方法です。事前にコンパイルに必要な環境が構築されており、 Gimp ライブラリなど必要なライブラリは ${XLOCAL} にインストールされていることを想定しています。用語はGIMPクロスコンパイルへの茨の道を参照してください。

一般的な方法

GIMPTOOL によるコンパイル
${XMINGW}/cross gimptool-2.0 --build source.c

フラグが必要なときは、
CFLAGS="-O2 -march=pentiumpro -mwindows -Wl,-s" ${XMINGW}/cross gimptool-2.0 --build source.c
configure && make

解凍して出来たソース ディレクトリの下にビルド ディレクトリを作成し configure && make します。まず configure --help してオプションを確認してください。必要であればオプションを追加し configure します。 configure がライブラリを見つけてくれないときは CFLAGS="-I${XLOCAL}/include -L${XLOCAL}/lib" などしてください。
mkdir build
cd build
${XMINGW}/cross-ppconfigure

行儀の悪い Makefile は CFLAGS や LDFLAGS に特別な値を設定しています。 Makefile を確認し必要なオプションを追加してください。
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro" LDFLAGS="-mwindows -s" >make.log 2>&1

make install は避けるべきです。 Makefile を読み ./.libs などからコンパイルされたファイルを取り出してください。

個別対応


具体的なコンパイル方法や注意点など。
flam3-2.6

配布元: flam3-2.6.tar.gz

expat が必要。 2.0.0 の例。
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --enable-shared
# 注意。Makefile のなかで CFLAGS を設定している。
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro -fexceptions -DHAVE_EXPAT_CONFIG_H" LDFLAGS=-s >make.log 2>&1
${XMINGW}/cross make install >install.log 2>&1
tar -jcf expat-2.0.0-bin.tar.bz2 bin
tar -jcf expat-dev-2.0.0.tar.bz2 include lib/*.a man

本体。 -l で zlib 等を見つけられないので LDFLAGS をつける。
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target LDFLAGS="-L${XLOCAL}/lib"
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro" LDFLAGS="-s -L${XLOCAL}/lib" >make.log 2>&1
${XMINGW}/cross make install >install.log 2>&1
tar -jcf flam3-2.6-bin.tar.bz2 bin
tar -jcf flam3-dev-2.6.tar.bz2 include lib

Focus Blur

配布元: fblur.c

コンパイル方法はソースのコメントに書かれています。 1.9 では次のように書かれています。
* CFLAGS="-O2 -DG_DISABLE_ASSERT -DFBLUR_PREVIEW=1 -DENABLE_NLS" \
* gimptool --install fblur-1.9.c

つまり、
CFLAGS="-O2 -DG_DISABLE_ASSERT -DFBLUR_PREVIEW=1 -DENABLE_NLS" ${XMINGW}/cross gimptool-2.0 --build fblur-1.9.c
mv fblur-1.9 fblur-1.9.exe


3系から要 Gimp 2.3 以降になりました。

${XLOCAL}/gimp24 は Gimp 2.4.x のライブラリを保存したパスです。
tar -jxf focusblur-3.1.3.tar.bz2
cd focusblur-3.1.3
mkdir build
cd build
EXTRA_PKG_CONFIG_PATH=${XLOCAL}/gimp24/lib/pkgconfig ${XMINGW}/cross-ppconfigure CFLAGS="-O2 -march=pentiumpro -pipe -fomit-frame-pointer -ffast-math -DUSE_SSE -I${XLOCAL}/gimp24/include -I${XLOCAL}/include" LDFLAGS="-L${XLOCAL}/gimp24/lib -L${XLOCAL}/lib -mwindows -Wl,-s" LIBS="-lgthread-2.0"

規定の検索パスに Gimp 2.2.x 系のライブラリが含まれている場合はインクルードファイルやライブラリの検索順序に注意します。

libgimp/stdplugins-intl.h が見つからない場合は Gimp のソースなどから取ってくる。保存場所は focusblur-3.1.3/build の下に libgimp ディレクトリを作って入れる。
${XMINGW}/cross make >make.log 2>&1
cp src/focusblur.exe focusblur-3.13.exe

focusblur-3.13.exe が作成されたプラグインです。

fftw3 ライブラリを使用すると処理が早くなります。 Focus Blur の cofigure は fftw3f を探しますが、これは fftw3 を configure --enable-float して作成されたライブラリです。 fftw3 のコンパイルについては Fourier Compose を参照してください。

Fourier Compose

配布元: fourier-compose-1.2.tar.bz2

fftw3 が必要です。 fftw3 のコンパイルは長時間かかります。

配布元: fftw-3.1.2.tar.gz (*)
(*) 配布元で Windows バイナリが用意されています。
tar -zxf fftw-3.1.2.tar.gz
cd fftw-3.1.2
mkdir target
mkdir build
cd build
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --enable-portable-binary --with-our-malloc16 --with-windows-f77-mangling --enable-shared --with-combined-threads --with-gcc-arch=pentiumpro
${XMINGW}/cross make >make.log 2>&1
${XMINGW}/cross make install >install.log 2>&1
cd ../target
tar -jcf fftw-3.1.2-bin.tar.bz2 bin/*.dll
tar -jcf fftw-dev-3.1.2.tar.bz2 include lib/*.a lib/pkgconfig share
tar -jcf fftw-3.1.2-tools.tar.bz2 bin/fftw-wisdom*

Fourier Compose のコンパイルには必要ありませんが、 Focus Blur などで fftw3f が必要になる場合は configure に --enable-float を付け fftw3f を作成します。上記ビルドののちに fftw3f を作成する場合は make clean したほうがいいかもしれません。

プラグイン本体。
CFLAGS="-DLOCALEDIR=gimp_locale_directory()" LDFLAGS="-mwindows -lfftw3 -s" ${XMINGW}/cross gimptool-2.0 --build fourier-compose.c
mv fourier-compose fourier-compose-1.2.exe

gimp-ace2 ( Adaptive Contrast Environment ) 0.6.7

配布元: gimp-ace-0.6.7.tar.gz
tar -zxf gimp-ace-0.6.7.tar.gz
cd gimp-ace-0.6.7
mkdir build
cd build/
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro" LDFLAGS="-mwindows -s" >make.log 2>&1

バイナリは src/gimp-ace.exe です。 make install するべきではありません。

GREYCstoration 0.2.0

GREYCstoration restore v1 を実装したプラグインです。

配布元: greycstoration-0.2.0.tar.bz2 (*)
(*) 配布元で Windows バイナリが用意されています。

src/main.cpp の nice 行をコメントアウトします。 nice はプロセスの優先順位を設定する関数ですが、 MinGW にはありません。
tar -jxf greycstoration-0.2.0.tar.bz2
mkdir build
cd build
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target
${XMINGW}/cross make CXXFLAGS="-O3 -march=pentiumpro -fno-math-errno -fno-trapping-math -ffinite-math-only -fno-signaling-nans" LDFLAGS="-mwindows -s" >make.log 2>&1

演算制度が落ちてよければ CFLAGS に -ffast-math オプションをつけます。

pentium 4 では -O3 -march=pentiumpro を -O2 -march=pentium4 -msse2 に変えるとそこそこ早くなります。

GREYCstoration for Gimp 1.1

GREYCstoration restore v2 を実装したプラグインです。

配布元: GREYCstoration-GIMP-2.5.2.zip (*)
     GREYCstoration (*)
     The CImg Library - C++ Template Image Processing Library
(*) 配布元で Windows バイナリが用意されています。

以下、 CImg 1.2.4 の場合。
tar -zxf CImg-1.2.4.tar.gz
cd CImg-1.2.4/examples
${XMINGW}/cross g++ -o greycstoration4gimp-1.1-CImg-1.24.exe greycstoration4gimp.cpp -O2 -march=pentiumpro -ffast-math -mwindows -I./plugins -Wl,-s -lm `${XMINGW}/cross gimptool-2.0 --cflags --libs`

greycstoration4gimp-1.1-CImg-1.24.exe が作成されたプラグインです。

Particle Deposition 1.3
Plasma2 2.11
Tileably Shrink 1.3
Turing Pattern 1.3
Waves of Chaos 1.2
Water Surface 2.1

配布元: particle-deposition-1.1.tar.bz2(アーカイブは 1.1 表記だが中身は 1.3 ) (*)
配布元: plasma2-2.11.tar.bz2
配布元: tileably-shrink-1.3.tar.bz2
配布元: turing-pattern-1.3.tar.bz2
配布元: waves-of-chaos-1.2.tar.bz2 (*)
配布元: wsurface-2.1.tar.bz2
(*) 配布元で Windows バイナリが用意されています。

6つとも同じ方法でコンパイルできます。 ${src} はそれぞれのソース名。
CFLAGS="-DLOCALEDIR=gimp_locale_directory() -O2 -march=pentiumpro -ffast-math" LDFLAGS="-mwindows -s" ${XMINGW}/cross gimptool-2.0 --build ${src}.c
mv ${src} ${src}.exe
Thin Line

配布元: thin_line.c

libgimp/stdplugins-intl.h をどこかで手に入れます。 gimp のソースか fourier-compose や particle-deposition などに付いてくるものを使用します。
CFLAGS='-DGETTEXT_PACKAGE="gimp20"' LDFLAGS="-mwindows -s" ${XMINGW}/cross gimptool-2.0 --build thin_line.c
mv thin_line thin_line.exe

Variable Blur

配布元: variable-blur.c

コンパイル方法はソースのコメントに書かれています。 2.0 では次のように書かれています。
* Install if by running "gimptool-2.0 --install variable-blur.c"

つまり、
${XMINGW}/cross gimptool-2.0 --build variable-blur.c
mv variable-blur variable-blur-2.0.exe

Voronoi 2.2

配布元: voronoi-2.2.tar.bz2 (*)
(*) 配布元で Windows バイナリが用意されています。

ふつうに make する。
${XMINGW}/cross make >make.log 2>&1

リンクでエラーになるのでパラメータを、出力ファイル、オブジェクト、ライブラリの順に置き換えてリンクします。つまり、
${XMINGW}/cross mingw32-gcc -o voronoi voronoi.o voronoi2d.o randgrid.o `${XLOCAL}/bin/gimptool-2.0 --libs` -lm
mv voronoi voronoi-2.2.exe

Wideangle 0.6.1

配布元: wideangle-0.6.1.tar.bz2 (*)
(*) 配布元で Windows バイナリが用意されています。
${XMINGW}/cross gimptool-2.0 --build wideangle.c
mv wideangle wideangle-0.61.exe

Bilateral 2 0.1.2

配布元: Bilateral
tar -zxf bilateral.2-0.1.2.tar.gz
cd bilateral.2-0.1.2
${XMINGW}/cross configure
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro -ffast-math -mwindows -DMINFLOAT=FLT_MIN -DBITSPERBYTE=CHAR_BIT" >make.log 2>&1

リンクでエラーになる。 mingw gcc はパラメータに順序があるので正しく入れ替えます。拡張子もつけます。
cd src
${XMINGW}/cross mingw32-gcc -O2 -march=pentiumpro -ffast-math -mwindows -DMINFLOAT=FLT_MIN -DBITSPERBYTE=CHAR_BIT -L${XLOCAL}/lib -o bilateral.exe bilateral.o -lgimpui-2.0 -lgimpwidgets-2.0 -lgimp-2.0 -lgimpcolor-2.0 -lgimpmath-2.0 -lgimpbase-2.0 -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv
Digital Camera Noise filter 0.64

配布元: Digital Camera Noise filter (*)
(*) 配布元で Windows バイナリが用意されています。
CFLAGS="-ffast-math -funroll-loops -O2 -march=pentiumpro" LDFLAGS="-mwindows -s" ${XMINGW}/cross gimptool-2.0 --build dcamnoise2-0.64.cpp
mv dcamnoise2-0.64 dcamnoise2-0.64.exe
Intelligum 1.3.3

配布元: Intelligum
unzip intelligum.zip
cd intelligum
${XMINGW}/cross-ppconfigure
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro -ffast-math" LDFLAGS="-mwindows -s" >make.log 2>&1
mv src/intelligum-1.33.exe .
Creates a Van Gogh effect (Line Integral Convolution) 2 0.9.1

配布元: Creates a Van Gogh effect (Line Integral Convolution)
tar -zxf lic-0.9.1.tar.gz
cd lic
${XMINGW}/cross make CFLAGS="`${XMINGW}/cross gimptool-2.0 --cflags` -O2 -march=pentiumpro -ffast-math" LDFLAGS="-mwindows `${XMINGW}/cross gimptool-2.0 --libs` -s"
mv lic2 lic2-0.91.exe
Light to Hight

配布元: Light to Hight
CFLAGS="-O2 -march=pentiumpro -ffast-math" LDFLAGS="-mwindows -s" ${XMINGW}/cross gimptool-2.0 --build ../l2height.c
mv l2height l2height.exe
Reforcus It 2.0.0

配布元: Reforcus It
tar -zxf refocus-it-2.0.0.tar.gz
cd refocus-it-2.0.0
mkdir build
cd build
${XMINGW}/cross-ppconfigure --without-cmdline CFLAGS="-L${XLOCAL}/lib"

config.h を書き換えます。 #define malloc rpl_malloc をコメントアウトするか削除します。
  /* Define to rpl_malloc if the replacement function should be used. */
-#define malloc rpl_malloc
+/* #define malloc rpl_malloc */

asprintf のために libiberty をリンクします。
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro -ffast-math" LIBS="-mwindows -liberty -s" >make.log 2>&1
mv gimp-plugin/gimp_plugin-refocus-it-2.00.exe .
ShapeIt v0.6 060619

配布元: ShapeIt
CFLAGS="-O2 -march=pentiumpro -ffast-math" LDFLAGS="-mwindows -s" ${XMINGW}/cross gimptool-2.0 --build ../shapeit.c
mv shapeit shapeit-0.6.exe
Stereograph Gimp 1.5

配布元: Stereograph Gimp
${XMINGW}/cross make GIMP_CFLAGS="`${XMINGW}/cross gimptool-2.0 --cflags` -O2 -march=pentiumpro -ffast-math" GIMP_LDFLAGS="-mwindows `${XMINGW}/cross gimptool-2.0 --libs` -s" >make.log 2>&1

リンクでエラーになる。 mingw gcc はパラメータに順序があるので入れ替えます。拡張子もつけます。
${XMINGW}/cross mingw32-gcc -o stereograph.exe stereograph.o renderer.o -L${XLOCAL}/lib -lgimpui-2.0 -lgimpwidgets-2.0 -lgimp-2.0 -lgimpcolor-2.0 -lgimpmath-2.0 -lgimpbase-2.0 -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv -s -lm
Crystalize 0.2

配布元: Crystalize

いろいろ問題があるのでパッチ。
--- Makefile.orig	2005-04-18 02:43:30.000000000 +0000
+++ Makefile	2006-08-18 14:56:53.000000000 +0000
@@ -1,13 +1,20 @@
 
 CXX        = gcc
 INCLUDE    = -I. 
-CXXFLAGS   = $(INCLUDE) -Wall -g -fexceptions -O3 `gimptool-2.0 --cflags`
-LDFLAGS    = -lm -lstdc++ -lc -L. `gimptool-2.0 --libs`
+CXXFLAGS   = -Wall -g
+CRYSTALIZE_CXXFLAGS=$(INCLUDE) -fexceptions
+GIMP_CXXFLAGS=$(shell gimptool-2.0 --cflags)
+ALL_CXXFLAGS =$(CXXFLAGS) $(CRYSTALIZE_CXXFLAGS) $(GIMP_CXXFLAGS)
+LDFLAGS    =
+CRYSTALIZE_LDFLAGS=-lm -lstdc++ -L.
+GIMP_LDFLAGS=$(shell gimptool-2.0 --libs)
+ALL_LDFLAGS=$(LDFLAGS) $(CRYSTALIZE_LDFLAGS) $(GIMP_LDFLAGS)
+WIN_EXT    =
 
 OBJSDIR = objs
 
 $(OBJSDIR)/%.o: %.cxx 
-	$(CXX) $(CXXFLAGS) -c $< -o $@
+	$(CXX) $(ALL_CXXFLAGS) -c $< -o $@
 
 
 # by default do nothing
@@ -19,7 +26,7 @@
 	rm -f $(OBJSDIR)/*.o *~
 
 
-PLUGIN_NAME = crystalize
+PLUGIN_NAME = crystalize$(WIN_EXT)
 
 OBJS = \
 	$(OBJSDIR)/SimpleDrawable.o \
@@ -28,7 +35,7 @@
 
 
 main: $(OBJS)
-	$(CXX) -o $(PLUGIN_NAME) $(OBJS) $(LDFLAGS) 
+	$(CXX) -o $(PLUGIN_NAME) $(OBJS) $(ALL_LDFLAGS) 
 
 install: main
 	gimptool-2.0 --install-bin $(PLUGIN_NAME)

パッチを適用しつつ make 。
tar -jxf crystalize.tbz
cd crystalize
patch -i ../crystalize.patch
${XMINGW}/cross make main CXXFLAGS="-Drandom=rand -O2 -march=pentiumpro -ffast-math" LDFLAGS="-mwindows -s" WIN_EXT=.exe >make.log 2>&1
Unsharp Mask2 0.12

配布元: unsharp2-0.12.c
CFLAGS="-O2 -march=pentiumpro -ffast-math" LDFLAGS="-mwindows -s" ${XMINGW}/cross gimptool-2.0 --build ../unsharp2-0.12.c
mv unsharp2-0.12 unsharp2-0.12.exe
UFRaw 0.11

配布元: ufraw-0.11.tar.gz
tar -zxf ufraw-0.11.tar.gz
cd ufraw-0.11
mkdir target
mkdir build
cd build
${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target --with-prefix=`pwd`/../target --enable-extras CFLAGS="-O2 -march=pentiumpro -I${XLOCAL}/include" LDFLAGS="-L${XLOCAL}/lib -Wl,-s"

configure が lcms を見つけてくれないときは次のパラメータを configure に追加する。
LCMS_CFLAGS="-I${XLOCAL}/include -DLCMS_DLL=1" LCMS_LIBS=-llcms --with-libexif
/opt/xmingw32/cross-make >make.log 2>&1
/opt/xmingw32/cross-make install >install.log 2>&1
tar -jcf ufraw-0.11-tools.tar.bz2 bin share/man
tar -jcf ufraw-0.11-plugin.tar.bz2 lib
Abr brush loader 1.0

配布元: abr.c

gimp 2.3.x 系専用らしい。 2.3.x ライブラリが ${XLOCAL}/gimp23 にあるものとしてコンパイルしています。
CFLAGS="-O2 -march=pentiumpro -I${XLOCAL}/gimp23/include" LDFLAGS="-L${XLOCAL}/gimp23/lib -Wl,-s" ${XMINGW}/cross gimptool-2.0 --build ../abr.c
mv abr abr-1.0.exe
Save for Web

配布元: save-for-web-0.19.0.tar.gz

gimp 2.3.x 系専用らしい。 2.3.x ライブラリが ${XLOCAL}/gimp23 にあるものとしてコンパイルしています。
tar -zxf save-for-web-0.19.0.tar.gz
cd save-for-web-0.19.0
mkdir target
mkdir build
cd build

iconv を見つけてくれないので -I -L を追加しています。
EXTRA_PKG_CONFIG_PATH=${XLOCAL}/gimp23/lib/pkgconfig ${XMINGW}/cross-ppconfigure --prefix=`pwd`/../target CFLAGS="-I${XLOCAL}/include" LDFLAGS="-L${XLOCAL}/lib"
${XMINGW}/cross make CFLAGS="-O2 -march=pentiumpro" LDFLAGS="-mwindow -Wl,-s" >make.log 2>&1

リンク

GIMP Plug-In Registry
http://registry.gimp.org/index.jsp
Gimp plug-ins
http://trific.ath.cx/software/gimp-plugins/
Fourier Compose, Particle Deposition, Plasma2, Self-SOM, Stereograph, Tileably Shrink, Turing Pattern, Voronoi, Water Surface 2, Waves of Chaos

更新履歴


2008/2/16sat 更新を反映するのを忘れていた。
2007/11/26mon fftw3 のコンパイル方法を書き換えた。もろもろ不備を修正した。
2007/11/25sun GREYCstoration for Gimp 1.1 のコンパイル手順を書き換えた。 Focus Blur 3 系のコンパイル手順を追記した。
2007/6/13wed UFRaw, Abr brush loader を記述。 GREYCstoration for Gimp 1.1 を項目を分けた(書き直したい)。
2007/3/31sat GREYCstoration に追記。 2.5.2 版に対応。
2007/2/23fri 記述の見直し。
2006/10/1sun Tileably Shrink、Unsharp Mask2 を記述。 fftw 3.1.2 に対応。体裁変更。
2006/9/24sat -mwindows 指定を CFLAGS から LDFLAGS に変更。
2006/8/19sat Crystalize を記述。
2006/7/8sat Bilateral、Digital Camera Noise filter、Intelligum、Creates a Van Gogh effect (Line Integral Convolution)、Light to Hight、Reforcus It、ShapeIt、Stereograph Gimp を記述。その他調整。
2006/5/30tue voronoi 2.2 を記述。
2006/3/28tue 個別対応を記述。
2006/3/9thu ページ作成。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

編集にはIDが必要です