| --- a/Makefile |
| +++ b/Makefile |
| @@ -96,16 +96,14 @@ |
| # Other tools |
| |
| SHELL = /bin/sh |
| -LN = ln |
| +LN = ln -s |
| BASENAME = basename |
| -AR = ar |
| ARFLAGS = cr |
| RMFLAGS = |
| FIND = find |
| COMPRESS = compress |
| COMPRESSFLAGS = |
| # RANLIB = true |
| -RANLIB = ranlib |
| |
| # |
| # You shouldn't have to configure below this line if you're porting. |
| @@ -140,6 +138,7 @@ |
| # Targets |
| |
| LIBGSM = $(LIB)/libgsm.a |
| +LIBGSMSO= $(LIB)/libgsm.so |
| |
| TOAST = $(BIN)/toast |
| UNTOAST = $(BIN)/untoast |
| @@ -203,24 +202,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 +246,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 +295,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 +320,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 +452,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 |
| |
| |