# $Id: Makefile,v 1.16 2000/05/26 23:04:23 becka Exp $
# -----------------------------------------------------------------------------
#	Makefile system to maintain several drivers. 
# -----------------------------------------------------------------------------
#  The following targets are supported by the Makefile system:
#
#  kgicon	Do all the necessary things to build the loadable module.
#		If there is no configuration file (.config) the drvconf
#		script is run.
#
#  vga          make the complete ggi driver for standard vga on Linux/386
#               This does not need or change .config.
#  
#  config	Run the drvconf script. This will configure the drivers
#		needed to drive your card. See README.CONFIG for detail.
#
#  oldconfig	Restore the configuration saved to .config.old (e.g. after
#		'make distclean')
#
#  depend	Build the dependences. This should be done after any 
#		(re)configuration to allow 'make' to do its job well.
#
#  all		Compile all drivers available and make the ggidrv.o module 
#		as stated in .config
#
#  clean	Remove all *.o files in this and all subdirectories.
#
#  realclean	As clean, but removes the .depend files which hold the 
#		dependencies too. 
#		NOTE: You will have to do a 'make depend' after this to
#		allow make to work properly.
#
#  distclean	Make clean for distribution. Works as realclean, but the
#		configuration file .config is removed too. A backup is
#		stored in .config.old
# --------------------------------------------------------------------------

export TOPLEVEL = $(shell pwd)

include .make_rules

ifeq (.config, $(wildcard .config))
include .config
else
.config:
	./drvconf
	@echo Making ...; make depend; echo
endif

SUBDIRS = accel chipset clock monitor ramdac vidio
SUBSYS = chipset/chipdrv.o ramdac/dacdrv.o clock/clockdrv.o \
	accel/accel.o monitor/mondrv.o vidio/vidio.o
DEBUGFLAGS = -DDEBUG

%.o: %.c
.PHONY: kgicon.o all monitor/mondrv.o ramdac/dacdrv.o chipset/chipdrv.o\
        clock/clockdrv.o accel/accel.o vidio/vidio.o\
	config dep depend vga

default: $(KGIDRIVER)

none: subsys
	@echo "All done."

kgicon:	kgicon.o
	@echo "All done."

kgicon-strip:	kgicon.o
	strip --strip-debug kgicon.o
	@echo "All done."

suidkgi:	suidkgi.o
	@echo "All done."

vga:	vgadrv.o
	echo "Linux/x86 VGA driver done."

all:	kgicon

config:
	./drvconf
	@echo -n "Preparing new config..."; make clean depend

oldconfig: .config.old
	cp -f .config.old .config; rm -f .config.old

.config.old:
	echo There is no .config.old file. Type 'make config' instead.; exit -1

subsys: $(SUBSYS)

kgicon.o: subsys
	@echo "Kernel driver: fbcon-kgi..."
	@ $(MAKE) fbcon-kgi.o
	@echo "Module: kgicon..."
	$(LD) -o $@ -r $(SUBSYS) fbcon-kgi.o

suidkgi.o: subsys
	@echo "Kernel driver: suidkgi..."
	@ $(MAKE) suid-kgi.o
	@echo "Module: suidkgi.o..."
	$(LD) -o $@ -r $(SUBSYS) suid-kgi.o

vgadrv.o: ramdac/vgadacdrv.o chipset/vgachipdrv.o clock/vgaclockdrv.o\
          monitor/vgamondrv.o accel/vgaaccel.o vidio/vgavidio.o fbcon-kgi.o
	$(LD) -o $@ -r $^

dep depend:
	@set -e; for i in chipset ramdac accel clock monitor vidio; \
	  do $(MAKE) -C $$i depend; done

ramdac/dacdrv.o: .config
	@ $(MAKE) -C ramdac dacdrv.o

chipset/chipdrv.o: .config
	@ $(MAKE) -C chipset chipdrv.o

accel/accel.o: .config
	@ $(MAKE) -C accel accel.o

vidio/vidio.o: .config
	@ $(MAKE) -C vidio vidio.o

clock/clockdrv.o: .config
	@ $(MAKE) -C clock clockdrv.o

ramdac/vgadacdrv.o:
	@ $(MAKE) -C ramdac vgadacdrv.o

chipset/vgachipdrv.o:
	@ $(MAKE) -C chipset vgachipdrv.o

accel/vgaaccel.o:
	@ $(MAKE) -C accel vgaaccel.o

vidio/vgavidio.o:
	@ $(MAKE) -C vidio vgavidio.o

clock/vgaclockdrv.o:
	@ $(MAKE) -C clock vgaclockdrv.o

monitor/mondrv.o: .config
	@ $(MAKE) -C monitor mondrv.o

monitor/vgamondrv.o:
	@ $(MAKE) -C monitor vgamondrv.o

fbcon-kgi.o: fbcon-kgi.c .config

include $(TOPLEVEL)/.recursive
