--- Makefile.orig Tue Jul 2 07:36:06 1996 +++ Makefile Thu Feb 26 12:11:00 1998 @@ -7,11 +7,13 @@ SASR = -DSASR ######### Define SASR if >> is a signed arithmetic shift (-1 >> 1 == -1) -MULHACK = -DUSE_FLOAT_MUL +#MULHACK = -DUSE_FLOAT_MUL # Don't define it for FreeBSD, cause SIGFPE +MULHACK = ######### Define this if your host multiplies floats faster than integers, ######### e.g. on a SPARCstation. -FAST = -DFAST +#FAST = -DFAST +FAST = ######### Define together with USE_FLOAT_MUL to enable the GSM library's ######### approximation option for incorrect, but good-enough results. @@ -43,8 +45,8 @@ # CC = /usr/lang/acc # CCFLAGS = -c -O -CC = gcc -ansi -pedantic -CCFLAGS = -c -O2 -DNeedFunctionPrototypes=1 +#CC = gcc -ansi -pedantic +CCFLAGS = -c -DNeedFunctionPrototypes=1 LD = $(CC) @@ -59,11 +61,13 @@ ######### Includes needed by $(CC) # LDINC = -L/usr/gnu/lib/gcc-2.1/gcc-lib/sparc-sun-sunos4.1.2/2.1 +LDINC = -L$(LIB) ######### Library paths needed by $(LD) # LDLIB = -lgcc ######### Additional libraries needed by $(LD) +PREFIX= /usr/local # Where do you want to install libraries, binaries, a header file # and the manual pages? @@ -71,7 +75,7 @@ # Leave INSTALL_ROOT empty (or just don't execute "make install") to # not install gsm and toast outside of this directory. -INSTALL_ROOT = +INSTALL_ROOT = $(PREFIX) # Where do you want to install the gsm library, header file, and manpages? # @@ -80,7 +84,7 @@ GSM_INSTALL_ROOT = $(INSTALL_ROOT) GSM_INSTALL_LIB = $(GSM_INSTALL_ROOT)/lib -GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/inc +GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/include GSM_INSTALL_MAN = $(GSM_INSTALL_ROOT)/man/man3 @@ -129,18 +133,25 @@ # DEBUG = -DNDEBUG ######### Remove -DNDEBUG to enable assertions. -CFLAGS = $(CCFLAGS) $(SASR) $(DEBUG) $(MULHACK) $(FAST) $(LTP_CUT) \ +CFLAGS += $(CCFLAGS) $(SASR) $(DEBUG) $(MULHACK) $(FAST) $(LTP_CUT) \ $(WAV49) $(CCINC) -I$(INC) ######### It's $(CC) $(CFLAGS) LFLAGS = $(LDFLAGS) $(LDINC) ######### It's $(LD) $(LFLAGS) +.SUFFIXES: .c .so .o # Targets LIBGSM = $(LIB)/libgsm.a - +.if (${MACHINE_ARCH} == "alpha") +LIBGSMSO = +INSTALLED_LIBGSMSO = +.else +LIBGSMSO = $(LIB)/libgsm.so.1.0 +INSTALLED_LIBGSMSO = $(GSM_INSTALL_LIB)/libgsm.so.1.0 +.endif TOAST = $(BIN)/toast UNTOAST = $(BIN)/untoast TCAT = $(BIN)/tcat @@ -258,6 +269,7 @@ GSM_INSTALL_TARGETS = \ $(GSM_INSTALL_LIB)/libgsm.a \ + $(INSTALLED_LIBGSMSO) \ $(GSM_INSTALL_INC)/gsm.h \ $(GSM_INSTALL_MAN)/gsm.3 \ $(GSM_INSTALL_MAN)/gsm_explode.3 \ @@ -277,9 +289,12 @@ $(CC) $(CFLAGS) $? @-mv `$(BASENAME) $@` $@ > /dev/null 2>&1 +.c.so: + ${CC} -fpic -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} + # 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,6 +314,9 @@ # The basic API: libgsm +$(LIBGSMSO): $(LIB) $(GSM_OBJECTS:S/o$/so/g) + ld -Bshareable -o $@ $(GSM_OBJECTS:S/o$/so/g) + $(LIBGSM): $(LIB) $(GSM_OBJECTS) -rm $(RMFLAGS) $(LIBGSM) $(AR) $(ARFLAGS) $(LIBGSM) $(GSM_OBJECTS) @@ -308,7 +326,7 @@ # 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) -lgsm $(LDLIB) $(UNTOAST): $(BIN) $(TOAST) -rm $(RMFLAGS) $(UNTOAST) @@ -394,6 +412,12 @@ chmod 444 $@ $(GSM_INSTALL_LIB)/libgsm.a: $(LIBGSM) + -rm $@ + cp $? $@ + chmod 444 $@ + ranlib $@ + +$(INSTALLED_LIBGSMSO): $(LIBGSMSO) -rm $@ cp $? $@ chmod 444 $@