# Makefile,v 1.2 1992/08/11 15:22:24 snl Exp
#
# Makefile for the BOS library
#

BOS_VERSION=1.31

CFLAGS=$(GLOBAL_CFLAGS) $(TCL_CFLAGS) -I. -DBOS_VERSION=\"$(BOS_VERSION)\" -D_ALREADY_HAVE_VoidPtr $(GDBM_CFLAGS) $(ADDL_CFLAGS)

LIBNAME=libbos
LIB=${LIBNAME}.a
INST_LIB=${LIBNAME}${BINARY_SUFFIX}.a

LIST_SRCS=List_Init.c List_ListInsert.c List_Remove.c List_Insert.c List_Move.c
LIST_OBJS=List_Init.o List_ListInsert.o List_Remove.o List_Insert.o List_Move.o
LIST_HEADERS=list.h

BOS_SRCS=Bos_Basic.c Bos_Error.c Bos_Hook.c Bos_Objects.c\
         Bos_Send.c Bos_Slots.c Bos_Tcl.c Bos_TclUtil.c\
	 Bos_ByteStream.c Bos_GDBM.c
BOS_OBJS=Bos_Basic.o Bos_Error.o Bos_Hook.o Bos_Objects.o\
         Bos_Send.o Bos_Slots.o Bos_Tcl.o Bos_TclUtil.o\
	 Bos_ByteStream.o Bos_GDBM.o
BOS_HEADERS=bos.h bosInt.h bosSearch.h bosMacros.h

RANDOM_HEADERS=cfuncproto.h sprite.h stdlib.h

OBJS=$(BOS_OBJS) $(LIST_OBJS)
HEADERS=$(BOS_HEADERS) $(LIST_HEADERS) $(RANDOM_HEADERS)

DOCDIRS=man doc

default: all

all: ${LIB}

full-install: install install-includes install-docs

clean-install:
	/bin/rm -f install install-includes install-docs full-install

install: ${LIB} install-includes install-lsobjs
	cp ${LIB} ${DEST_DIR}/lib/${INST_LIB}
	$(RANLIB) ${DEST_DIR}/lib/${INST_LIB}
	@touch install

install-lsobjs: lsobjs
	$(INSTALL_CP_BIN) lsobjs ${DEST_DIR}/bin
	@touch install-lsobjs

install-docs:
	@for dir in $(DOCDIRS); do echo making $@ in $$dir; cd $$dir; $(MAKE) $(MFLAGS) DEST_DIR=$(DEST_DIR) install || exit 1; cd ..; done
	@touch install-docs

install-includes: ${HEADERS}
	@-mkdir ${DEST_DIR}/include/bos
	cp $? ${DEST_DIR}/include/bos
	@touch install-includes

clean:
	/bin/rm -f ${LIB} core *.o a.out

dust:
	/bin/rm -f ${LIB} lsobjs

dust-lo:
	/bin/rm -f lsobjs

${LIB}: ${OBJS}
	-${AR} crl ${LIB} $?
	${RANLIB} ${LIB}

lsobjs: lsobjs.o $(LIB)
	$(CC) -o lsobjs lsobjs.o $(LIB) $(TCL_LDFLAGS) $(TCL_LIBS) $(GDBM_LDFLAGS) $(GDBM_LIBS) $(GLOBAL_LDFLAGS) $(GLOBAL_LIBS) $(OS_LDFLAGS) $(OS_LIBS)

${OBJS}: bos.h bosMacros.h
Bos_Objects.o: bosInt.h
Bos_Send.o: bosInt.h
Bos_Slots.o: bosInt.h
Bos_Tcl.o: bosInt.h bosSearch.h

# The rules for generating .h files from .sgml files are in ../../Makeconf
# If you are off-site (not at CMU), you shouldn't need to worry about this.
#
bos.h: bos.h.sgml
bosInt.h: bosInt.h.sgml
bosMacros.h: bosMacros.h.sgml
bosSearch.h: bosSearch.h.sgml

FILES_TO_SYMLINK=bos.h.sgml bosInt.h.sgml bosMacros.h.sgml bosSearch.h.sgml\
 $(HEADERS)

obj_links: $(FILES_TO_SYMLINK)
	for i in $?; do\
		echo linking $$i;\
		ln -s $$i .;\
	done
	touch obj_links
