#
# Makefile for SVGA textmode manipulation program
#
# Authors : Koen Gadeyne (kmg@barco.be)
#
#           DOS port of grabmode: Kenneth Albanowski <kjahds@kjahds.com>
#

CFLAGS = -Wall -O2 -s -N
#CFLAGS = -Wall -O2 -g

# A getopt module is required to compile grabmode under DOS
GETOPT=e:\bc31\examples\getopt.c

# installation path for SVGATextMode
INSTBINDIR = /usr/sbin

# installation path for TextConfig. This is also the path that will be
# compiled into SVGATextMode.
INSTCONFDIR = /etc


VERSION = 0.7.0
UNIXVERSION = -DVERSION=\"$(VERSION)\"
DOSVERSION = -DVERSION="$(VERSION)"

CONFIGFILE = -DCONFIGFILE=\"$(INSTCONFDIR)/TextConfig\"
XFREELIBS = XFREE/libcommon_hw.a
XFREELINK = -LXFREE -lcommon_hw

USERPROGS = SVGATextMode clockprobe grabmode
HACKPROGS = setVGAreg getVGAreg setpalette getpalette
DOSPROGS = grabmode.exe


default: user

all: user hack

$(XFREELIBS):
	( cd XFREE ; make all ; cd .. )


user: $(USERPROGS)

hack: $(HACKPROGS)

dos: $(DOSPROGS)



OBJECTS = messages.o vga_prg.o setclock.o configfile.o probe.o SVGATextMode.o setVGAreg.o setpalette.o clockprobe.o grabmode.o

$(OBJECTS): %.o: %.c
	$(CC) -c $(CFLAGS) $(CONFIGFILE) $(UNIXVERSION) $< -o $@
	


SVGATextMode: SVGATextMode.o vga_prg.o configfile.o messages.o setclock.o $(XFREELIBS)
	$(CC) $(CFLAGS) SVGATextMode.o vga_prg.o configfile.o messages.o setclock.o $(XFREELINK) -o SVGATextMode
	
setVGAreg: setVGAreg.o vga_prg.o configfile.o messages.o
	$(CC) $(CFLAGS) setVGAreg.o vga_prg.o configfile.o messages.o -o setVGAreg
	
getVGAreg: setVGAreg
	ln -sf setVGAreg getVGAreg	
	
setpalette: setpalette.o vga_prg.o configfile.o messages.o 
	$(CC) $(CFLAGS) setpalette.o vga_prg.o configfile.o messages.o -o setpalette
	
getpalette: setpalette
	ln -sf setpalette getpalette	
	
clockprobe: clockprobe.o probe.o vga_prg.o messages.o 
	$(CC) $(CFLAGS) clockprobe.o probe.o vga_prg.o messages.o -o clockprobe

grabmode: grabmode.o probe.o vga_prg.o messages.o
	$(CC) $(CFLAGS) grabmode.o probe.o vga_prg.o messages.o -o grabmode

#
# DOS targets
#

grabmode.exe: grabmode.c probe.c vga_prg.c messages.c
	bcc -DDOS $(DOSVERSION) grabmode.c probe.c vga_prg.c messages.c $(GETOPT)

#
# install/clean targets
#

bininstall: 
	install -s -m 755 SVGATextMode $(INSTBINDIR)/SVGATextMode
	
install: bininstall
	@echo "NOTE:"
	@echo "You must also have an '$(INSTCONFDIR)/TextConfig' file."
	@echo "There's an example of such a file in the main SVGATextMode directory."
	@echo "(or type 'make newinstall' to install the TextConfig file together with the rest)"

newinstall: bininstall	
	install -m 644 TextConfig $(INSTCONFDIR)/TextConfig



clean:
	rm -f *~ $(OBJECTS) *.bak *.orig *.rej
	( cd XFREE ; make clean )

pristine: mrproper

distclean: clean
	rm -f $(HACKPROGS) DEADJOE 
	rm -f `find . -name "*~"`

mrproper: distclean
	rm -f SVGATextMode clockprobe grabmode
	( cd XFREE ; make mrproper )

	
#
# dependencies
#

messages.o: messages.c messages.h
vga_prg.o: vga_prg.c vga_prg.h messages.h
setclock.o: setclock.c setclock.h vga_prg.h messages.h XFREE/xfree_compat.h XFREE/common_hw/xf86_HWlib.h
configfile.o: configfile.c configfile.h messages.h
probe.o: probe.c probe.h vga_prg.h messages.h
SVGATextMode.o: SVGATextMode.c vga_prg.h configfile.h messages.h setclock.h
setVGAreg.o: setVGAreg.c vga_prg.h configfile.h messages.h
setpalette.o: setpalette.c vga_prg.h configfile.h messages.h
clockprobe.o: clockprobe.c probe.h vga_prg.h messages.h
grabmode.o: grabmode.c probe.h vga_prg.h configfile.h messages.h

