--- Makefile 2022-07-03 19:49:29.000000000 +0200 +++ Makefile 2022-07-26 11:44:36.474008372 +0200 @@ -75,6 +75,7 @@ # What's this release's version? Part of the directory and archive file name. VERSION = 1.0-pl20 +DOTTED_VERSION = 1.0.20 # Where do you want to install the gsm library, header file, and manpages? # @@ -99,7 +100,7 @@ # Other tools SHELL = /bin/sh -LN = ln +LN = ln -s -f BASENAME = basename AR = ar ARFLAGS = cr @@ -142,7 +143,7 @@ # Targets -LIBGSM = $(LIB)/libgsm.a +LIBGSMSO = $(LIB)/libgsm.so TOAST = $(BIN)/toast UNTOAST = $(BIN)/untoast @@ -260,7 +261,7 @@ # Install targets GSM_INSTALL_TARGETS = \ - $(GSM_INSTALL_LIB)/libgsm.a \ + $(GSM_INSTALL_LIB)/libgsm.so \ $(GSM_INSTALL_INC)/gsm.h \ $(GSM_INSTALL_MAN)/gsm.3 \ $(GSM_INSTALL_MAN)/gsm_explode.3 \ @@ -282,7 +283,7 @@ # Target rules -all: $(LIBGSM) $(TOAST) $(TCAT) $(UNTOAST) +all: $(LIBGSMSO) $(TOAST) $(TCAT) $(UNTOAST) @-echo $(ROOT): Done. tst: $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/test-result @@ -302,16 +303,16 @@ # The basic API: libgsm -$(LIBGSM): $(LIB) $(GSM_OBJECTS) - -rm $(RMFLAGS) $(LIBGSM) - $(AR) $(ARFLAGS) $(LIBGSM) $(GSM_OBJECTS) - $(RANLIB) $(LIBGSM) +$(LIBGSMSO): $(LIB) $(GSM_OBJECTS) + $(LD) -shared -Wl,-soname,libgsm.so.1 -o $@.$(DOTTED_VERSION) $(GSM_OBJECTS) + $(LN) `$(BASENAME) $@.$(DOTTED_VERSION)` $@.1 + $(LN) `$(BASENAME) $@.$(DOTTED_VERSION)` $@ # Toast, Untoast and Tcat -- the compress-like frontends to gsm. -$(TOAST): $(BIN) $(TOAST_OBJECTS) $(LIBGSM) - $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSM) $(LDLIB) +$(TOAST): $(BIN) $(TOAST_OBJECTS) $(LIBGSMSO) + $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSMSO) $(LDLIB) $(UNTOAST): $(BIN) $(TOAST) -rm $(RMFLAGS) $(UNTOAST) @@ -396,10 +397,12 @@ cp $? $@ chmod 444 $@ -$(GSM_INSTALL_LIB)/libgsm.a: $(LIBGSM) - -rm $(RMFLAGS) $@ - cp $? $@ - chmod 444 $@ +$(GSM_INSTALL_LIB)/libgsm.so: $(LIBGSMSO) + -rm $(RMFLAGS) $@ $@.1 $@.$(DOTTED_VERSION) + cp $?.$(DOTTED_VERSION) $@.$(DOTTED_VERSION) + chmod 755 $@.$(DOTTED_VERSION) + $(LN) libgsm.so.$(DOTTED_VERSION) $@ + $(LN) libgsm.so.$(DOTTED_VERSION) $@.1 # Distribution @@ -428,7 +431,7 @@ -print | xargs rm $(RMFLAGS) clean: semi-clean - -rm $(RMFLAGS) $(LIBGSM) $(ADDTST)/add \ + -rm $(RMFLAGS) $(LIBGSMSO)* $(ADDTST)/add \ $(TOAST) $(TCAT) $(UNTOAST) \ $(ROOT)/gsm-1.0.tar.gz @@ -476,22 +479,22 @@ $(TST)/test-result: $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/run ( cd $(TST); ./run ) -$(TST)/lin2txt: $(TST)/lin2txt.o $(LIBGSM) +$(TST)/lin2txt: $(TST)/lin2txt.o $(LIBGSMSO) $(LD) $(LFLAGS) -o $(TST)/lin2txt \ - $(TST)/lin2txt.o $(LIBGSM) $(LDLIB) + $(TST)/lin2txt.o $(LIBGSMSO) $(LDLIB) -$(TST)/lin2cod: $(TST)/lin2cod.o $(LIBGSM) +$(TST)/lin2cod: $(TST)/lin2cod.o $(LIBGSMSO) $(LD) $(LFLAGS) -o $(TST)/lin2cod \ - $(TST)/lin2cod.o $(LIBGSM) $(LDLIB) + $(TST)/lin2cod.o $(LIBGSMSO) $(LDLIB) -$(TST)/gsm2cod: $(TST)/gsm2cod.o $(LIBGSM) +$(TST)/gsm2cod: $(TST)/gsm2cod.o $(LIBGSMSO) $(LD) $(LFLAGS) -o $(TST)/gsm2cod \ - $(TST)/gsm2cod.o $(LIBGSM) $(LDLIB) + $(TST)/gsm2cod.o $(LIBGSMSO) $(LDLIB) -$(TST)/cod2txt: $(TST)/cod2txt.o $(LIBGSM) +$(TST)/cod2txt: $(TST)/cod2txt.o $(LIBGSMSO) $(LD) $(LFLAGS) -o $(TST)/cod2txt \ - $(TST)/cod2txt.o $(LIBGSM) $(LDLIB) + $(TST)/cod2txt.o $(LIBGSMSO) $(LDLIB) -$(TST)/cod2lin: $(TST)/cod2lin.o $(LIBGSM) +$(TST)/cod2lin: $(TST)/cod2lin.o $(LIBGSMSO) $(LD) $(LFLAGS) -o $(TST)/cod2lin \ - $(TST)/cod2lin.o $(LIBGSM) $(LDLIB) + $(TST)/cod2lin.o $(LIBGSMSO) $(LDLIB)