summaryrefslogtreecommitdiffstats
path: root/libraries/gsm/Makefile.patch
blob: 97bc4758a4cf83891dd09c470857cd3f1aed7052 (plain)
--- Makefile.orig	2022-07-03 18:49:29.000000000 +0100
+++ Makefile	2022-07-15 15:06:58.340000000 +0100
@@ -75,6 +75,8 @@
 
 # What's this release's version? Part of the directory and archive file name.
 VERSION = 1.0-pl20
+# VER is used as the actual lib version
+VER ?= 1.0.20
 
 # Where do you want to install the gsm library, header file, and manpages?
 #
@@ -99,7 +101,7 @@
 #  Other tools
 
 SHELL		= /bin/sh
-LN		= ln
+LN		= ln -s
 BASENAME 	= basename
 AR		= ar
 ARFLAGS		= cr
@@ -143,6 +145,7 @@
 # Targets
 
 LIBGSM	= $(LIB)/libgsm.a
+LIBGSMSO= $(LIB)/libgsm.so
 
 TOAST	= $(BIN)/toast
 UNTOAST	= $(BIN)/untoast
@@ -206,24 +209,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	\
@@ -231,7 +253,7 @@
 		$(SRC)/toast_alaw.o	\
 		$(SRC)/toast_audio.o
 
-OBJECTS =	 $(GSM_OBJECTS) $(TOAST_OBJECTS)
+OBJECTS =	$(STATIC_GSM_OBJECTS) $(SHARED_GSM_OBJECTS) $(TOAST_OBJECTS)
 
 # Manuals
 
@@ -280,9 +302,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
@@ -302,24 +327,29 @@
 
 # The basic API: libgsm
 
-$(LIBGSM):	$(LIB) $(GSM_OBJECTS)
+$(LIBGSMSO):	$(LIB) $(SHARED_GSM_OBJECTS)
+		$(LD) $(LFLAGS) -o $@.${VER} -shared -Xlinker -soname -Xlinker libgsm.so.1 $(SHARED_GSM_OBJECTS) -lc
+		ln -fs libgsm.so.${VER} lib/libgsm.so.1
+		ln -fs libgsm.so.${VER} 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
@@ -429,7 +459,9 @@
 
 clean:	semi-clean
 		-rm $(RMFLAGS) $(LIBGSM) $(ADDTST)/add		\
-			$(TOAST) $(TCAT) $(UNTOAST)	\
+                        $(LIBGSMSO) $(LIB)/libgsm.so.${VER}     \
+                        $(LIB)libgsm.so.1                       \
+                        $(TOAST) $(TCAT) $(UNTOAST)             \
 			$(ROOT)/gsm-1.0.tar.gz