# /usr/src/include/Makefile

include /usr/src/COPYRIGHTS

# Doing a make INSTALL builds /usr/include

# Define SHARED to indicate whether you want
# symbolic links to the system source (``symlinks''),
# or a separate copy (``copies'').
# (latter useful in environments where it's
# not possible to keep /sys publicly readable)

# The ``rm -rf''s used below are safe because rm doesn't
# follow symbolic links.

DESTDIR=
SUBDIRS=arpa protocols cmu
STD=	a.out.h ar.h assert.h cthreads.h ctype.h curses.h dbm.h disktab.h \
	exception_all.h fcntl.h fstab.h grp.h lastlog.h mach.h mach_error.h \
	mach_exception.h mach_init.h mach_interface.h math.h memory.h \
	mntent.h mp.h mtab.h ndbm.h netdb.h nlist.h pcc.h pwd.h ranlib.h \
	regexp.h resolv.h setjmp.h sgtty.h stab.h stdio.h string.h strings.h \
	struct.h sysexits.h time.h ttyent.h tzfile.h utmp.h varargs.h vfont.h

LINKS=	errno.h signal.h syslog.h

NETDIRS=net netimp netinet netns
TAHOEDIRS=tahoe tahoemath tahoevba tahoeif
VAXDIRS=vax vaxmba vaxuba vaxif
#MAC2DIRS=mac2 mac2dev mac2if mac2slotmgr mac2emul nfs rpc afs vfs
MAC2DIRS=mac2 mac2dev mac2if mac2slotmgr nfs rpc afs vfs

MACHDIRS=mach kern mach_debug mach/mac2 mach/sun3 mach/vax mach/ca

SERVERS=errorlib.h netname.h netname_defs.h env_mgr.h ipcx_types.h \
	emdefs.h service.h netmemory.h netmemory_defs.h

#SHARED=	symlinks
#SHARED=	copies
SHARED=	mac2
TAGSFILE=tags

all:

install: ${SHARED} ${STD}
	-for i in ${STD}; do \
	  cmp -s $$i ${DESTDIR}/usr/include/$$i || \
	    install -c -m 444 $$i ${DESTDIR}/usr/include/$$i; \
	done
	-for i in ${SUBDIRS}; do \
	  if [ ! -d ${DESTDIR}/usr/include/$$i ]; \
	  then \
	    mkdir ${DESTDIR}/usr/include/$$i; \
	  fi; \
	  (cd $$i; for j in *.[ih]; do \
	    cmp -s $$j ${DESTDIR}/usr/include/$$i/$$j || \
	      install -c -m 444 $$j ${DESTDIR}/usr/include/$$i/$$j; \
	  done); \
	done
	-cmp -s Makefile.install ${DESTDIR}/usr/include/Makefile || \
	  install -c -m 444 Makefile.install ${DESTDIR}/usr/include/Makefile
	-for i in ${LINKS}; do \
	  rm -f ${DESTDIR}/usr/include/$$i; \
	  ln -s sys/$$i ${DESTDIR}/usr/include/$$i; \
	done
	rm -f ${DESTDIR}/usr/include/machine
	ln -s ./${MACHINE} ${DESTDIR}/usr/include/machine
	find ${DESTDIR}/usr/include -type d -exec chmod 555 {} \;
	find ${DESTDIR}/usr/include -type f -exec chmod 444 {} \;
	chown -R bin.bin ${DESTDIR}/usr/include

symlinks: ${MACHINE}.symlinks
	rm -rf ${DESTDIR}/usr/include/sys
	-if [ ! -s ${DESTDIR}/usr/include/sys ]; \
	then \
	  ln -s /sys/h ${DESTDIR}/usr/include/sys; \
	else \
	  echo ${DESTDIR}/usr/include/sys not removed; \
	fi

tahoe.symlinks:
	-for i in ${NETDIRS} ${TAHOEDIRS}; do \
	  rm -rf ${DESTDIR}/usr/include/$$i; \
	  if [ ! -s ${DESTDIR}/usr/include/$$i ]; \
	  then \
	    ln -s /sys/$$i ${DESTDIR}/usr/include/$$i; \
	  else \
	    echo ${DESTDIR}/usr/include/$$i not removed; \
	  fi; \
	done

vax.symlinks:
	-for i in ${NETDIRS} ${VAXDIRS}; do \
	  rm -rf ${DESTDIR}/usr/include/$$i; \
	  if [ ! -s ${DESTDIR}/usr/include/$$i ]; \
	  then \
	    ln -s /sys/$$i ${DESTDIR}/usr/include/$$i; \
	  else \
	    echo ${DESTDIR}/usr/include/$$i not removed; \
	  fi; \
	done

copies: ${MACHINE}.copies
	rm -rf ${DESTDIR}/usr/include/sys;
	mkdir ${DESTDIR}/usr/include/sys; 
	chmod 775 ${DESTDIR}/usr/include/sys;
	-(cd /sys/h; tar cf - *.h | (cd ${DESTDIR}/usr/include/sys; tar xpfB -))

tahoe.copies:
	-for i in ${NETDIRS} ${TAHOEDIRS}; do \
	  rm -rf ${DESTDIR}/usr/include/$$i; \
	  cd /sys; \
	  tar cf - $$i/*.h | (cd ${DESTDIR}/usr/include; tar xpfB -); \
	done

vax.copies:
	-for i in ${NETDIRS} ${VAXDIRS}; do \
	  rm -rf ${DESTDIR}/usr/include/$$i; \
	  cd /sys; \
	  tar cf - $$i/*.h | (cd ${DESTDIR}/usr/include; tar xpfB -); \
	done

mac2:	mach servers
	-for i in ${NETDIRS} ${MAC2DIRS} sys; do \
	  if [ ! -d ${DESTDIR}/usr/include/$$i ]; \
	  then \
	    mkdir ${DESTDIR}/usr/include/$$i; \
	  fi; \
	  (cd /sys/$$i; for j in *.[ih]; do \
	    cmp -s $$j ${DESTDIR}/usr/include/$$i/$$j || \
	    install -c -m 444 $$j ${DESTDIR}/usr/include/$$i/$$j; \
	  done); \
	done
	rm -f ${DESTDIR}/usr/include/sys/dkstat.h
	ln -s dk.h ${DESTDIR}/usr/include/sys/dkstat.h
	rm -f ${DESTDIR}/usr/include/mach/machine
	ln -s mac2 ${DESTDIR}/usr/include/mach/machine

mach:
	-for i in ${MACHDIRS}; do \
	  if [ ! -d ${DESTDIR}/usr/include/$$i ]; \
	  then \
	    mkdir ${DESTDIR}/usr/include/$$i; \
	  fi; \
	  (cd /sys/$$i; for j in *.[ihd]*; do \
	    cmp -s $$j ${DESTDIR}/usr/include/$$i/$$j || \
	    install -c -m 444 $$j ${DESTDIR}/usr/include/$$i/$$j; \
	  done); \
	done
	rm -f ${DESTDIR}/usr/include/mig_errors.h
	ln -s mach/mig_errors.h ${DESTDIR}/usr/include/mig_errors.h

servers: ${SERVERS}
	-[ -d ${DESTDIR}/usr/include/servers ] || mkdir ${DESTDIR}/usr/include/servers
	-for i in ${SERVERS}; do \
	  cmp -s $$i ${DESTDIR}/usr/include/servers/$$i || \
	  install -c -m 444 $$i ${DESTDIR}/usr/include/servers/$$i; \
	done

mach_interface.h: /sys/mach/mach.defs
	mig $? -header $@ -server /dev/null -user /dev/null

service.h: ../etc/mach_init/service.defs
	mig $? -header $@ -server /dev/null -user /dev/null

netmemory.h: ../etc/netmemoryserver/netmemory.defs
	mig $? -header $@ -server /dev/null -user /dev/null

errorlib.h: ../usr.lib/libmach/errorlib.h
	rm -f $@; ln -s $? $@

netname.h: ../etc/netmsgserver/server/netname.defs
	mig $? -header $@ -server /dev/null -user /dev/null

netname_defs.h: ../etc/netmsgserver/server/netname_defs.h
	rm -f $@; ln -s $? $@

env_mgr.h: ../etc/envmgr/env_mgr.defs
	mig $? -header $@ -server /dev/null -user /dev/null

netmemory_defs.h: ../etc/netmemoryserver/netmemory_defs.h
	rm -f $@; ln -s $? $@

emdefs.h: ../etc/envmgr/emdefs.h
	rm -f $@; ln -s $? $@

ipcx_types.h: ../etc/ipcexecd/ipcx_types.h
	rm -f $@; ln -s $? $@

tags:
	cwd=/usr/include; \
	for i in ${STD} ${LINKS}; do \
	  ctags -a -f ${TAGSFILE} $$cwd/$$i; \
	done

clean:
	rm -f tags mach_interface.h ${SERVERS}
