#
#ident	"@(#)smail/compat:RELEASE-3_2_0_115:Makefile,v 1.23 2003/06/18 07:03:37 woods Exp"
#
# Makefile for the smail compat library.
#
#    Copyright (C) 1987, 1988 Ronald S. Karr and Landon Curt Noll
#    Copyright (C) 1992  Ronald S. Karr
# 
# See the file COPYING, distributed with smail, for restriction
# and warranty information.

SHELL=/bin/sh
AR=ar
LINT=lint

MKDEPEND=${ROOT}/conf/lib/mkdepend.sh
MKDEFS=${ROOT}/conf/lib/mkdefs.sh
CHECKDEFS=${ROOT}/conf/lib/checkdefs.sh
XEXEC=${SHELL} ${ROOT}/conf/lib/xexec.sh
DEFS_SH=defs.sh
DEFS_H=defs.h
DEFS_SED=defs.sed

ROOT=..
DUMMY_OBJ=dummy.o
DUMMY_CSRC=dummy.c
SIGNAME_OBJ=signame.o
SIGNAME_CSRC=signame.c
SYS5_STRLIB=_str2set.o strpbrk.o strspn.o strcspn.o
STRLIB_DIR=${ROOT}/pd/strlib
GETOPT_OBJ=get_opt.o
GETOPT_DIR=${ROOT}/pd/getopt

COMPAT_LIB=libcompat.a

.c.o:
	@. ./${DEFS_SH}; ${XEXEC} $$CC $$CFLAGS -I${ROOT}/src $$INCLUDES -c $*.c

all:	${COMPAT_LIB}

# NOTE: even though this target's rules use ${MAKE}, it should not
# depend on .MAKE.  Splitting this out would mandate "make depend"
#
# Versions of 'make' that always execute rules containing "${MAKE}"
# will end up running 'ar' and 'ranlib', but usually with no harmful
# side effects.
#
${COMPAT_LIB}: Makefile ${DEFS_SH} ${DUMMY_OBJ}
	@. ./${DEFS_SH};						\
	   case "$$HAVE_SYS5_STRLIB" in					\
	   '')	if [ -f ${STRLIB_DIR}/.depend ] ; then			\
			DEPMKFILE="-f Makefile -f .depend";		\
		else DEPMKFILE=""; fi;					\
		echo "	cd ${STRLIB_DIR} && ${MAKE} $$DEPMKFILE ${SYS5_STRLIB}"; \
		(cd ${STRLIB_DIR} && ${MAKE} $$DEPMKFILE ${SYS5_STRLIB}); \
		rc=$$?;							\
		if [ $$rc -ne 0 ] ; then				\
			exit $$rc;					\
		fi;							\
		for i in ${SYS5_STRLIB}; do				\
			${XEXEC} ${AR} rc ${COMPAT_LIB} ${STRLIB_DIR}/$$i; \
		done;;							\
	   esac;							\
	   case "$$HAVE_GETOPT" in					\
	   '')	if [ -f ${GETOPT_DIR}/.depend ] ; then			\
			DEPMKFILE="-f Makefile -f .depend";		\
		else DEPMKFILE=""; fi;					\
		echo "	cd ${GETOPT_DIR} && ${MAKE} $$DEPMKFILE ${GETOPT_OBJ}"; \
		(cd ${GETOPT_DIR} && ${MAKE} $$DEPMKFILE ${GETOPT_OBJ}); \
		rc=$$?;							\
		if [ $$rc -ne 0 ] ; then				\
			exit $$rc;					\
		fi;							\
		for i in ${GETOPT_OBJ}; do				\
			${XEXEC} ${AR} rc ${COMPAT_LIB} ${GETOPT_DIR}/$$i; \
		done;;							\
	   esac;							\
	   case "$$HAVE_SYS_SIGNAME/$$HAVE_SIG2STR" in			\
	   '/')	if [ -f .depend ] ; then				\
			DEPMKFILE="-f Makefile -f .depend";		\
		else DEPMKFILE=""; fi;					\
		echo "	${MAKE} $$DEPMKFILE ${SIGNAME_OBJ}";		\
		${MAKE} $$DEPMKFILE ${SIGNAME_OBJ};			\
		rc=$$?;							\
		if [ $$rc -ne 0 ] ; then				\
			exit $$rc;					\
		fi;							\
		for i in ${SIGNAME_OBJ}; do				\
			${XEXEC} ${AR} rc ${COMPAT_LIB} $$i;		\
		done;;							\
	   esac;							\
	   ${XEXEC} ${AR} rc ${COMPAT_LIB} ${DUMMY_OBJ};		\
	   ${XEXEC} $$RANLIB ${COMPAT_LIB}

${SIGNAME_OBJ}: ${DEFS_SH} ${SIGNAME_CSRC} Makefile

${SIGNAME_CSRC}: mksigname.sh siglist.in ${DEFS_SH} Makefile
	@rm -f ${SIGNAME_CSRC}
	@. ./${DEFS_SH}; \
	   ${XEXEC} ${SHELL} mksigname.sh siglist.in ${SIGNAME_CSRC}

mkdefs ${DEFS_SH} ${DEFS_H} ${DEFS_SED}: ${ROOT}/conf/EDITME
	ROOT=${ROOT} ${SHELL} ${MKDEFS}

${ROOT}/conf/EDITME: .MAKE # cannot depend on anything else!
	cd ${ROOT}/conf && ${MAKE} EDITME

# XXX note that we don't go off to 'make depend' for STRLIB_DIR, nor
# for GETOPT_DIR Those should be created by the initial "make depend"
# done from the top level.
#
depend: check_defs
	@rm -f .depend
	@. ./${DEFS_SH};						\
	   files="dummy.c";						\
	   case "$$HAVE_SYS_SIGNAME/$$HAVE_SIG2STR" in			\
	   '/')								\
	       ${XEXEC} ${MAKE} ${SIGNAME_CSRC};			\
	       files="$$files ${SIGNAME_CSRC}";;			\
	   esac;							\
	   ${XEXEC} ${SHELL} ${MKDEPEND} $$CPPFLAGS $$INCLUDES $$files
	@. ./${DEFS_SH};						\
	   case "$$HAVE_SYS5_STRLIB" in					\
	   '')								\
		for i in ${SYS5_STRLIB}; do				\
		    echo "	echo \"${COMPAT_LIB}: $$i\" >> .depend"; \
		    echo "${COMPAT_LIB}: $$i" >> .depend;		\
		done;;							\
	   esac;							\
	   case "$$HAVE_GETOPT" in					\
	   '')								\
		for i in ${GETOPT_OBJ}; do				\
		    echo "	echo \"${COMPAT_LIB}: $$i\" >> .depend"; \
		    echo "${COMPAT_LIB}: $$i" >> .depend;		\
		done;;							\
	   esac;							\
	   case "$$HAVE_SYS_SIGNAME/$$HAVE_SIG2STR" in			\
	   '/')								\
		for i in ${SIGNAME_OBJ}; do				\
		    echo "	echo \"${COMPAT_LIB}: $$i\" >> .depend"; \
		    echo "${COMPAT_LIB}: $$i" >> .depend;		\
		done;;							\
	   esac
	@. ./${DEFS_SH};						\
	   echo "$$DEFS_DEPEND" >> .depend

check_defs:
	SHELL=${SHELL} ROOT=${ROOT} ${SHELL} ${CHECKDEFS}

install:

clean:
	rm -f .${DEFS_SH} .${DEFS_H} .${DEFS_SED}
	rm -f ${DUMMY_OBJ} ${SYS5_STRLIB} ${GETOPT_OBJ} ${BSTRING}
	rm -f ${SIGNAME_OBJ} ${SIGNAME_CSRC}
	rm -f a.out core
	rm -f ${COMPAT_LIB}

clobber: clean
	rm -f .depend
	rm -f ${DEFS_SH} ${DEFS_H} ${DEFS_SED}

.MAKE:

.PHONY: all install local-install clean local-clean clobber local-clobber depend local-depend lint mkdefs check_defs tags TAGS
.PHONY: .MAKE
