#
# 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.6.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: XFREECODE user

all: XFREECODE user hack


XFREECODE:
	( cd XFREE ; make all ; cd .. )


user: $(USERPROGS)

hack: $(HACKPROGS)

dos: $(DOSPROGS)



#consider this:
# .c.o:
#	$(CC) $(CFLAGS) $(CONFIGFILE) $(UNIXVERSION) ...
	


messages.o: messages.c messages.h
	$(CC) $(CFLAGS) -c messages.c

vga_prg.o: vga_prg.c vga_prg.h messages.h
	$(CC) $(CFLAGS) -c vga_prg.c

setclock.o: setclock.c setclock.h vga_prg.h messages.h XFREE/xfree_compat.h XFREE/common_hw/xf86_HWlib.h
	$(CC) $(CFLAGS) -c setclock.c

configfile.o: configfile.c configfile.h messages.h
	$(CC) $(CFLAGS) $(CONFIGFILE) -c configfile.c


probe.o: probe.c probe.h vga_prg.h messages.h
	$(CC) $(CFLAGS) $(CONFIGFILE) $(UNIXVERSION) -c probe.c





SVGATextMode.o: SVGATextMode.c vga_prg.h configfile.h messages.h setclock.h
	$(CC) $(CFLAGS) $(CONFIGFILE) $(UNIXVERSION) -c SVGATextMode.c
	
SVGATextMode: XFREECODE 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.o: setVGAreg.c vga_prg.h configfile.h messages.h
	$(CC) $(CFLAGS) $(CONFIGFILE) $(UNIXVERSION) -c setVGAreg.c

setVGAreg: setVGAreg.o vga_prg.o configfile.o messages.o
	$(CC) $(CFLAGS) setVGAreg.o vga_prg.o configfile.o messages.o $(XFREELINK) -o setVGAreg
	
getVGAreg: setVGAreg
	ln -sf setVGAreg getVGAreg	
	
setpalette.o: setpalette.c vga_prg.h configfile.h messages.h
	$(CC) $(CFLAGS) $(UNIXVERSION) -c setpalette.c

setpalette: setpalette.o vga_prg.o configfile.o messages.o 
	$(CC) $(CFLAGS) setpalette.o vga_prg.o configfile.o messages.o $(XFREELINK) -o setpalette
	
getpalette: setpalette
	ln -sf setpalette getpalette	
	
clockprobe.o: clockprobe.c probe.h vga_prg.h messages.h
	$(CC) $(CFLAGS) $(UNIXVERSION) -c clockprobe.c

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

grabmode.o: grabmode.c probe.h vga_prg.h configfile.h messages.h
	$(CC) $(CFLAGS) $(UNIXVERSION) -c grabmode.c
	

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





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 *~ *.o *.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

	
