« July 2012 | Main | December 2012 »

2012.08.06

Gauche-CV mingw版コンパイルのメモ

最初は履歴とりながらやったけど力尽きたのでメモ垂れ流し。

大事なこと
・Python はコマンドラインから起動したときに2系が起動するようにすること。(Glibではまる)
・mingwの開発環境をインストールする時に、C++をチェックすること(デフォで入ってない)
・Cygwinのパスを外す。
下二つは重要で、これを忘れるとgccはmingw版なのにg++はcygwin版が起動したり、pkg-conifgが何をしているのかさっぱり分からなくなる。

libffiは素直に入る。pkg-configとglibの相互依存が壁になるが、ここからバイナリを入手するのが早い。
http://ingar.satgnu.net/devenv/mingw32/files/msys-pkg-config-0.26-static.zip
C:\MinGW\msys\1.0\bin ではなく、C:\MinGW\bin へコピーする。

Zlibはここを参考に。
http://kemovitra.blogspot.jp/2009/06/mingw-compiling-zlib.html

環境変数やらいろいろ設定した結果、最終的にbuildが通ったMakefile(C:\home\Gauche-CV\src\objdetect\Makefile)がこう。C:/home/computervision/OpenCV2.3/ がOpenCVが展開されているディレクトリ。c:/home/Gauche-CV/ が、Gauche-CVがインストールされているディレクトリ。

# General info
SHELL = /bin/sh
prefix = C:\MinGW\msys\1.0\local
exec_prefix = ${prefix}
bindir = ${exec_prefix}/bin
libdir = ${exec_prefix}/lib
datadir = ${datarootdir}
datarootdir = ${prefix}/share
srcdir = .


# These may be overridden by make invocators
DESTDIR =
GOSH = "/usr/local/bin/gosh"
GAUCHE_CONFIG = "/usr/local/bin/gauche-config"
GAUCHE_PACKAGE = "/usr/local/bin/gauche-package"
INSTALL = "/usr/local/bin/gauche-install" -C

# Other parameters

OPENCV_CFLAGS = -IC:/home/computervision/OpenCV2.3/build/include -LC:/home/computervision/OpenCV2.3/build/x86/vc10/bin
OPENCV_LIBS = -LC:/home/computervision/OpenCV2.3/build/x86/vc10/bin -lopencv_core230 -lopencv_highgui230 -lopencv_objdetect230 -lopencv_imgproc230
SOEXT = dll
OBJEXT = o
EXEEXT = .exe
COREDIR = -Lc:/home/Gauche-CV/src
LOCAL_PATHS = ""

OPENCV_VERSION=-DOPENCV2_3=1

core_LIBS=-lgauche_cv_core

# Module-specific stuff
PACKAGE = gauche-cv-objdetect

ARCHFILES = gauche_cv_objdetect.$(SOEXT)

TARGET = $(ARCHFILES)
GENERATED = *.o *.gen.* *lib.c gauche_cv_objdetect.$(SOEXT)
CONFIG_GENERATED = Makefile

GAUCHE_PKGINCDIR = "$(DESTDIR)${libdir}\gauche-0.9\site\include"
GAUCHE_PKGLIBDIR = "$(DESTDIR)${datadir}\gauche-0.9\site\lib"
GAUCHE_PKGARCHDIR = "$(DESTDIR)${libdir}\gauche-0.9\site\i686-pc-mingw32"


SCRIPTDIR = "c:/home/Gauche-CV/script"
OUTDIR = "c:/home/Gauche-CV/out"
GENSTUB = "c:/home/Gauche-CV/script/genstub.scm"

cv_TYPE_HDRS = ../core_type.gen.h \
../macro.stub.header \
../cv_struct_pre_include.h

cv_STUB_TYPE_HDRS = ../cv_type.stub.header \
../core_type.gen.stub.header

cv_objdetect_SRCS = gauche_cv_objdetect.c \
cv_objdetectlib.c \
objdetect_type.gen.c

all : $(TARGET)

#generate sutb -> c file
.SUFFIXES:.stub .c

.stub.c:
$(GOSH) -I$(SCRIPTDIR) $(GENSTUB) $<

cv_objdetectlib.c: $(cv_STUB_TYPE_HDRS) objdetect_type.gen.stub.header

#generate type file
objdetect_type.gen.c objdetect_type.gen.h objdetect_type.gen.stub.header: objdetect_type.scm
$(GOSH) -I$(SCRIPTDIR) objdetect_type.scm

#compile objdetect
gauche_cv_objdetect.$(SOEXT): $(cv_objdetect_SRCS) $(cv_TYPE_HDRS)
$(GAUCHE_PACKAGE) compile \
--local=$(LOCAL_PATHS) \
--verbose \
--cflags="$(OPENCV_CFLAGS) $(OPENCV_VERSION) " \
--ldflags="$(COREDIR)" \
--libs="$(OPENCV_LIBS) $(core_LIBS)" \
gauche_cv_objdetect \
$(cv_objdetect_SRCS)

check :
@rm -f test.log

#$(GOSH) -I. -I$(srcdir) $(srcdir)/test.scm > test.log

install :
$(INSTALL) -m 555 -T $(GAUCHE_PKGARCHDIR) $(ARCHFILES)

uninstall :
$(INSTALL) -U $(GAUCHE_PKGARCHDIR) $(ARCHFILES)

clean :
$(GAUCHE_PACKAGE) compile --clean $(cv_HIGHGUI_SRCS)
rm -rf $(TARGET) $(GENERATED) *~ test.log so_locations

distclean : clean
rm -rf $(CONFIG_GENERATED)

maintainer-clean : clean
rm -rf $(CONFIG_GENERATED) configure VERSION

collect :
@if test "$(ARCHFILES)" != ""; then (cp -p -u $(ARCHFILES) $(OUTDIR)/dll/); fi

| | Comments (1) | TrackBack (0)

« July 2012 | Main | December 2012 »