# Common elements for most of the DOS, OS/2 and Win32
# makefiles (not Watcom or LCC)

PDCURSES_CURSES_H	= $(PDCURSES_SRCDIR)/curses.h
PDCURSES_CURSPRIV_H	= $(PDCURSES_SRCDIR)/curspriv.h
PDCURSES_HEADERS	= $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H)
PANEL_HEADER		= $(PDCURSES_SRCDIR)/panel.h
TERM_HEADER		= $(PDCURSES_SRCDIR)/term.h

srcdir	= $(PDCURSES_SRCDIR)/pdcurses
demodir	= $(PDCURSES_SRCDIR)/demos

LIBOBJS = addch.$(O) addchstr.$(O) addstr.$(O) attr.$(O) beep.$(O) \
bkgd.$(O) border.$(O) clear.$(O) color.$(O) delch.$(O) deleteln.$(O) \
deprec.$(O) getch.$(O) getstr.$(O) getyx.$(O) inch.$(O) inchstr.$(O) \
initscr.$(O) inopts.$(O) insch.$(O) insstr.$(O) instr.$(O) kernel.$(O) \
keyname.$(O) mouse.$(O) move.$(O) outopts.$(O) overlay.$(O) pad.$(O) \
panel.$(O) printw.$(O) refresh.$(O) scanw.$(O) scr_dump.$(O) scroll.$(O) \
slk.$(O) termattr.$(O) terminfo.$(O) touch.$(O) util.$(O) window.$(O) \
debug.$(O)

PDCOBJS = pdcclip.$(O) pdcdisp.$(O) pdcgetsc.$(O) pdckbd.$(O) pdcscrn.$(O) \
pdcsetsc.$(O) pdcutil.$(O)

DEMOS = testcurs.exe newdemo.exe xmas.exe tuidemo.exe firework.exe \
ptest.exe rain.exe worm.exe
