/*================================================================
 * Imakefile for drvmidi
 * See also config.h for other miscellaneous configurations.
 *================================================================*/

/*----------------------------------------------------------------
 * Control interfaces to be built.
 * At least one interface should be defined.
 * Comment out unnecessary interfaces.
 */

#define INTERFACE_DUMB
#define INTERFACE_PIPE
#define INTERFACE_NCURSES
/* #define INTERFACE_TK */


/*----------------------------------------------------------------
 * external control panel; Tcl/Tk and Athena Widget version
 */

#define BUILD_TKMIDI
/* #define BUILD_ATMIDI */


XCOMM ----------------------------------------------------------------
XCOMM    installation directories
XCOMM ----------------------------------------------------------------

INSTDIR = /usr/local

BINDIR = $(INSTDIR)/bin
MANDIR = $(INSTDIR)/man/man1
MANSUFFIX = 1

XCOMM intallation directory for Tcl/Tk scripts
TCLDIR = $(INSTDIR)/lib/awe


/*----------------------------------------------------------------
 * preloading method; use AWElib or invoke sfxload program
 */

#define USE_AWELIB
/* AWELIBDIR = ../awesfx-0.4.3a/awelib */
AWELIBDIR = $(INSTDIR)/lib
/* AWEINCDIR = ../awesfx-0.4.3a/include */
AWEINCDIR = $(INSTDIR)/include/awe


/*================================================================
 * general include files
 *================================================================*/

#ifdef FreeBSDArchitecture
XCOMM search path for awe_voice.h
INCLUDES += -I/usr/src/sys/i386/isa/sound -I/usr/src/sys/gnu/i386/isa/sound
#endif

/*================================================================
 * interface dependencies
 *================================================================*/

/* ncurses uses a part of dumb routine */
#ifdef INTERFACE_NCURSES
#ifndef INTERFACE_DUMB
#define INTERFACE_DUMB
#endif
#endif

/* tkmidi and atmidi require pipe interface */
#if defined(BUILD_TKMIDI) || defined(BUILD_ATMIDI)
#ifndef INTERFACE_PIPE
#define INTERFACE_PIPE
#endif
#endif


/*================================================================
 * dumb interface
 *================================================================*/

#ifdef INTERFACE_DUMB
XCOMM dumb interface
CTRLS += dumb_c.o
DEFINES += -DINCLUDE_DUMB_MODE
#endif


XCOMM ================================================================
XCOMM   Definitions for Tcl/Tk scripits
XCOMM ================================================================

#if defined(INTERFACE_TK) || defined(BUILD_TKMIDI)

TKPROGPATH = $(TCLDIR)/tkawe.tcl
TCLFILES = tkawe.tcl tkpanel.tcl browser.tcl misc.tcl tkmkid.tcl

DEFINES += -DTKPROGPATH=\"$(TKPROGPATH)\"

XCOMM Tk/Tcl libs, X11 library, extra libraries
#ifdef FreeBSDArchitecture
INCLUDES += -I/usr/local/include
TKLIBS = -L/usr/local/lib -ltk41 -ltcl75 $(XLIB)
#else
TKLIBS = -L/usr/X11R6/lib -ltk -ltcl $(XLIB) -ldl
#endif

XCOMM Tcl/Tk shell for making tclIndex
TCLSH = wish
/* TCLSH = tclsh */

#endif

#if defined(INTERFACE_TK) || defined(INTERFACE_PIPE)
XCOMM pipe and Tcl/Tk interface
CTRLS += ext_c.o
#ifdef INTERFACE_TK
DEFINES += -DINCLUDE_TK_MODE
CTRLS += trace.o
CTRLLIBS += $(TKLIBS)
#endif
#ifdef INTERFACE_PIPE
DEFINES += -DINCLUDE_PIPE_MODE
#endif
#endif


XCOMM ================================================================
XCOMM    ncurses interface:
XCOMM ================================================================

#ifdef INTERFACE_NCURSES
XCOMM ncurses interface
CTRLS += ncurs_c.o insts.o
DEFINES += -DINCLUDE_NCURSES_MODE
CTRLLIBS += -lncurses
/* CTRLLIBS += -lcurses */  /* BSD curses */

/* include file for ncurses */
#ifdef FreeBSDArchitecture
DEFINES += -DNCURSES_HEADER="<ncurses.h>"
#else /* Linux */
DEFINES += -I/usr/include/ncurses -DNCURSES_HEADER="<curses.h>"
#endif

#endif


XCOMM ================================================================
XCOMM     main definitions
XCOMM ================================================================

VERSION = 0.4.3
DEFINES += -DVERSION_STR=\"$(VERSION)\"

/*CDEBUGFLAGS=DebuggableCDebugFlags*/
CDEBUGFLAGS=-Wall

#ifdef USE_AWELIB
PRELOAD = aweload.o
INCLUDES += -I$(AWEINCDIR)
EXTRALIBS += -L$(AWELIBDIR) -lawe
#else
PRELOAD = preload.o
UTILS +=  malloc.o bool.o mygetopt.o cmpopen.o
#endif

UTILS += options.o signal.o glinfo.o awe_effect.o
LIBUTIL = libutil.a
SEQS = event.o seq.o $(PRELOAD)


XCOMM ---------------------------------------------------------------
XCOMM    drvmidi program
XCOMM ----------------------------------------------------------------

MOBJS = midi.o index.o readmidi.o $(SEQS) $(CTRLS)

NormalProgramTarget(drvmidi, $(MOBJS), $(LIBUTIL), $(LIBUTIL) $(CTRLLIBS) $(EXTRALIBS), -lm)

AllTarget(drvmidi)
InstallProgram(drvmidi, $(BINDIR))
InstallManPage(drvmidi, $(MANDIR))


#ifdef BUILD_TKMIDI
XCOMM ----------------------------------------------------------------
XCOMM    tkmidi player
XCOMM ----------------------------------------------------------------

NormalProgramTarget(tkmidi, tkmidi.o ext_init.o trace.o, $(LIBUTIL), $(LIBUTIL) $(TKLIBS), -lm)

AllTarget(tkmidi)
InstallProgram(tkmidi, $(BINDIR))
InstallManPage(tkmidi, $(MANDIR))

#endif

#ifdef BUILD_ATMIDI
XCOMM ----------------------------------------------------------------
XCOMM     atmidi player
XCOMM ----------------------------------------------------------------

NormalProgramTarget(atmidi, atmidi.o ext_init.o, $(LIBUTIL), $(LIBUTIL) XawClientLibs, -lm)

AllTarget(atmidi)
InstallProgram(atmidi, $(BINDIR))
InstallAppDefaults(Atmidi)

#endif


XCOMM ----------------------------------------------------------------
XCOMM    other programs / miditext & txtplay
XCOMM ----------------------------------------------------------------

NormalProgramTarget(miditext, miditext.o readmidi.o, $(LIBUTIL), $(LIBUTIL) $(EXTRALIBS), -lm)

AllTarget(miditext)
InstallProgram(miditext, $(BINDIR))

NormalProgramTarget(txtplay, txtplay.o dumb_c.o $(SEQS), $(LIBUTIL), $(LIBUTIL) $(EXTRALIBS), -lm)

AllTarget(txtplay)
InstallProgram(txtplay, $(BINDIR))


XCOMM ----------------------------------------------------------------
XCOMM     utility library
XCOMM ----------------------------------------------------------------

NormalLibraryTarget(util, $(UTILS))


#if defined(INTERFACE_TK) || defined(BUILD_TKMIDI)
XCOMM ---------------------------------------------------------------
XCOMM     Tcl/Tk script dependencies
XCOMM ----------------------------------------------------------------

%.tcl: %.ptcl
	sed -e s@%TCLDIR%@$(TCLDIR)@g $< > $@

tclIndex: $(TCLFILES)
	echo 'auto_mkindex . *.tcl; exit' | $(TCLSH)

InstallMultiple($(TCLFILES) tclIndex, $(TCLDIR))
InstallMultiple(Concat(BITMAPS/,*), $(TCLDIR)/BITMAPS)

clean::
	RemoveFiles(tkawe.tcl tclIndex)

#endif
