diff -ur gsm-1.0-pl13.orig/Makefile gsm-1.0-pl13/Makefile --- gsm-1.0-pl13.orig/Makefile 2006-04-26 22:14:26.000000000 +0300 +++ gsm-1.0-pl13/Makefile 2009-09-08 14:50:02.000000000 +0300 @@ -96,7 +96,7 @@ # Other tools SHELL = /bin/sh -LN = ln +LN = ln -s BASENAME = basename AR = ar ARFLAGS = cr @@ -140,6 +140,7 @@ # Targets LIBGSM = $(LIB)/libgsm.a +LIBGSMSO= $(LIB)/libgsm.so TOAST = $(BIN)/toast UNTOAST = $(BIN)/untoast @@ -203,24 +204,43 @@ # Object files -GSM_OBJECTS = $(SRC)/add.o \ - $(SRC)/code.o \ - $(SRC)/debug.o \ - $(SRC)/decode.o \ - $(SRC)/long_term.o \ - $(SRC)/lpc.o \ - $(SRC)/preprocess.o \ - $(SRC)/rpe.o \ - $(SRC)/gsm_destroy.o \ - $(SRC)/gsm_decode.o \ - $(SRC)/gsm_encode.o \ - $(SRC)/gsm_explode.o \ - $(SRC)/gsm_implode.o \ - $(SRC)/gsm_create.o \ - $(SRC)/gsm_print.o \ - $(SRC)/gsm_option.o \ - $(SRC)/short_term.o \ - $(SRC)/table.o +STATIC_GSM_OBJECTS = $(SRC)/add.o \ + $(SRC)/code.o \ + $(SRC)/debug.o \ + $(SRC)/decode.o \ + $(SRC)/long_term.o \ + $(SRC)/lpc.o \ + $(SRC)/preprocess.o \ + $(SRC)/rpe.o \ + $(SRC)/gsm_destroy.o \ + $(SRC)/gsm_decode.o \ + $(SRC)/gsm_encode.o \ + $(SRC)/gsm_explode.o \ + $(SRC)/gsm_implode.o \ + $(SRC)/gsm_create.o \ + $(SRC)/gsm_print.o \ + $(SRC)/gsm_option.o \ + $(SRC)/short_term.o \ + $(SRC)/table.o + +SHARED_GSM_OBJECTS = $(SRC)/add.lo \ + $(SRC)/code.lo \ + $(SRC)/debug.lo \ + $(SRC)/decode.lo \ + $(SRC)/long_term.lo \ + $(SRC)/lpc.lo \ + $(SRC)/preprocess.lo \ + $(SRC)/rpe.lo \ + $(SRC)/gsm_destroy.lo \ + $(SRC)/gsm_decode.lo \ + $(SRC)/gsm_encode.lo \ + $(SRC)/gsm_explode.lo \ + $(SRC)/gsm_implode.lo \ + $(SRC)/gsm_create.lo \ + $(SRC)/gsm_print.lo \ + $(SRC)/gsm_option.lo \ + $(SRC)/short_term.lo \ + $(SRC)/table.lo TOAST_OBJECTS = $(SRC)/toast.o \ $(SRC)/toast_lin.o \ @@ -228,7 +248,7 @@ $(SRC)/toast_alaw.o \ $(SRC)/toast_audio.o -OBJECTS = $(GSM_OBJECTS) $(TOAST_OBJECTS) +OBJECTS = $(STATIC_GSM_OBJECTS) $(SHARED_GSM_OBJECTS) $(TOAST_OBJECTS) # Manuals @@ -277,9 +297,12 @@ $(CC) $(CFLAGS) $? @-mv `$(BASENAME) $@` $@ > /dev/null 2>&1 +%.lo: %.c + $(CC) $(CFLAGS) -fPIC -c $< -o $@ + # Target rules -all: $(LIBGSM) $(TOAST) $(TCAT) $(UNTOAST) +all: $(LIBGSM) $(LIBGSMSO) $(TOAST) $(TCAT) $(UNTOAST) @-echo $(ROOT): Done. tst: $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/test-result @@ -299,24 +322,29 @@ # The basic API: libgsm -$(LIBGSM): $(LIB) $(GSM_OBJECTS) +$(LIBGSMSO): $(LIB) $(SHARED_GSM_OBJECTS) + $(LD) $(LFLAGS) -o $@.1.0.13 -shared -Xlinker -soname -Xlinker libgsm.so.1 $(SHARED_GSM_OBJECTS) -lc + ln -fs libgsm.so.1.0.13 lib/libgsm.so.1 + ln -fs libgsm.so.1.0.13 lib/libgsm.so + +$(LIBGSM): $(LIB) $(STATIC_GSM_OBJECTS) -rm $(RMFLAGS) $(LIBGSM) - $(AR) $(ARFLAGS) $(LIBGSM) $(GSM_OBJECTS) + $(AR) $(ARFLAGS) $(LIBGSM) $(STATIC_GSM_OBJECTS) $(RANLIB) $(LIBGSM) # Toast, Untoast and Tcat -- the compress-like frontends to gsm. $(TOAST): $(BIN) $(TOAST_OBJECTS) $(LIBGSM) - $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSM) $(LDLIB) + $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSMSO) $(LDLIB) $(UNTOAST): $(BIN) $(TOAST) -rm $(RMFLAGS) $(UNTOAST) - $(LN) $(TOAST) $(UNTOAST) + $(LN) toast $(UNTOAST) $(TCAT): $(BIN) $(TOAST) -rm $(RMFLAGS) $(TCAT) - $(LN) $(TOAST) $(TCAT) + $(LN) toast $(TCAT) # The local bin and lib directories @@ -426,7 +454,9 @@ clean: semi-clean -rm $(RMFLAGS) $(LIBGSM) $(ADDTST)/add \ - $(TOAST) $(TCAT) $(UNTOAST) \ + $(LIBGSMSO) $(LIB)/libgsm.so.1.0.13 \ + $(LIB)libgsm.so.1 \ + $(TOAST) $(TCAT) $(UNTOAST) \ $(ROOT)/gsm-1.0.tar.Z