Instantly share code, notes, and snippets.
Patch needed to build libgsm as a shared library
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I'm not sure where I took this one from, but the credit goes to the author and not me, of course