refine autoconf
authorPeng Wu <alexepico@gmail.com>
Fri, 5 Aug 2011 12:39:07 +0000 (20:39 +0800)
committerPeng Wu <alexepico@gmail.com>
Fri, 5 Aug 2011 12:44:36 +0000 (20:44 +0800)
Makefile.data
data/Makefile.am
utils/storage/gen_binary_files.cpp

index 3cb9f4a4607cbc322c9f6a815eb3b2e7b50c4396..1fc61b638fc7c0fb374f809c79c303a3486acbcf 100644 (file)
@@ -2,7 +2,7 @@ clean:
        make -C data clean
 
 build:
-       make -C data build-data
+       make -C data
 
 rebuild:
        git reset --hard
index a9dab88e1fe46cc6e7c17f3a4770f4e05e325101..c1ad4d819fefe7930d846452b857680aab02e5f4 100644 (file)
@@ -26,8 +26,7 @@ binary_model_data     = gb_char.bin gbk_char.bin \
 
 MAINTAINERCLEANFILES   = Makefile.in
 
-EXTRA_DIST             = $(textual_model_data) \
-                               $(binary_model_data)
+EXTRA_DIST             = $(textual_model_data)
 
 libpinyin_db_DATA      = $(binary_model_data)
 
@@ -35,9 +34,7 @@ libpinyin_dbdir               = $(pkgdatadir)/data
 
 CLEANFILES             = $(binary_model_data)
 
-build-data: $(textual_model_data)
+$(binary_model_data): $(textual_model_data)
        $(RM) $(binary_model_data)
-       cd ../utils/storage ; ./gen_binary_files ; cd -
-       cd ../utils/storage ; ./import_interpolation < ../../data/interpolation.text ; cd -
-
-$(binary_model_data): build-data
+       cd ../utils/storage ; ./gen_binary_files --table-dir $(abs_top_srcdir)/data; cd -
+       cd ../utils/storage ; ./import_interpolation < $(abs_top_srcdir)/data/interpolation.text ; cd -
index 95374c15d07ed870c9c987f663635a988df376a9..14aa97339bcc14b1ab1b3cd96aa14b55a2025821 100644 (file)
  */
 
 #include <stdio.h>
+#include <locale.h>
 #include "pinyin.h"
 
+void print_help(){
+    printf("Usage: gen_binary_files --table-dir <DIRNAME>\n");
+}
+
 int main(int argc, char * argv[]){
+    int i = 1;
+    const char * table_dir = "../../data";
+
+    setlocale(LC_ALL, "");
+    while ( i < argc ){
+        if ( strcmp("--help", argv[i]) == 0 ){
+            print_help();
+            exit(0);
+        } else if ( strcmp("--table-dir", argv[i]) == 0){
+            if ( ++i >= argc ){
+                print_help();
+                exit(EINVAL);
+            }
+            table_dir = argv[i];
+        }
+        ++i;
+    }
+
     /* generate pinyin index*/
     PinyinCustomSettings custom;
     PinyinLargeTable pinyinlargetable(&custom);
@@ -31,7 +54,10 @@ int main(int argc, char * argv[]){
     /* generate phrase index */
     FacadePhraseIndex phrase_index;
 
-    FILE * gbfile = fopen("../../data/gb_char.table", "r");
+    gchar * filename = g_build_filename(table_dir, "gb_char.table", NULL);
+    FILE * gbfile = fopen(filename, "r");
+    g_free(filename);
+
     if ( gbfile == NULL) {
        fprintf(stderr, "open gb_char.table failed!");
        exit(ENOENT);
@@ -45,9 +71,12 @@ int main(int argc, char * argv[]){
     phrase_index.load_text(1, gbfile);
     fclose(gbfile);
 
-    FILE * gbkfile = fopen("../../data/gbk_char.table","r");
+    filename = g_build_filename(table_dir, "gbk_char.table", NULL);
+    FILE * gbkfile = fopen(filename, "r");
+    g_free(filename);
+
     if ( gbkfile == NULL) {
-       fprintf(stderr, "open gb_char.table failed!");
+        fprintf(stderr, "open gbk_char.table failed!");
         exit(ENOENT);
     }