# 
# Mach Operating System
# Copyright (c) 1992 Carnegie Mellon University
# All Rights Reserved.
# 
# Permission to use, copy, modify and distribute this software and its
# documentation is hereby granted, provided that both the copyright
# notice and this permission notice appear in all copies of the
# software, derivative works or modified versions, and any portions
# thereof, and that both notices appear in supporting documentation.
# 
# CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
# CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
# ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
# 
# Carnegie Mellon requests users of this software to return to
# 
#  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
#  School of Computer Science
#  Carnegie Mellon University
#  Pittsburgh PA 15213-3890
# 
# any improvements or extensions that they make and grant Carnegie Mellon 
# the rights to redistribute these changes.
#
# HISTORY
# $Log:	Makefile,v $
# Revision 2.10  92/04/08  23:27:39  rpd
# 	Added environment manager.
# 	[92/03/28            jvh]
# 
# Revision 2.9  92/03/05  22:49:32  rpd
# 	Changed to use double-colon rules for top-level targets.
# 	[92/02/28            rpd]
# 
# Revision 2.8  92/02/15  19:46:18  rpd
# 	Created.
# 	[92/02/15            rpd]
# 

include ${MAKETOP}Makefile-common
# more definitions, for mkidirs/mkrdirs
include ${MAKETOP}Makefile-mkdirs

# files from user/lib/libmachid

MACHID_OFILES = machid.h machid_debug.h machid_dpager.h

MACHID_SFILES = machid.defs machid_debug.defs machid_dpager.defs \
	machid_types.defs machid_types.h machid_lib.h

# files from user/lib/libnetname

NETNAME_OFILES = netname.h

NETNAME_SFILES = netname.defs netname_defs.h

# files from user/lib/libnetmemory

NETMEMORY_OFILES = netmemory.h

NETMEMORY_SFILES = netmemory.defs

# files from user/lib/libservice

SERVICE_OFILES = service.h

SERVICE_SFILES = service.defs

# files from user/lib/libenv

ENV_OFILES = env_mgr.h

ENV_SFILES = emdefs.h env_mgr.defs


ALL_OFILES = ${MACHID_OFILES} ${NETNAME_OFILES} \
	${NETMEMORY_OFILES} ${SERVICE_OFILES} ${ENV_OFILES}

ALL_SFILES = ${MACHID_SFILES} ${NETNAME_SFILES} \
	${NETMEMORY_SFILES} ${SERVICE_SFILES} ${ENV_SFILES}

ALL_FILES = ${ALL_OFILES} ${ALL_SFILES}

# top-level targets

all :: install

# The mkidirs and mkrdirs targets will create these subdirectories
# in the install and release directories.

MKIDIRS = include/servers
MKRDIRS = include/servers

ITARGETS = ${ALL_FILES;.*;${INSTALLDIR}/include/servers/&}

install :: mkidirs ${ITARGETS}

clean ::
	${RM} ${ITARGETS}

TTARGETS = ${ALL_FILES;.*;${TRELEASEDIR}/include/servers/&}

release :: mkrdirs ${TTARGETS}

# installation rules

O_TARGETS = ${ALL_OFILES;.*;${INSTALLDIR}/include/servers/&}

${O_TARGETS} : $${@;.*/([^/]*);\1}
	${RM} $@
	${CP} $? $@
	${CHMOD_INC} $@

MACHID_TARGETS = ${MACHID_SFILES;.*;${INSTALLDIR}/include/servers/&}

${MACHID_TARGETS} : $${@;.*/([^/]*);../lib/libmachid/\1}
	${RM} $@
	${CP} $? $@
	${CHMOD_INC} $@

NETNAME_TARGETS = ${NETNAME_SFILES;.*;${INSTALLDIR}/include/servers/&}

${NETNAME_TARGETS} : $${@;.*/([^/]*);../lib/libnetname/\1}
	${RM} $@
	${CP} $? $@
	${CHMOD_INC} $@

NETMEMORY_TARGETS = ${NETMEMORY_SFILES;.*;${INSTALLDIR}/include/servers/&}

${NETMEMORY_TARGETS} : $${@;.*/([^/]*);../lib/libnetmemory/\1}
	${RM} $@
	${CP} $? $@
	${CHMOD_INC} $@

SERVICE_TARGETS = ${SERVICE_SFILES;.*;${INSTALLDIR}/include/servers/&}

${SERVICE_TARGETS} : $${@;.*/([^/]*);../lib/libservice/\1}
	${RM} $@
	${CP} $? $@
	${CHMOD_INC} $@

ENV_TARGETS = ${ENV_SFILES;.*;${INSTALLDIR}/include/servers/&}

${ENV_TARGETS} : $${@;.*/([^/]*);../lib/libenv/\1}
	${RM} $@
	${CP} $? $@
	${CHMOD_INC} $@

# release rules

${TTARGETS} : $${@;.*/(include/servers/[^/]*);${FRELEASEDIR}/\1}
	${RM} $@
	${CP} $? $@

# mig rules to generate header files
# we ensure that included files are installed first

machid.h : ../lib/libmachid/machid.defs ${MACHID_TARGETS}
	${MIG} ${MIGFLAGS} -header machid.h -user /dev/null -server /dev/null ../lib/libmachid/machid.defs

machid_dpager.h : ../lib/libmachid/machid_dpager.defs ${MACHID_TARGETS}
	${MIG} ${MIGFLAGS} -header machid_dpager.h -user /dev/null -server /dev/null ../lib/libmachid/machid_dpager.defs

machid_debug.h : ../lib/libmachid/machid_debug.defs ${MACHID_TARGETS}
	${MIG} ${MIGFLAGS} -header machid_debug.h -user /dev/null -server /dev/null ../lib/libmachid/machid_debug.defs

netname.h : ../lib/libnetname/netname.defs ${NETNAME_TARGETS}
	${MIG} ${MIGFLAGS} -header netname.h -user /dev/null -server /dev/null ../lib/libnetname/netname.defs

netmemory.h : ../lib/libnetmemory/netmemory.defs ${NETMEMORY_TARGETS}
	${MIG} ${MIGFLAGS} -header netmemory.h -user /dev/null -server /dev/null ../lib/libnetmemory/netmemory.defs

service.h : ../lib/libservice/service.defs ${SERVICE_TARGETS}
	${MIG} ${MIGFLAGS} -header service.h -user /dev/null -server /dev/null ../lib/libservice/service.defs

env_mgr.h : ../lib/libenv/env_mgr.defs ${ENV_TARGETS}
	${MIG} ${MIGFLAGS} -header env_mgr.h -user /dev/null -server /dev/null ../lib/libenv/env_mgr.defs

-include Makedep
