DEFS      = -D__WINESRC__
TOPSRCDIR = @top_srcdir@
TOPOBJDIR = ..
SRCDIR    = @srcdir@
VPATH     = @srcdir@
MODULE    = none
EXTRALIBS = @LIBPOLL@

C_SRCS = \
	async.c \
	atom.c \
	change.c \
	class.c \
	clipboard.c \
	console.c \
	context_alpha.c \
	context_i386.c \
	context_powerpc.c \
	context_sparc.c \
	context_x86_64.c \
	debugger.c \
	directory.c \
	event.c \
	fd.c \
	file.c \
	handle.c \
	hook.c \
	mach.c \
	mailslot.c \
	main.c \
	mapping.c \
	mutex.c \
	named_pipe.c \
	object.c \
	process.c \
	procfs.c \
	ptrace.c \
	queue.c \
	region.c \
	registry.c \
	request.c \
	semaphore.c \
	serial.c \
	signal.c \
	snapshot.c \
	sock.c \
	symlink.c \
	thread.c \
	timer.c \
	token.c \
	trace.c \
	unicode.c \
	user.c \
	window.c \
	winstation.c

PROGRAMS = wineserver
MANPAGES = wineserver.man

INSTALLDIRS = $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man$(prog_manext)

all: $(PROGRAMS) $(MANPAGES)

@MAKE_RULES@

wineserver: $(OBJS)
	$(CC) -o $@ $(OBJS) $(LIBWINE_LDFLAGS) $(LIBPORT) $(LDFLAGS) $(LIBS)

install:: $(PROGRAMS) $(MANPAGES) $(INSTALLDIRS)
	$(INSTALL_PROGRAM) wineserver $(DESTDIR)$(bindir)/wineserver
	$(INSTALL_DATA) wineserver.man $(DESTDIR)$(mandir)/man$(prog_manext)/wineserver.$(prog_manext)

uninstall::
	$(RM) $(DESTDIR)$(bindir)/wineserver $(DESTDIR)$(mandir)/man$(prog_manext)/wineserver.$(prog_manext)

@DEPENDENCIES@  # everything below this line is overwritten by make depend
