iFrom: Stefano Rivera Date: Sun, 24 Jan 2021 19:07:24 -0700 Subject: Build libstemmer as a shared library. Forwarded: https://github.com/snowballstem/snowball/pull/42 --- GNUmakefile | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index 8c50ec5..c9754be 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -65,6 +65,8 @@ ICONV = iconv STEMMING_DATA ?= ../snowball-data STEMMING_DATA_ABS := $(abspath $(STEMMING_DATA)) +STEMWORDS=LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) ./stemwords$(EXEEXT) + # Keep one in $(THIN_FACTOR) entries from gzipped vocabularies. THIN_FACTOR ?= 3 @@ -195,7 +197,7 @@ CPPFLAGS?= INCLUDES=-Iinclude -all: snowball$(EXEEXT) libstemmer.a stemwords$(EXEEXT) $(C_OTHER_SOURCES) $(C_OTHER_HEADERS) $(C_OTHER_OBJECTS) +all: snowball$(EXEEXT) libstemmer.a libstemmer.so stemwords$(EXEEXT) $(C_OTHER_SOURCES) $(C_OTHER_HEADERS) $(C_OTHER_OBJECTS) algorithms.mk: libstemmer/mkalgorithms.pl libstemmer/modules.txt libstemmer/mkalgorithms.pl algorithms.mk libstemmer/modules.txt @@ -203,7 +205,7 @@ algorithms.mk: libstemmer/mkalgorithms.pl libstemmer/modules.txt clean: rm -f $(COMPILER_OBJECTS) $(RUNTIME_OBJECTS) \ $(LIBSTEMMER_OBJECTS) $(LIBSTEMMER_UTF8_OBJECTS) $(STEMWORDS_OBJECTS) snowball$(EXEEXT) \ - libstemmer.a stemwords$(EXEEXT) \ + libstemmer.a libstemmer.so stemwords$(EXEEXT) \ libstemmer/modules.h \ libstemmer/modules_utf8.h \ $(C_LIB_SOURCES) $(C_LIB_HEADERS) $(C_LIB_OBJECTS) \ @@ -219,7 +221,7 @@ clean: libstemmer/mkinc.mak libstemmer/mkinc_utf8.mak \ libstemmer/libstemmer.c libstemmer/libstemmer_utf8.c \ algorithms.mk - rm -rf ada/obj dist + rm -rf ada/obj dist .shared -rmdir $(c_src_dir) -rmdir $(python_output_dir) -rmdir $(js_output_dir) @@ -257,17 +259,25 @@ libstemmer/libstemmer.o: libstemmer/modules.h $(C_LIB_HEADERS) libstemmer.a: libstemmer/libstemmer.o $(RUNTIME_OBJECTS) $(C_LIB_OBJECTS) $(AR) -cru $@ $^ +libstemmer.so: libstemmer/libstemmer.o $(RUNTIME_OBJECTS) $(C_LIB_OBJECTS) + $(CC) $(CFLAGS) -shared $(LDFLAGS) \ + -Wl,--version-script=debian/libstemmer.ver,-soname,libstemmer.so.0d \ + -o $@.0d.0.0 ${^:%=.shared/%} + ln -s $@.0d.0.0 $@.0d + ln -s $@.0d.0.0 $@ + $(AR) -crs ${@:.so=.a} $^ + examples/%.o: examples/%.c $(CC) $(CFLAGS) $(INCLUDES) $(CPPFLAGS) -c -o $@ $< -stemwords$(EXEEXT): $(STEMWORDS_OBJECTS) libstemmer.a - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ +stemwords$(EXEEXT): $(STEMWORDS_OBJECTS) libstemmer.so + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(STEMWORDS_OBJECTS) -L. -lstemmer tests/%.o: tests/%.c $(CC) $(CFLAGS) $(INCLUDES) $(CPPFLAGS) -c -o $@ $< -stemtest$(EXEEXT): $(STEMTEST_OBJECTS) libstemmer.a - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ +stemtest$(EXEEXT): $(STEMTEST_OBJECTS) libstemmer.so + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(STEMTEST_OBJECTS) -L. -lstemmer csharp_stemwords$(EXEEXT): $(CSHARP_STEMWORDS_SOURCES) $(CSHARP_RUNTIME_SOURCES) $(CSHARP_SOURCES) $(MCS) -unsafe -target:exe -out:$@ $(CSHARP_STEMWORDS_SOURCES) $(CSHARP_RUNTIME_SOURCES) $(CSHARP_SOURCES) @@ -295,7 +305,6 @@ $(c_src_dir)/stem_ISO_8859_2_%.c $(c_src_dir)/stem_ISO_8859_2_%.h: algorithms/%. ./snowball charsets/ISO-8859-2.sbl $< -o "$(c_src_dir)/stem_ISO_8859_2_$*" -eprefix $*_ISO_8859_2_ -r ../runtime $(c_src_dir)/stem_%.o: $(c_src_dir)/stem_%.c $(c_src_dir)/stem_%.h - $(CC) $(CFLAGS) $(INCLUDES) $(CPPFLAGS) -c -o $@ $< $(java_src_dir)/%Stemmer.java: algorithms/%.sbl snowball$(EXEEXT) @mkdir -p $(java_src_dir) @@ -509,7 +518,7 @@ dist_libstemmer_js: $(JS_SOURCES) $(COMMON_FILES) check: check_stemtest check_utf8 check_iso_8859_1 check_iso_8859_2 check_koi8r check_stemtest: stemtest$(EXEEXT) - ./stemtest + LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) ./stemtest check_utf8: $(libstemmer_algorithms:%=check_utf8_%) @@ -522,9 +531,9 @@ check_koi8r: $(KOI8_R_algorithms:%=check_koi8r_%) check_utf8_%: $(STEMMING_DATA)/% stemwords$(EXEEXT) @echo "Checking output of $* stemmer with UTF-8" @if test -f '$