2009-11-01T10:41:17の更新内容

linux/tips/highlight/index.wiki.txt

current previous
5,9 5,9
 
**ソースからのビルド・インストール
**ソースからのビルド・インストール
 
ソースのダウンロード、展開。
ソースのダウンロード、展開。
 
#code(sh){{
#code(sh){{
~
wget http://www.andre-simon.de/zip/highlight-2.13.tar.bz2
wget http://www.andre-simon.de/zip/highlight-2.9.tar.bz2
~
tar -xvf highlight-2.13.tar.bz2
tar -xvf highlight-2.9.tar.bz2
~
cd highlight-2.13/
cd highlight-2.9/
 
}}
}}
 

        

        
 
パッケージにはconfigureは含まれておらず、標準では/usrにインストールされる。 /usr以外にインストールする場合は、以下のようにmakefileを直接編集する。
パッケージにはconfigureは含まれておらず、標準では/usrにインストールされる。 /usr以外にインストールする場合は、以下のようにmakefileを直接編集する。
51,91 51,53
 
#code(diff,makefileに追記する内容){{
#code(diff,makefileに追記する内容){{
 
2a3
2a3
 
> CSC=gmcs
> CSC=gmcs
~
25a27,33
21a23,29
 
> csharp:
> csharp:
 
> 	${MAKE} -C ../../ -f ./makefile
> 	${MAKE} -C ../../ -f ./makefile
~
> 	swig -c++ -csharp -o highlight_wrap.cpp -dllimport libhighlight -namespace highlight highlight.i
> 	swig -c++ -csharp -o highlight_wrap.cpp -dllimport highlight.so -namespace highlight highlight.i
 
> 	${CXX} -c highlight_wrap.cpp -I${HL_SRC}
> 	${CXX} -c highlight_wrap.cpp -I${HL_SRC}
~
> 	${CXX} -shared -s highlight_wrap.o  -L${HL_SRC} -lhighlight -o libhighlight.so
> 	${CXX} -shared -s highlight_wrap.o  -L${HL_SRC} -lhighlight -o highlight.so
~
> 	patch -d . -p0 < highlight.patch
> 	patch RegexDef.cs < RegexDef.patch
 
> 	${CSC} /t:library /out:highlight.dll *.cs
> 	${CSC} /t:library /out:highlight.dll *.cs
~
34c42
28a37,38
~
< .PHONY: python python-clean perl perl-clean clean
> csharp-clean:
-
> 	rm -f highlight.so highlight_wrap.cpp highlight.dll *.o *.cs
-
30c40
-
< .PHONY: python python-clean perl perl-clean
 
---
---
~
> .PHONY: python python-clean perl perl-clean clean csharp csharp-clean
> .PHONY: python python-clean perl perl-clean csharp csharp-clean
 
}}
}}
 

        

        
 
ここでswigに渡しているオプションの詳細は次の通り。
ここでswigに渡しているオプションの詳細は次の通り。
~
:-dllimport libhighlight|参照するライブラリのファイル名(DllImport属性で指定される)をlibhighlightに指定
:-dllimport highlight.so|参照するライブラリのファイル名(DllImport属性で指定される)をhighlight.soに指定
 
:-namespace highlight|生成されるアセンブリのルート名前空間をhighlightに指定
:-namespace highlight|生成されるアセンブリのルート名前空間をhighlightに指定
 

        

        
~
また、swigが生成するRegexDef.cs, ReGroup.cs, RegexElement.csをそのままコンパイルするとエラーとなってしまうので、修正する必要がある。 上記のmakefile内で自動的にソースを修正するようにしてあるので、以下の内容でパッチを作成しておく。
また、swigが生成するRegexDef.csをそのままコンパイルするとエラーとなってしまうので、修正する必要がある。 makefile内で自動的にソースを修正するようにしてあるので、以下の内容でパッチを作成しておく。
~
#code(diff,highlight.patch){{
#code(diff,RegexDef.patch){{
~
Index: RegexDef.cs
51,53c51
~
===================================================================
<       SWIGTYPE_p_string ret = new SWIGTYPE_p_string(highlightPINVOKE.RegexDef_reString_get(swigCPtr), true);
~
--- RegexDef.cs.org	2009-11-01 08:43:58.000000000 +0900
<       if;
~
+++ RegexDef.cs	2009-11-01 08:44:51.000000000 +0900
<       return ret;
~
@@ -48,9 +48,7 @@
---
~
       if;
>       return highlightPINVOKE.RegexDef_reString_get(swigCPtr);
+
     } 
+
     get {
+
-      SWIGTYPE_p_string ret = new SWIGTYPE_p_string(highlightPINVOKE.RegexDef_reString_get(swigCPtr), true);
+
-      if;
+
-      return ret;
+
+      return highlightPINVOKE.RegexDef_reString_get(swigCPtr);
+
     } 
+
   }
+

          
+
Index: ReGroup.cs
+
===================================================================
+
--- ReGroup.cs.org	2009-11-01 08:43:58.000000000 +0900
+
+++ ReGroup.cs	2009-11-01 08:44:51.000000000 +0900
+
@@ -86,9 +86,7 @@
+
       if;
+
     } 
+
     get {
+
-      SWIGTYPE_p_string ret = new SWIGTYPE_p_string(highlightPINVOKE.ReGroup_name_get(swigCPtr), true);
+
-      if;
+
-      return ret;
+
+      return highlightPINVOKE.ReGroup_name_get(swigCPtr);
+
     } 
+
   }
+

          
+
Index: RegexElement.cs
+
===================================================================
+
--- RegexElement.cs.org	2009-11-01 08:43:58.000000000 +0900
+
+++ RegexElement.cs	2009-11-01 08:44:51.000000000 +0900
+
@@ -112,9 +112,7 @@
+
       if;
+
     } 
+
     get {
+
-      SWIGTYPE_p_string ret = new SWIGTYPE_p_string(highlightPINVOKE.RegexElement_langName_get(swigCPtr), true);
+
-      if;
+
-      return ret;
+
+      return highlightPINVOKE.RegexElement_langName_get(swigCPtr);
+
     } 
+
   }
+

          
 
}}
}}
 

        

        
 
makefileへの追記が済んだらmake csharpでmakeする。
makefileへの追記が済んだらmake csharpでmakeする。
 
#prompt{{
#prompt{{
 
$ make csharp
$ make csharp
 
make -C ../../ -f ./makefile
make -C ../../ -f ./makefile
~
make[1]: ディレクトリ `/srv/files/build/highlight/highlight-2.13' に入ります
make[1]: ディレクトリ `/srv/shared/build/highlight/highlight-2.9' に入ります
 
make -C ./src -f ./makefile HL_DATA_DIR=/usr/local/share/highlight/ HL_CONFIG_DIR=/etc/highlight/
make -C ./src -f ./makefile HL_DATA_DIR=/usr/local/share/highlight/ HL_CONFIG_DIR=/etc/highlight/
~
make[2]: ディレクトリ `/srv/files/build/highlight/highlight-2.13/src' に入ります
make[2]: ディレクトリ `/srv/shared/build/highlight/highlight-2.9/src' に入ります
 
c++  -o highlight arg_parser.o cmdlineoptions.o main.o help.o -L. -lhighlight
c++  -o highlight arg_parser.o cmdlineoptions.o main.o help.o -L. -lhighlight
~
make[2]: ディレクトリ `/srv/files/build/highlight/highlight-2.13/src' から出ます
make[2]: ディレクトリ `/srv/shared/build/highlight/highlight-2.9/src' から出ます
~
make[1]: ディレクトリ `/srv/files/build/highlight/highlight-2.13' から出ます
make[1]: ディレクトリ `/srv/shared/build/highlight/highlight-2.9' から出ます
~
swig -c++ -csharp -o highlight_wrap.cpp -dllimport libhighlight -namespace highlight highlight.i
swig -c++ -csharp -o highlight_wrap.cpp -dllimport highlight.so -namespace highlight highlight.i
~
../../src/core/codegenerator.h:86: Warning(503): Can't wrap 'operator =' unless renamed to a valid identifier.
../../src/core/codegenerator.h:70: Warning(503): Can't wrap 'operator =' unless renamed to a valid identifier.
 
g++ -c highlight_wrap.cpp -I../../src/
g++ -c highlight_wrap.cpp -I../../src/
~
g++ -shared -s highlight_wrap.o  -L../../src/ -lhighlight -o libhighlight.so
g++ -shared -s highlight_wrap.o  -L../../src/ -lhighlight -o highlight.so
~
patch -b -d . -p0 < highlight.patch
patch RegexDef.cs < RegexDef.patch
 
patching file RegexDef.cs
patching file RegexDef.cs
+
patching file ReGroup.cs
+
patching file RegexElement.cs
 
gmcs /t:library /out:highlight.dll *.cs
gmcs /t:library /out:highlight.dll *.cs
 
}}
}}
 

        

        
209,7 171,7
 
</pre>
</pre>
 
</body>
</body>
 
</html>
</html>
~
<!--HTML generated by highlight 2.13, http://www.andre-simon.de/-->
<!--HTML generated by highlight 2.9, http://www.andre-simon.de/-->
 
}}
}}
 

        

        
 
-参考
-参考