diff -Nuar datrie.orig/autogen.sh datrie/autogen.sh
--- datrie.orig/autogen.sh 2007-10-16 15:39:58.000000000 +0700
+++ datrie/autogen.sh 2007-10-17 00:14:22.000000000 +0700
@@ -2,8 +2,8 @@
set -x
autoheader
-libtoolize --force
-aclocal
-automake --add-missing
-autoconf
+glibtoolize --force
+aclocal-1.6
+automake-1.6 --add-missing
+/usr/bin/autoconf
diff -Nuar datrie.orig/datrie/libdatrie.def datrie/datrie/
libdatrie.def
--- datrie.orig/datrie/libdatrie.def 2007-10-16 15:39:58.000000000
+0700
+++ datrie/datrie/libdatrie.def 2007-10-17 00:13:39.000000000 +0700
@@ -1,32 +1,31 @@
-EXPORTS
- sb_trie_open
- sb_trie_close
- sb_trie_save
- sb_trie_retrieve
- sb_trie_store
- sb_trie_delete
- sb_trie_enumerate
- sb_trie_root
- sb_trie_state_clone
- sb_trie_state_free
- sb_trie_state_rewind
- sb_trie_state_walk
- sb_trie_state_is_walkable
- sb_trie_state_is_terminal
- sb_trie_state_is_leaf
- sb_trie_state_get_data
- trie_open
- trie_close
- trie_save
- trie_retrieve
- trie_store
- trie_delete
- trie_enumerate
- trie_root
- trie_state_clone
- trie_state_free
- trie_state_rewind
- trie_state_walk
- trie_state_is_walkable
- trie_state_is_leaf
- trie_state_get_data
+sb_trie_open
+sb_trie_close
+sb_trie_save
+sb_trie_retrieve
+sb_trie_store
+sb_trie_delete
+sb_trie_enumerate
+sb_trie_root
+sb_trie_state_clone
+sb_trie_state_free
+sb_trie_state_rewind
+sb_trie_state_walk
+sb_trie_state_is_walkable
+sb_trie_state_is_terminal
+sb_trie_state_is_leaf
+sb_trie_state_get_data
+trie_open
+trie_close
+trie_save
+trie_retrieve
+trie_store
+trie_delete
+trie_enumerate
+trie_root
+trie_state_clone
+trie_state_free
+trie_state_rewind
+trie_state_walk
+trie_state_is_walkable
+trie_state_is_leaf
+trie_state_get_data
ส่วน libthai ก็แก้คล้ายกันก็ลงได้. น่าจะเป็นที่ version ของ libtool
และ automake. ส่วนอีกปัญหาหนึ่งคือ libthai ใช้ pkgconfig หา datrie ก็
หาเจอจริง แต่ว่าไม่ไปเปลี่ยนค่า LDFLAGS และ CFLAGS. ไม่แน่ใจว่าบน
platform อื่นเป็นอย่างไร.
> ด้วย patch แบบข้างล่าง ก็ลงได้. ถึงแม้ว่าจะงงๆว่าทำไมได้ก็ตาม.
ขอบคุณที่ช่วย debug บน mac ให้ครับ
> autoheader
> -libtoolize --force
> -aclocal
> -automake --add-missing
> -autoconf
> +glibtoolize --force
> +aclocal-1.6
> +automake-1.6 --add-missing
> +/usr/bin/autoconf
ไม่มี glibtoolize บน GNU/Linux
บน mac มีทั้งคู่แต่ต่างกัน หรือว่ามีแต่ glibtoolize ครับ?
automake --version นี่ ปกติได้รุ่นไหนครับ?
/me นึกถึง autogen script รุ่นเดิม ๆ ที่มีการเช็กยาวเหยียด..
อาจต้องกลับไปใช้แบบนั้น
auto* อื่นไม่ต้องใส่ path เต็ม แต่ autoconf ต้อง?
เอ แปลกดีที่ต้องเอา tab ออกถึงจะผ่าน โปรเจกต์อื่นเขาจะมีปัญหา
แบบนี้ไหมหนอ
> ส่วน libthai ก็แก้คล้ายกันก็ลงได้. น่าจะเป็นที่ version ของ libtool
> และ automake. ส่วนอีกปัญหาหนึ่งคือ libthai ใช้ pkgconfig หา datrie ก็
> หาเจอจริง แต่ว่าไม่ไปเปลี่ยนค่า LDFLAGS และ CFLAGS. ไม่แน่ใจว่าบน
> platform อื่นเป็นอย่างไร.
บน Debian:
$ pkg-config --libs libthai
-lthai -ldatrie
$ pkg-config --cflags libthai
$
(CFLAGS ไม่มีค่าอะไรเพราะติดตั้ง header ที่ /usr/include
เวลา include ตั้งใจให้ใช้รูปแบบ <thai/thailib.h> อยู่แล้ว)
เทพ.
--
Theppitak Karoonboonyanan
http://linux.thai.net/~thep/
ไม่มี glibtoolize บน GNU/Linux
บน mac มีทั้งคู่แต่ต่างกัน หรือว่ามีแต่ glibtoolize ครับ?
automake --version นี่ ปกติได้รุ่นไหนครับ?
/me นึกถึง autogen script รุ่นเดิม ๆ ที่มีการเช็กยาวเหยียด..
อาจต้องกลับไปใช้แบบนั้น
auto* อื่นไม่ต้องใส่ path เต็ม แต่ autoconf ต้อง?
เอ แปลกดีที่ต้องเอา tab ออกถึงจะผ่าน
> ส่วน libthai ก็แก้คล้ายกันก็ลงได้. น่าจะเป็นที่ version ของ libtool
> และ automake. ส่วนอีกปัญหาหนึ่งคือ libthai ใช้ pkgconfig หา datrie ก็
> หาเจอจริง แต่ว่าไม่ไปเปลี่ยนค่า LDFLAGS และ CFLAGS. ไม่แน่ใจว่าบน
> platform อื่นเป็นอย่างไร.
บน Debian:
$ pkg-config --libs libthai
-lthai -ldatrie
$ pkg-config --cflags libthai
> เมื่อ 10/17/07, Theppitak Karoonboonyanan <th...@linux.thai.net> เขียนว่า:
> > ไม่มี glibtoolize บน GNU/Linux
> > บน mac มีทั้งคู่แต่ต่างกัน หรือว่ามีแต่ glibtoolize ครับ?
>
> มีแต่ glibtoolize ครับ.
งั้นคงต้องเช็กหา [g]libtoolize ก่อนเรียก
> > automake --version นี่ ปกติได้รุ่นไหนครับ?
> > /me นึกถึง autogen script รุ่นเดิม ๆ ที่มีการเช็กยาวเหยียด..
> > อาจต้องกลับไปใช้แบบนั้น
>
> ถ้าไม่ลงเพิ่มบน Mac OS X 10.4.x เป็น version 1.6 ครับ.
แต่ว่าเรียก aclocal กับ automake เฉย ๆ ไม่ได้ ทั้ง ๆ ที่เป็นรุ่น 1.6
แต่ต้องเรียกในรูป aclocal-1.6, automake-1.6?
> > auto* อื่นไม่ต้องใส่ path เต็ม แต่ autoconf ต้อง?
>
> ผมลงไว้หลายตัวหนะครับ ต้องการบังคับให้ใช้ default ของ os x (
> เพราะว่าลองใช้ที่ลงจาก macports แล้ว build ไม่ผ่าน. ประมาณว่าเรียก
> ./configure แล้วนิ่งไปเลย ).
อืม.. บางคนอาจต้องการ autoconf ใน /usr/local/bin หรือใน /opt/bin
ก็แล้วแต่.. ทำไงดีหนอ ถึงจะครอบคลุมทุก case?
> > เอ แปลกดีที่ต้องเอา tab ออกถึงจะผ่าน
>
> เอา EXPORTS ออกด้วยอะครับ
ตกลงผมลองเอาออกแล้ว ยังคง build บน GNU/Linux ผ่าน
ก็เลย commit รายการนี้ไปแล้วครับ (เดี๋ยวแก้ libthai ตามด้วย)
(CFLAGS ไม่มีค่าอะไรเพราะติดตั้ง header ที่ /usr/include
เวลา include ตั้งใจให้ใช้รูปแบบ <thai/thailib.h> อยู่แล้ว)
> > (CFLAGS ไม่มีค่าอะไรเพราะติดตั้ง header ที่ /usr/include
> > เวลา include ตั้งใจให้ใช้รูปแบบ <thai/thailib.h> อยู่แล้ว)
>
> ผมลองในเครื่อง
>
> $ pkg-config --cflags datrie
> -I/Users/veesatayamas/include
> $
>
> ได้แบบนี้ครับ. แต่เวลา compile จริงๆ configure เหมือนไม่ได้แก้ CFLAGS ให้
ถ้าพูดถึงการ build libthai เนื่องจากมีแค่มอดูล thbrk เท่านั้นที่ใช้ datrie
ก็เลยกำหนด CFLAGS, LIBADD เฉพาะใน thbrk แทนที่จะกำหนดแบบรวมที่
configure นะครับ
ส่วนถ้าพูดถึง libthai.pc ที่ติดตั้งแล้ว ก็จะมีฟิลด์ Requires: datrie อยู่แล้ว
เพราะฉะนั้น เวลาติดตั้งแล้ว pkg-config ก็ควรจะไปเอา CFLAGS, LIBS
ของ datrie มารวมเมื่อ query libthai อยู่แล้ว
เช่น ผมลอง configure & build datrie แบบนี้:
$ ../configure --prefix=/home/thep/tmp/datrie
$ make install
และ configure & build libthai แบบนี้:
$ export PKG_CONFIG_PATH=/home/thep/tmp/datrie/lib/pkgconfig
$ pkg-config --cflags datrie
-I/home/thep/tmp/datrie/include
$ ../configure --prefix=/home/thep/tmp/libthai
$ make install
เมื่อ query libthai แบบนี้:
$ export PKG_CONFIG_PATH=/home/thep/tmp/libthai/lib/pkgconfig:$PKG_CONFIG_PATH
$ pkg-config --cflags libthai
-I/home/thep/tmp/libthai/include -I/home/thep/tmp/datrie/include
ก็ดูปกติดีนะครับ
แต่ว่าเรียก aclocal กับ automake เฉย ๆ ไม่ได้ ทั้ง ๆ ที่เป็นรุ่น 1.6
แต่ต้องเรียกในรูป aclocal-1.6, automake-1.6?
อืม.. บางคนอาจต้องการ autoconf ใน /usr/local/bin หรือใน /opt/bin
ก็แล้วแต่.. ทำไงดีหนอ ถึงจะครอบคลุมทุก case?
งั้นสรุปว่ารายการที่จำเป็นจริง ๆ ก็คือ การ detect [g]libtoolize แบบนี้?:
(ตรง DIE นี่ ผมเผื่อไว้ว่ามีการเช็กหลายรายการเฉย ๆ ก็ให้มันฟ้องให้ครบ
ก่อน exit แต่ถ้าเหลือแค่รายการเดียวก็อาจจะเอาออก)
Index: autogen.sh
===================================================================
RCS file: /home/cvs/software/datrie/autogen.sh,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 autogen.sh
--- autogen.sh 12 Aug 2006 15:58:04 -0000 1.1.1.1
+++ autogen.sh 17 Oct 2007 11:01:31 -0000
@@ -1,8 +1,25 @@
#!/bin/sh
set -x
+
+DIE=0
+
+# Detect [g]libtoolize
+if libtoolize --version > /dev/null 2>&1; then
+ LIBTOOLIZE=libtoolize
+elif glibtoolize --version > /dev/null 2>&1; then
+ LIBTOOLIZE=glibtoolize
+else
+ echo "**Error**: Missing 'libtoolize'"
+ DIE=1
+fi
+
+if [ $DIE -eq 1 ]; then
+ exit 1
+fi
+
autoheader
-libtoolize --force
+${LIBTOOLIZE} --force
aclocal
automake --add-missing
autoconf
> งั้นสรุปว่ารายการที่จำเป็นจริง ๆ ก็คือ การ detect [g]libtoolize แบบนี้?:
commit แล้วนะครับ ทั้ง datrie และ libthai