一身上の都合からswigとOMake

そこに至る変節は割愛。とりあえず涙目。

%.iから%.cxxを生成して本体にリンクさせたいんだけど、そもそもOMakeはcxxをC/C++コードとして認識していない。
OMakerootからopenされてるbuild/C(/usr/lib/omake/build/C.om)を見ると、どうやらCXX_EXTSが拡張子の定義っぽい。
どっかでCXX_EXTSに追加すりゃええなウェハハーとかいう安直な考えは、その後に続く数行のコードで吹き飛ぶ。
CXX_EXTSを回してなにやら設定しているようです。
・・・しかたないからループを分解して、cxx用のをOMakerootに追加。

if $(equal $(OSTYPE), Win32)
    .SCANNER: scan-cxx-%.cxx: %.cxx /.PHONY/CGeneratedFilesTarget :value: $(digest-in-path-optional $(INCLUDES), $&)
        $(CXX) $(CXXFLAGS) $(PREFIXED_INCLUDES) /Zs /showIncludes $< |& builtin-cc-depend $<
    # Include default rule for backwards-compatibility
    .SCANNER: %$(EXT_OBJ): %.cxx /.PHONY/CGeneratedFilesTarget :value: $(digest-in-path-optional $(INCLUDES), $&)
        $(CXX) $(CXXFLAGS) $(PREFIXED_INCLUDES) /Zs /showIncludes $< |& builtin-cc-depend $<
    export
else
    .SCANNER: scan-cxx-%.cxx: %.cxx /.PHONY/CGeneratedFilesTarget :value: $(digest-in-path-optional $(INCLUDES), $&)
        $(CXX) $(CXXFLAGS) $(PREFIXED_INCLUDES) -MM $<

    # Include default rule for backwards-compatibility
    .SCANNER: %$(EXT_OBJ): %.cxx /.PHONY/CGeneratedFilesTarget :value: $(digest-in-path-optional $(INCLUDES), $&)
        $(CXX) $(CXXFLAGS) $(PREFIXED_INCLUDES) -MM $<
    export

次は、swig -MMで帰ってくる依存関係ルールを追加。
gcc -MMの真似

.SCANNER: scan-i-%.i: %.i /.PHONY/CGeneratedFilesTarget :value: $(digest-in-path-optional $(INCLUDES), $&)
    swig -MM $<
export

で、iから依存関係を噛ませて、cxxを生成

%_wrap.cxx: %.i %.cpp :scanner: scan-i-%.i
    swig -c++ -python -o $@ $<
export

>2009/06/05 %.cppに依存する必要はないように思えてきたので修正

%_wrap.cxx: %.i :scanner: scan-i-%.i
    swig -c++ -python -o $@ $<
export

>hogehoge.i

%module hoge
%{
#include "hoge.hpp"
%}

%include "hoge.hpp"
% swig -MM hogehoge.i
hogehoge_wrap.c: \
 hogehoge.i \
 hoge.hpp
%

これで、exe/libの依存関係にhoge_wrap.cxxを追加してやると、hoge.iとhoge.hにさらに依存して、swighoge_wrap.cxxを生成して云々をしてくれる
・・・と思うよ。