# 
#   Copyright (C) 1994, 1995 Free Software Foundation
#
#   This program is free software; you can redistribute it and/or
#   modify it under the terms of the GNU General Public License as
#   published by the Free Software Foundation; either version 2, or (at
#   your option) any later version.
#
#   This program is distributed in the hope that it will be useful, but
#   WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
#   General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program; if not, write to the Free Software
#   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

dir := libdiskfs
makemode := library

FSSRCS= dir-link.c dir-mkdir.c dir-mkfile.c dir-lookup.c dir-rename.c    \
	dir-rmdir.c dir-unlink.c file-chauthor.c file-chflags.c file-chown.c \
	file-get-trans.c file-get-transcntl.c file-getfh.c file-getlinknode.c \
	file-pathconf.c file-set-trans.c file-statfs.c file-sync.c 	    \
	file-syncfs.c file-truncate.c file-utimes.c file-getcontrol.c       \
	file-lock.c file-chmod.c dir-readdir.c file-lock-stat.c file-exec.c \
	dir-chg.c file-chg.c file-access.c file-inv-trans.c

IOSRCS= io-async-icky.c io-async.c io-duplicate.c io-get-conch.c 	    \
	io-interrupt.c io-map-cntl.c io-map.c io-modes-get.c io-modes-off.c \
	io-modes-on.c io-modes-set.c io-owner-mod.c io-owner-get.c 	    \
	io-prenotify.c io-read.c io-readable.c io-reauthenticate.c	    \
	io-rel-conch.c io-restrict-auth.c io-seek.c io-select.c io-stat.c   \
	io-stubs.c io-write.c io-version.c io-sigio.c

FSYSSRCS=fsys-getroot.c fsys-goaway.c fsys-startup.c fsys-getfile.c \
	fsys-options.c fsys-syncfs.c

IFSOCKSRCS=ifsock.c

NOTIFYSRCS=notify-nosenders.c notify-stubs.c

INTSRCS=interrupt.c

OTHERSRCS = conch-fetch.c conch-set.c dir-clear.c dir-init.c dir-renamed.c  \
	node-create.c node-drop.c node-make.c node-rdwr.c node-update.c     \
	peropen-make.c peropen-rele.c protid-make.c protid-rele.c	    \
	rdwr-internal.c trans-destroy.c trans-start.c init-init.c	    \
	init-startup.c init-first.c init-loop.c				    \
	boot-parse.c boot-start.c ports-clean.c				    \
	ports-consts.c pager-consts.c ports-demuxer.c exc.c node-times.c    \
	trans-sync.c shutdown.c ports-noports.c ports-soft.c ports-idle.c   \
	sync-interval.c sync-default.c					    \
	opts-set.c opts-std-startup.c opts-runtime-def.c

SRCS = $(NOTIFYSRCS) $(OTHERSRCS) $(FSSRCS) $(IOSRCS) $(FSYSSRCS) $(INTSRCS) \
	$(IFSOCKSRCS)
MIGSTUBS = fsServer.o ioServer.o fsysServer.o notifyServer.o execServer.o \
	interruptServer.o fsys_replyUser.o ourfs_notifyUser.o ifsockServer.o
notify-MIGSFLAGS = -DSEQNOS

OBJS = $(sort $(subst .c,.o,$(SRCS)) $(MIGSTUBS)) argz.o options.o

LCLHDRS = diskfs.h priv.h lithp.h fsmutations.h
REMHDRS = ../hurd/ports.h ../hurd/pager.h ../hurd/fshelp.h ../hurd/ioserver.h ../lib/argz.h ../lib/options.h
MIGSFLAGS = -imacros fsmutations.h
MIGCOMSFLAGS = -prefix diskfs_
libname = libdiskfs
installhdrs = diskfs.h

CPPFLAGS += -I../lib
CPPFLAGS += $(CPPFLAGS-$(notdir $<))
vpath %.c ../lib

include ../Makeconf

$(subst .c,.o,$(FSSRCS)): fs_S.h
dir-readdir.o $(subst .c,.o,$(IOSRCS)): io_S.h
$(subst .c,.o,$(FSYSSRCS)) boot-start.o: fsys_S.h
boot-start.o: fsys_reply_U.h
$(subst .c,.o,$(NOTIFYSRCS)): notify_S.h
$(subst .c,.o,$(INTSRCS)): interrupt_S.h
$(subst .c,.o,$(IFSOCKSRCS)): ifsock_S.h
dir-chg.o: ourfs_notify_U.h

notify-nosenders.o ports-clean.o: ../hurd/pager.h

$(OBJS): priv.h diskfs.h ../hurd/ioserver.h ../hurd/ports.h ../hurd/fshelp.h
file-chauthor.o: lithp.h

# We don't use those, so we're safe in breaking them.
ourfs_notify_U.h ourfs_notifyUser.c: $(includedir)/hurd/fs_notify.defs $(includedir)/hurd/hurd_types.defs
	$(CPP) $(CPPFLAGS) -Droutine=simpleroutine $(includedir)/hurd/fs_notify.defs \
	| $(MIGCOM) -prefix nowait_ -server /dev/null -user ourfs_notifyUser.c -header ourfs_notify_U.h