# Pick a C compiler.
#CC = cc
CC = gcc
ARC_NAME = 
ARC_FILES = 
MAKE_GLK = make.glk
ZIP = pkzip
# You may need to set directories to pick up the curses library.
#INCLUDEDIRS = -I/usr/5include
#LIBDIRS = -L/usr/5lib 
GLKL = -lglkt
BASE_LIBS = -lcurses
OPTIONS = -O -g -Wall
SOUND_LIBS = -lm -lalleg -ljgmod
GRX_LIBS = -lpng -lz -ljpeg
CONFIG_LIBS = -lfl
CFLAGS = $(OPTIONS) $(INCLUDEDIRS)
LIBS = $(BASE_LIBS) $(SOUND_LIBS) $(CONFIG_LIBS)
GLKLIB = libglkt.a
GLK_CREDITS = credits.o
GLKTD_SOURCE_FILES = \
gtconfig.l.arc gi_blorb.c.arc gi_blorb.h.arc gi_dispa.c.arc gi_dispa.h.arc glkdos.h.arc gtblorb.c.arc gtevent.c.arc gtfref.c.arc gtgestal.c.arc gtinput.c.arc gtmessag.c.arc gtmessin.c.arc gtmisc.c.arc gtoption.h.arc gtschan.c.arc gtstream.c.arc gtstyle.c.arc gtw_blnk.c.arc gtw_blnk.h.arc gtw_buf.c.arc gtw_buf.h.arc gtw_grid.c.arc gtw_grid.h.arc gtw_pair.c.arc gtw_pair.h.arc gtwindow.c.arc main.c.arc makefile.arc gtno_cfg.c.arc mdd.bsh.arc back.bsh.arc ccurses.c.arc calleg.c.arc credits.c.arc credita.c.arc cscr.h.arc alaiff.c.arc gtsetup.c.arc gtlink.c.arc gtcolor.c.arc gtpref.c.arc gtw_grx.c.arc gtw_grx.h.arc gtnimage.c.arc gtimage.c.arc alpng.c.arc aljpeg.c.arc gtw_ngrx.c.arc gtpref.h.arc gtcolor.h.arc sglk.c.arc flist.c.arc gtkey.c.arc cncurses.c.arc cdos.c.arc config.c.arc config.exe.arc mouse.h.arc mouse.c.arc

GLKTD_BASE_FILES = readme.arc glk.h.arc glkstart.c.arc glkstart.h.arc font.dat.arc sglk.h.arc makefile.gd.arc

GLKTD_BIN_FILES = \
libglkt.a.arc libglka.a.arc libglkn.a.arc libglks.a.arc libglkc.a.arc libglkan.a.arc libglkd.a.arc make.glk.arc make.gln.arc make.gls.arc make.glk.arc make.gla.arc make.glg.arc make.gld.arc 

GLKTD_BASE_OBJS = \
  sglk.o gtfref.o gtgestal.o gtinput.o flist.o \
  gtmessag.o gtmessin.o gtstream.o gtstyle.o \
  gtw_blnk.o gtw_buf.o gtw_grid.o gtw_pair.o gtwindow.o \
  gtblorb.o gi_dispa.o gi_blorb.o gtsetup.o gtlink.o \
  gtcolor.o gtpref.o gtkey.o main.o

GLKTD_CURSES_OBJS = ccurses.o gtw_ngrx.o gtnimage.o mouse.o

GLKTD_PCBIOS_OBJS = cdos.o gtw_ngrx.o gtnimage.o mouse.o

GLKTD_UNIX_OBJS = cncurses.o gtw_ngrx.o gtnimage.o
GLKTD_ALLEG_OBJS = calleg.o gtw_grx.o gtimage.o alpng.o aljpeg.o

GLKTD_ALLEGN_OBJS = calleg.o gtw_grx.o gtnimage.o

GLKTD_CONFIG_OBJS = gtconfig.o

GLKTD_NCFG_OBJS = gtno_cfg.o

GLKTD_SOUND_OBJS = gtschan.o gtevent.o gtmisc.o alaiff.o

GLKTD_NSND_OBJS = gtschans.o gtevents.o gtmiscs.o 

GLKTD_OBJS = $(GLKTD_BASE_OBJS) $(GLKTD_CURSES_OBJS) $(GLKTD_CONFIG_OBJS) \
  $(GLKTD_SOUND_OBJS) $(GLK_CREDITS)

GLKTD_HEADERS = \
  glkdos.h gtoption.h gtw_blnk.h gtw_buf.h \
  gtw_grid.h gtw_pair.h gtw_grx.h gi_dispa.h cscr.h

GLKTD_CREDITS_S = creditss.o

GLKTD_CREDITS_A = credita.o

default: $(GLKLIB) $(MAKE_GLK)
	 rm $(GLK_CREDITS)
dist: source_arc bin_arc
-include makefile.cst
source_arc: $(GLKTD_HEADERS) $(GLKTD_OBJS)
	make archive "ARC_FILES = $(GLKTD_SOURCE_FILES) $(GLKTD_BASE_FILES)" "ARC_NAME = glktds.zip"
bin_arc:
	make archive "ARC_FILES = $(GLKTD_BIN_FILES) $(GLKTD_BASE_FILES)" "ARC_NAME = glktdb.zip"
all: no_sound no_config no_frills default alleg allegn dos

archive: $(ARC_FILES)

backup: source_arc
	bash mdd.bsh
	bash back.bsh glktds.zip
config: config.c cdos.o
	gcc $< cdos.o -o $@
%.arc: %
	$(ZIP) $(ARC_NAME) $<

$(GLKLIB): $(GLKTD_OBJS)
	ar r $(GLKLIB) $(GLKTD_OBJS)
	ranlib $(GLKLIB)
alleg: 
	make "GLKLIB = libglka.a" "GLKTD_OBJS = $(GLKTD_BASE_OBJS) $(GLKTD_CONFIG_OBJS) $(GLKTD_ALLEG_OBJS) $(GLKTD_SOUND_OBJS) $(GLKTD_CREDITS_A)" "LIBS=$(CONFIG_LIBS) $(SOUND_LIBS) $(GRX_LIBS)" "GLKL = -lglka" "MAKE_GLK = make.gla" "GLK_CREDITS=$(GLKTD_CREDITS_A)"

allegn: 
	make "GLKLIB = libglkan.a" "GLKTD_OBJS = $(GLKTD_BASE_OBJS) $(GLKTD_CONFIG_OBJS) $(GLKTD_ALLEGN_OBJS) $(GLKTD_SOUND_OBJS) $(GLKTD_CREDITS_A)" "LIBS=$(CONFIG_LIBS) $(SOUND_LIBS)" "GLKL = -lglkan" "MAKE_GLK = make.glg" "GLK_CREDITS=$(GLKTD_CREDITS_A)"

no_sound:
	make "GLKLIB = libglks.a" "GLKTD_OBJS = $(GLKTD_BASE_OBJS) $(GLKTD_CONFIG_OBJS) $(GLKTD_CURSES_OBJS) $(GLKTD_NSND_OBJS) $(GLKTD_CREDITS_S)" "LIBS=$(BASE_LIBS) $(CONFIG_LIBS)" "GLKL = -lglks" "MAKE_GLK = make.gls" "GLK_CREDITS=$(GLKTD_CREDITS_S)"

no_config:
	make "GLKLIB = libglkc.a" "GLKTD_OBJS = $(GLKTD_BASE_OBJS) $(GLKTD_NCFG_OBJS) $(GLKTD_CURSES_OBJS) $(GLKTD_SOUND_OBJS) $(GLK_CREDITS)" "LIBS=$(BASE_LIBS) $(SOUND_LIBS)" "GLKL = -lglkc" "MAKE_GLK = make.glc"

dos:
	make "GLKLIB = libglkd.a" "GLKTD_OBJS = $(GLKTD_BASE_OBJS) $(GLKTD_CONFIG_OBJS) $(GLKTD_PCBIOS_OBJS) $(GLKTD_SOUND_OBJS) $(GLK_CREDITS)" "LIBS=$(BASE_LIBS) $(CONFIG_LIBS) $(SOUND_LIBS)" "GLKL = -lglkd" "MAKE_GLK = make.gld"

unix:
	make "GLKLIB = libglku.a" "GLKTD_OBJS = $(GLKTD_BASE_OBJS) $(GLKTD_CONFIG_OBJS) $(GLKTD_UNIX_OBJS) $(GLKTD_NSND_OBJS) $(GLK_CREDITS)" "LIBS=$(BASE_LIBS) $(CONFIG_LIBS)" "GLKL = -lglku" "MAKE_GLK = make.glu" "GLK_CREDITS=$(GLKTD_CREDITS_S)" "CFLAGS=$(CFLAGS) -DUNIX"

no_frills:
	make "GLKLIB = libglkn.a" "GLKTD_OBJS = $(GLKTD_BASE_OBJS) $(GLKTD_NCFG_OBJS) $(GLKTD_CURSES_OBJS) $(GLKTD_NSND_OBJS) $(GLKTD_CREDITS_S)" "LIBS=$(BASE_LIBS)" "GLKL = -lglkn" "MAKE_GLK = make.gln" "GLK_CREDITS=$(GLKTD_CREDITS_S)"

gtconfig.c: gtconfig.l
	flex -ogtconfig.c gtconfig.l
$(MAKE_GLK): 
	echo LINKLIBS = $(LIBDIRS) $(LIBS) > $(MAKE_GLK)
	echo GLKLIB = $(GLKL) >> $(MAKE_GLK)
	echo GLKFILE = $(GLKLIB) >> $(MAKE_GLK)
$(GLKTD_SOUND_OBJS): glk.h $(GLKTD_HEADERS)

gtschans.o: gtschan.c glk.h $(GLKTD_HEADERS) 
	$(CC) $(CFLAGS) -DNO_SOUND -o $@ -c $<
gtevents.o: gtevent.c glk.h $(GLKTD_HEADERS) 
	$(CC) $(CFLAGS) -DNO_SOUND -o $@ -c $<
gtmiscs.o: gtmisc.c glk.h $(GLKTD_HEADERS) 
	$(CC) $(CFLAGS) -DNO_SOUND -o $@ -c $<
creditss.o: credits.c glk.h $(GLKTD_HEADERS) 
	$(CC) $(CFLAGS) -DNO_SOUND -o $@ -c $<
$(GLKTD_BASE_OBJS): glk.h $(GLKTD_HEADERS)
$(GLKTD_CONFIG_OBJS): glk.h $(GLKTD_HEADERS)
clean:
	rm -f *~ $(GLKTD_BASE_OBJS) $(GLKTD_CONFIG_OBJS) $(GLKTD_SOUND_OBJS) $(GLKTD_NSND_OBJS) $(GLKTD_NCFG_OBJS) $(GLKLIB) $(MAKE_GLK) gtconfig.c





