# Generated automatically from Makefile.in by configure.
#  plex86: run multiple x86 operating systems concurrently
#  Copyright (C) 1999-2001 Kevin P. Lawton
#
#  This library is free software; you can redistribute it and/or
#  modify it under the terms of the GNU Lesser General Public
#  License as published by the Free Software Foundation; either
#  version 2 of the License, or (at your option) any later version.
#
#  This library 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
#  Lesser General Public License for more details.
#
#  You should have received a copy of the GNU Lesser General Public
#  License along with this library; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


CC      = gcc
CFLAGS  = -g -O2 -Wall -Wstrict-prototypes
LDFLAGS = 
KERNEL_TARGET = plex86.o
HOST_TARGET = linux-target
HOST_CLEAN = linux-clean

srcdir	= .

LD = ld

HOST_O = host-linux.o

# extra kernel CFLAGS and LDFLAGS for each host OS
KCFLAGS_LINUX  = -fno-strength-reduce -fomit-frame-pointer \
                 -malign-loops=2 -malign-jumps=2 -malign-functions=2 \
                 -D__KERNEL__ -I/lib/modules/2.2.19/build/include -DCPU=586 -DMODULE
KLDFLAGS_LINUX = -r

KCFLAGS_NETBSD  = -fno-strength-reduce -nostdinc -fomit-frame-pointer \
                 -malign-loops=2 -malign-jumps=2 -malign-functions=2 \
                 -D_KERNEL -I/sys -I/sys/arch -I. -D_LKM
KLDFLAGS_NETBSD = -r

KCFLAGS_FREEBSD  = -fno-strength-reduce -nostdinc -fomit-frame-pointer \
                 -malign-loops=2 -malign-jumps=2 -malign-functions=2 \
                 -D_KERNEL -I/sys -I/sys/sys -I. -D_LKM \
		 -DFREEBSD_PLEX86_DEBUG
KLDFLAGS_FREEBSD = -r

KCFLAGS_BEOS   =
KLDFLAGS_BEOS  = -nostdlib /boot/develop/lib/x86/_KERNEL_

KLDFLAGS  = $(KLDFLAGS_LINUX)

ALL_CFLAGS = $(CFLAGS) $(KCFLAGS_LINUX) -I$(srcdir)/include -I$(srcdir)/..


.c.o:
	$(CC) -c $(ALL_CFLAGS) $<
.S.o:
	$(CC) -c $(ALL_CFLAGS) -D__ASSEMBLY__ $<

main_target: $(HOST_TARGET) $(KERNEL_TARGET)

$(KERNEL_TARGET): $(HOST_O) monitor-host.o \
		nexus.o flag-nexus.o print-nexus.o \
		mode-nexus.o util-nexus.o system-nexus.o \
		fault-mon.o phymem-mon.o panic-mon.o \
		paging-mon.o system-mon.o mode-mon.o instrument-mon.o \
		segment-mon.o emulation/emu.o iodev/iodev.o
	$(MAKE) -C emulation $(MDEFINES)
	$(MAKE) -C iodev $(MDEFINES)
	$(LD) $(KLDFLAGS) $^ -o $@

emulation/emu.o::
	$(MAKE) -C emulation $(MDEFINES)

dt/dt.o::
	$(MAKE) -C dt $(MDEFINES)

iodev/iodev.o::
	$(MAKE) -C iodev $(MDEFINES)

clean: $(HOST_CLEAN) main_clean

main_clean:
	$(MAKE) -C emulation clean
	$(MAKE) -C iodev clean
	$(MAKE) -C dt clean
	/bin/rm -f *.o *.s $(KERNEL_TARGET)

dist-clean: clean
	$(MAKE) -C emulation dist-clean
	$(MAKE) -C iodev dist-clean
	$(MAKE) -C dt dist-clean
	/bin/rm -f Makefile

# Linux specific targets
linux-target:

linux-clean:


# NetBSD specific targets
netbsd-target: netbsd-machine

netbsd-machine:
	ln -sf /sys/arch/i386/include machine

netbsd-clean:
	/bin/rm -f machine

# FreeBSD specific targets
freebsd-target: freebsd-machine
	[ -r opt_posix.h ] || touch opt_posix.h

freebsd-machine:
	ln -sf /sys/i386/include machine

freebsd-clean:
	/bin/rm -f opt_posix.h
	/bin/rm -f machine

# BeOS specific targets
beos-install: $(KERNEL_TARGET)
	cp -f $(KERNEL_TARGET) /boot/home/config/add-ons/kernel/drivers/bin
	mkdir -p /boot/home/config/add-ons/kernel/drivers/dev/misc
	ln -sf ../../bin/$(KERNEL_TARGET) /boot/home/config/add-ons/kernel/drivers/dev/misc/$(KERNEL_TARGET)

Makefile:	Makefile.in ../config.status
		cd ..; CONFIG_FILES=kernel/Makefile CONFIG_HEADERS= $(SHELL) config.status
