# $Id: PTMakefile,v 1.1 1999/03/11 15:00:25 carlo Exp $
#
# ProtoType Library Makefile
#
# Copyright (C) 1999
#
# 1024/624ACAD5 1997/01/26 Carlo Wood, Run on IRC <carlo@runaway.xs4all.nl>
# Key fingerprint = 32 EC A7 B6 AC DB 65 A6  F6 F6 55 DD 1C DC FF 61
#
# All rights reserved.
#
# See the file LICENSE for copyright information.
#
# This file may be distributed under the terms of the Q Public License 1.0
# as defined by Troll Tech AS of Norway and appearing in the file LICENSE.QPL
# included in the packaging of this file.
#
#-----------------------------------------------------------------------------
#
# Edit $PROTODIR/Makedefs.h to get it working for your system
#

export INCLUDEFLAGS

include ${PROTODIR}/Makedefs.h
ifeq (.$(LIB).version,$(wildcard .$(LIB).version))
include .$(LIB).version
VERSION=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
endif

OBJS:=$(shell echo "${SRC}" | sed -e 's%\.c %.o %g' -e 's%\.c$$%.o%' -e 's%\.cc %.o %g' -e 's%\.cc$$%.o%')
SUBOBJS:=$(shell for i in ${SUBDIRS}; do for j in `(exec 5>&3; make -C $$i printobjs 1>/dev/null 2>/dev/null) 3>&1`; do echo "$$i/$$j"; done; done)

.PHONY: all .build build static shared printobjs clean depend
.SUFFIXES:

all:
	${MAKE} -r -C ${BASEDIR} all

%.o: %.c ${PROTODIR}/Makedefs.h
	${CC} ${CFLAGS} -fpic ${INCLUDEFLAGS} -I- ${SYSTEMINCLUDEFLAGS} -c $< -o $@

%.o: %.cc ${PROTODIR}/Makedefs.h
	${CC} ${CFLAGS} -fpic ${INCLUDEFLAGS} -I- ${SYSTEMINCLUDEFLAGS} -c $< -o $@

.build: .depend ${OBJS}
	@for i in ${SUBDIRS}; \
	  do ${MAKE} -C $$i "CFLAGS=${CFLAGS} -fpic" build || exit; \
	done

ifeq (.$(LIB).version,$(wildcard .$(LIB).version))
build:: .build shared
else
build:: .build
endif

static: ${BASEDIR}/lib/lib${LIB}.a

shared: ${BASEDIR}/lib/lib${LIB}.so

${BASEDIR}/lib/lib${LIB}.a: ${OBJS} ${SUBOBJS} ${EXTRA_OBJS}
	${AR} -cru lib${LIB}.a ${OBJS} ${EXTRA_OBJS} ${SUBOBJS} ${STATICLIBS}
	${RANLIB} lib${LIB}.a
	${INSTALL} -d ${BASEDIR}/lib
	${MV} lib${LIB}.a ${BASEDIR}/lib

${BASEDIR}/lib/lib${LIB}.so: ${OBJS} .$(LIB).version ${SUBOBJS} ${EXTRA_OBJS}
	${CC} -shared -Wl,-soname,lib${LIB}.so.$(VERSION_MAJOR) -o lib${LIB}.so.$(VERSION) -fpic ${OBJS} ${EXTRA_OBJS} ${SUBOBJS} ${STATICLIBS}
	$(RM) -f ${BASEDIR}/lib/lib$(LIB).so*
	${MV} lib${LIB}.so.$(VERSION) ${BASEDIR}/lib
	( cd ${BASEDIR}/lib; \
	  ln -s lib${LIB}.so.$(VERSION) lib${LIB}.so.$(VERSION_MAJOR); \
	  ln -s lib${LIB}.so.$(VERSION_MAJOR) lib${LIB}.so )

printobjs:

clean::
	${RM} -f *.o core *.orig .depend*
	@for i in ${SUBDIRS}; do ${MAKE} -C $$i clean; done

depend:: .depend
	@for i in ${SUBDIRS}; do ${MAKE} -C $$i depend || exit; done

.depend: ${SRC}
	@${RM} -f .depend
	@echo '# Program dependencies' >.depend
ifneq (${SRC},)
	${MAKEDEPEND} ${CFLAGS} ${INCLUDEFLAGS} -I- ${SYSTEMINCLUDEFLAGS} ${SRC} >> .depend
endif

#
# include a dependency file
#
ifeq (.depend,$(wildcard .depend))
include .depend
endif
