# Description file for librle library.

#ifdef LIB_DEST
#set DEST LIB_DEST
DEST =
#endif

#ifndef NO_RANLIB
RANLIB = ranlib
#endif

# If nothing else is specified, default is to build the library.
default: buildlib

#ifadd	NEED_GETOPT	OPT_OBJS	getopt.o
#emit OPT_OBJS
OPT_OBJS = 

OBJS = Runput.o buildmap.o cmd_name.o colorquant.o dither.o \
	float_to_exp.o hilbert.o inv_cmap.o \
	rle_addhist.o rle_cp.o rle_error.o rle_getcom.o \
	rle_getraw.o rle_getrow.o rle_getskip.o rle_global.o \
	rle_hdr.o \
	rle_open_f.o rle_putcom.o rle_putraw.o rle_putrow.o \
	rle_raw_alc.o rle_rawrow.o rle_row_alc.o scanargs.o \
	vaxshort.o \
	$(OPT_OBJS)

SOOBJS = $(OBJS:.o=.so)

LIBANAME = librle.a
LIBSONAME = librle.so.1

# Just rebuild the object files.
objs: $(OBJS)

# Copy the library to the destination directory.
# (Install a second copy on the debug subdirectory, on the theory that it
#  is more useful to have a non-debug version than nothing at all.)
# Do nothing if $(DEST) is empty (or not defined)
install: buildlib
	@sh -c "if test '$(DEST)x' != x ; then \
		echo install $(LIBANAME) $(DEST)/$(LIBANAME) ; \
		${BSD_INSTALL_DATA} $(LIBANAME) $(DEST)/$(LIBANAME) ; \
		echo install $(LIBSONAME) $(DEST)/$(LIBSONAME) ; \
		${BSD_INSTALL_DATA} $(LIBSONAME) $(DEST)/$(LIBSONAME) ; \
		ln -sf $(LIBSONAME) $(DEST)/librle.so ; \
		if test x$(RANLIB) != x ; then \
			echo ranlib $(DEST)/$(LIBANAME) ; \
			ranlib $(DEST)/$(LIBANAME) ; \
		else \
			true ; \
		fi ; \
	else \
		true ; \
	fi"

# Rebuild the library from all the .o files.
buildlib: $(LIBANAME) $(LIBSONAME)

$(LIBANAME): $(OBJS)
	-rm -f $@
	ar rc $@ $(OBJS)
#ifndef NO_RANLIB
	ranlib $@
#endif

.SUFFIXES: .so .o

.c.so:
	$(CC) -fPIC -DPIC $(CFLAGS) -c $*.c -o $*.so
	$(LD) -X -r $*.so

$(LIBSONAME): $(SOOBJS)
	-rm -f $@
	ld -shared -soname $@ -o $@ $(SOOBJS)

# Clean up installed stuff and binaries
pristine: clean
	-@if test $(DEST)X != X ; then \
		echo rm -f $(DEST)/$(LIBNAME) $(DEST)/debug/$(LIBNAME) ; \
		rm -f $(DEST)/$(LIBNAME) $(DEST)/debug/$(LIBNAME) ; \
	else \
		echo rm -f $(LIBNAME) ; \
		rm -f $(LIBNAME) ; \
	fi
	-rm -f install

# Get rid of everything which must be recompiled on a different computer.
clean:
	-rm -f *.o
	-rm -f *.so
	-@if test x$(DEST) != x ; then \
		echo rm -f $(LIBANAME) ; \
		rm -f $(LIBANAME) ; \
		echo rm -f $(LIBSONAME) ; \
		rm -f $(LIBSONAME) ; \
	else \
		true ; \
	fi
	-rm -f *.ln
	-rm -f buildlib lintlib

# Lint actions:
#
# lintall - run lint on all the source files
# lint1 - run line on one source file
# llib-lrle - build human-readable form of lint library
# llib-lrle.ln - build machine readable form of lint library for
# use in linting programs that use the library
# linstall - install the lint library
#
lintall:
	lint $(DFLAGS) $(IFLAGS) $(CFILES)

lint1:
	lint $(DFLAGS) $(IFLAGS) -u $(LINTF) llib-lrle.ln

llib-lrle: $(CFILES)
	-gemacs -tnull -q -l${AEM}/mk-llib.ml -emk-llib llib-lrle ${CFILES}

lintlib llib-lrle.ln: llib-lrle
	/lib/cpp $(IFLAGS) -C -Dlint llib-lrle | > /usr/lib/lint/lint1 -uv > \
		llib-lrle.ln
	touch lintlib

# Install the lint library.
linstall: llib-lrle.ln
	cp llib-lrle.ln llib-lrle /usr/lib/lint

# Make all objects depend on rle_config.h, even if they really don't.
# This forces a recompile whenever a reconfiguration happens.
$(OBJS):${RI}/rle_config.h

# Dependencies on .h files:
# DO NOT DELETE THIS LINE

Runput.o: ${RI}/rle.h ${RI}/rle_code.h ${RI}/rle_put.h
buildmap.o: ${RI}/rle.h
float_to_exp.o: ${RI}/rle.h
rle_addhist.o: ${RI}/rle.h
rle_cp.o: ${RI}/rle.h ${RI}/rle_code.h ${RI}/rle_put.h
rle_getcom.o: ${RI}/rle.h
rle_getraw.o: ${RI}/rle.h ${RI}/rle_raw.h
rle_getrow.o: ${RI}/rle.h ${RI}/rle_code.h
rle_getskip.o: ${RI}/rle.h ${RI}/rle_code.h
rle_global.o: ${RI}/rle.h ${RI}/rle_put.h
rle_putcom.o: ${RI}/rle.h
rle_putraw.o: ${RI}/rle.h ${RI}/rle_put.h ${RI}/rle_raw.h
rle_putrow.o: ${RI}/rle.h ${RI}/rle_put.h
rle_raw_alc.o: ${RI}/rle.h ${RI}/rle_raw.h
rle_rawrow.o: ${RI}/rle.h ${RI}/rle_raw.h
rle_row_alc.o: ${RI}/rle.h

config-subdirs:

