# Makefile for PDCurses library for SDL

O = o

ifndef PDCURSES_SRCDIR
	PDCURSES_SRCDIR	= ..
endif

include $(PDCURSES_SRCDIR)/libobjs.mif

osdir		= $(PDCURSES_SRCDIR)/sdl1

PDCURSES_SDL_H	= $(osdir)/pdcsdl.h

ifeq ($(DEBUG),Y)
        CFLAGS  = -g -Wall -DPDCDEBUG
else
        CFLAGS  = -O2 -Wall
endif

CC		= gcc
BUILD		= $(CC) $(CFLAGS) -I$(PDCURSES_SRCDIR)
LDFLAGS		= -mwindows $(LIBCURSES)

BASEDEF		= $(PDCURSES_SRCDIR)\exp-base.def

DEFDEPS		= $(BASEDEF)

DEFFILE		= pdcurses.def

ifeq ($(DLL),Y)
	BUILD += -DPDC_DLL_BUILD
	LIBEXE = gcc $(DEFFILE)
	LIBFLAGS = -Wl,--out-implib,libpdcurses.a -shared -o
	LIBCURSES = pdcurses.dll
	CLEAN = $(LIBCURSES) *.a $(DEFFILE)
	POST = -lSDL
else
	LIBEXE = ar
	LIBFLAGS = rcv
	LIBCURSES = libpdcurses.a
	CLEAN = *.a
	LDFLAGS += -lSDL
endif

DEMOS += sdltest.exe

.PHONY: all libs clean demos

all:	libs demos

libs:	$(LIBCURSES)

clean:
	-del *.o $(CLEAN) *.exe

demos:	$(DEMOS)
	strip *.exe

pdcurses.dll: $(DEFFILE)

$(DEFFILE): $(DEFDEPS)
	echo LIBRARY pdcurses > $@        
	echo EXPORTS >> $@        
	type $(BASEDEF) >> $@ 
	echo pdc_screen >> $@
	echo pdc_font >> $@
	echo pdc_icon >> $@
	echo pdc_back >> $@
	echo pdc_sheight >> $@
	echo pdc_swidth >> $@
	echo pdc_yoffset >> $@
	echo pdc_xoffset >> $@

$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
	$(LIBEXE) $(LIBFLAGS) $@ $? $(POST)

$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
$(PDCOBJS) : $(PDCURSES_SDL_H)
$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES)
tui.o tuidemo.o : $(PDCURSES_CURSES_H)
terminfo.o: $(TERM_HEADER)
panel.o ptest.exe: $(PANEL_HEADER)

$(LIBOBJS) : %.o: $(srcdir)/%.c
	$(BUILD) -c $<

$(PDCOBJS) : %.o: $(osdir)/%.c
	$(BUILD) -c $<

firework.exe newdemo.exe rain.exe testcurs.exe worm.exe xmas.exe \
ptest.exe: %.exe: $(demodir)/%.c
	$(BUILD) -o $@ $< $(LDFLAGS)

tuidemo.exe: tuidemo.o tui.o
	$(CC) -o $@ tuidemo.o tui.o $(LDFLAGS)

tui.o: $(demodir)/tui.c $(demodir)/tui.h
	$(BUILD) -c $<

tuidemo.o: $(demodir)/tuidemo.c $(demodir)/tui.h
	$(BUILD) -c $<

sdltest.exe: $(osdir)/sdltest.c
	$(BUILD) -o $@ $< -mwindows $(LIBCURSES) -lmingw32 -lSDLmain -lSDL
