From 589b10be816c4264fc1663f4680e4d71861f1682 Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Fri, 5 Aug 2011 20:39:07 +0800 Subject: refine autoconf --- Makefile.data | 2 +- data/Makefile.am | 11 ++++------- utils/storage/gen_binary_files.cpp | 35 ++++++++++++++++++++++++++++++++--- 3 files changed, 37 insertions(+), 11 deletions(-) diff --git a/Makefile.data b/Makefile.data index 3cb9f4a..1fc61b6 100644 --- a/Makefile.data +++ b/Makefile.data @@ -2,7 +2,7 @@ clean: make -C data clean build: - make -C data build-data + make -C data rebuild: git reset --hard diff --git a/data/Makefile.am b/data/Makefile.am index a9dab88..c1ad4d8 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -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 - diff --git a/utils/storage/gen_binary_files.cpp b/utils/storage/gen_binary_files.cpp index 95374c1..14aa973 100644 --- a/utils/storage/gen_binary_files.cpp +++ b/utils/storage/gen_binary_files.cpp @@ -20,9 +20,32 @@ */ #include +#include #include "pinyin.h" +void print_help(){ + printf("Usage: gen_binary_files --table-dir \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); } -- cgit