Skip to content

Instantly share code, notes, and snippets.

@marcelog
Created August 30, 2015 16:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marcelog/9b5410706640279218ba to your computer and use it in GitHub Desktop.
Save marcelog/9b5410706640279218ba to your computer and use it in GitHub Desktop.
Patch needed to build libgsm as a shared library
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
@marcelog
Copy link
Author

I'm not sure where I took this one from, but the credit goes to the author and not me, of course

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment