# TiMidity++ -- MIDI to WAVE converter and player
# Copyright (C) 1999-2008 Masanao Izumo <iz@onicos.co.jp>
# Copyright (C) 1995 Tuukka Toivonen <tt@cgs.fi>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

include $(top_srcdir)/common.makefile.in

SUFFIXES = .ptcl .tcl .pel .el .@so@

SUBDIRS = motif_bitmaps bitmaps pixmaps

AM_CPPFLAGS = \
	-I$(top_srcdir)/timidity \
	-I$(top_srcdir)/libarc \
	-I$(top_srcdir)/utils

noinst_LIBRARIES = libinterface.a

if W32G_GUI
libinterface_a_SOURCES =
else
libinterface_a_SOURCES = \
	dumb_c.c \
	wrdt_dumb.c \
	wrdt_tty.c
endif

EXTRA_libinterface_a_SOURCES = \
	ncurs_c.c \
	slang_c.c \
	motif.h \
	motif_c.c \
	motif_i.c \
	motif_p.c \
	tk_c.c \
	emacs_c.c \
	vt100.h \
	vt100.c \
	vt100_c.c \
	x_trace.c \
	x_trace.h \
	xaw.h \
	xaw_p.h \
	xaw_c.c \
	xaw_i.c \
	xaw_redef.c \
	TiMidity.ad \
	TiMidity-uj.ad \
	xdnd.c \
	xdnd.h \
	xskin.h \
	xskin_c.c \
	xskin_i.c \
	xskin_loadBMP.c \
	xskin_spectrum.c \
	wrdt_x.c \
	x_sherry.c \
	x_sherry.h \
	x_wrdwindow.c \
	x_wrdwindow.h \
	VTPrsTbl.c \
	VTparse.h \
	x_mag.c \
	x_mag.h \
	mac_c.c \
	mac_c.h \
	mac_mag.c \
	mac_mag.h \
	mac_trace.c \
	mac_wrdwindow.c \
	mac_wrdwindow.h \
	wrdt_mac.c \
	wrdt_wcon.c \
	gtk_c.c \
	gtk_h.h \
	gtk_i.c \
	gtk_p.c \
	soundspec.c \
	soundspec.h \
	x_sherry.c \
	x_sherry.h \
	server_c.c \
	server_defs.h \
	alsaseq_c.c \
	w32g.h \
	w32g_c.c \
	w32g_ini.c \
	w32g_rec.h \
	w32g_res.h \
	w32g_res.rc \
	w32g_utl.c \
	w32g_utl.h \
	w32g_ut2.c \
	w32g_ut2.h \
	w32g_i.c \
	w32g_playlist.c \
	w32g_pref.c \
	w32g_pref.h \
	w32g_subwin.c \
	w32g_subwin.h \
	w32g_syn.c \
	w32g_btn.bmp \
	w32g_icon.ico \
	w32g_sleep.bmp \
	w32g_subbtn.bmp \
	w32g_subwin2.c \
	w32g_wrd.h \
	wrdt_w32g.c \
	w32g_subwin3.c \
	w32g_tracer.h \
	w32g_tracer.bmp \
	w32g_mag.c \
	w32g_mag.h \
	w32g_dib.c \
	w32g_dib.h \
	winsyn_c.c \
	npsyn_c.c \
	rtsyn.h \
	rtsyn_common.c \
	rtsyn_winmm.c \
	rtsyn_portmidi.c \
	rtsyn_npipe.c\
	portmidisyn_c.c

if ENABLE_WRD
WRD_OBJS = \
	wrdt_x.$(OBJEXT) \
	x_wrdwindow.$(OBJEXT) \
	VTPrsTbl.$(OBJEXT) \
	x_mag.$(OBJEXT) \
	x_sherry.$(OBJEXT)
endif

if ENABLE_XDND
XDND_SO = xdnd.${so}
endif

if MSYS
if W32G_GUI
else
WRD_WINCON_OBJS = wrdt_wcon.$(OBJEXT)
endif
endif

if ENABLE_SOUND_SPEC
SOUND_SPEC_OBJS = \
	soundspec.$(OBJEXT)
endif

if ENABLE_W32GUI
W32GUI_DEPS = w32g_res.res
endif

if ENABLE_W32G_SYN
W32GUI_DEPS = w32g_res.res
endif

INTERFACE_OBJS = $(INTERFACE_SRCS:.c=.$(OBJEXT))

libinterface_LIBADD = \
	$(INTERFACE_OBJS) \
	$(WRD_OBJS) \
	$(WRD_WINCON_OBJS) \
	$(SOUND_SPEC_OBJS)

libinterface_a_LIBADD=$(libinterface_LIBADD)

libinterface_dep = \
	$(top_builddir)/interface.h \
	$(libinterface_a_LIBADD) \
	$(tcltk_dep) \
	$(W32GUI_DEPS)

libinterface.a: $(libinterface_a_OBJECTS) $(libinterface_a_DEPENDENCIES) $(libinterface_dep)
if VCPP
	rm -f libinterface.a
	rm -f interface.lib
	link -lib $(libinterface_a_OBJECTS) $(libinterface_LIBADD) -out:interface.lib
	if test -f interface.lib ; then touch $@ ; fi
else
if BORLANDC
	rm -f libinterface.a
	rm -f interface.lib
	for foo in   $(libinterface_a_OBJECTS) $(libinterface_LIBADD) ;do \
	  tlib interface.lib +$$foo; \
	done
	if test -f interface.lib ; then touch $@ ; fi
else
if WATCOM_C
	rm -f libinterface.a
	rm -f interface.lib
	for foo in   $(libinterface_a_OBJECTS) $(libinterface_LIBADD) ;do \
	  wlib -q interface.lib +$$foo; \
	done
	if test -f interface.lib ; then touch $@ ; fi
else
if DMC
	rm -f libinterface.a
	rm -f interface.lib
	start lib -c interface.lib  $(libinterface_a_OBJECTS) $(libinterface_LIBADD)
	if test -f interface.lib ; then touch $@ ; fi
else
if POCC
	rm -f libinterface.a
	rm -f interface.lib
	polib -OUT:interface.lib  $(libinterface_a_OBJECTS) $(libinterface_LIBADD)
	if test -f interface.lib ; then touch $@ ; fi
else
	rm -f libinterface.a
	$(AR) cru libinterface.a $(libinterface_a_OBJECTS) $(libinterface_a_LIBADD)
	$(RANLIB) libinterface.a
endif
endif
endif
endif
endif

# Tcl interface sources
TCLSRCS = tkmidity.ptcl tkpanel.tcl browser.tcl misc.tcl
# Tcl/Tk sources
TCLF = tkmidity.tcl tkpanel.tcl browser.tcl misc.tcl
ALLTCLF = $(TCLF) tclIndex

EXTRA_DIST = \
	escape_sjis.pl \
	tkmidity.ptcl \
	tkpanel.tcl \
	browser.tcl \
	misc.tcl \
	timidity.pel

.ptcl.tcl:
	sed -e 's@%TCL_DIR%@$(TCL_DIR)@g' $< > $@
.pel.el:
	sed -e 's@%BIN_DIR%@$(bindir)@g' $< > $@
clean:
	rm -f tkmidity.tcl
	rm -f tclIndex
	rm -f timidity.el
	rm -f *.$(OBJEXT)
	rm -f *.$(so)
	rm -f *.res
	rm -f *.RES
	rm -f *escaped.c
	rm -f *.a
	rm -f *.lib

tclIndex: $(TCLSRCS)
	rm -f tclIndex
	echo 'auto_mkindex $(srcdir) *.tcl; exit' | $(TCLSH)

if ENABLE_TCLTK
install_tk = install.tk
endif
if ENABLE_DYNAMIC_TCLTK
install_tk = install.tk
endif

if ENABLE_XAW
install_xaw = install.xaw
endif
if ENABLE_DYNAMIC_XAW
install_xaw = install.xaw
endif

install.tk: $(ALLTCLF)
	test -d $(DESTDIR)$(TCL_DIR) || mkdir -p $(DESTDIR)$(TCL_DIR)
	for f in $(ALLTCLF) ''; do case ".$$f" in .);; *) $(INSTALL_DATA) $$f $(DESTDIR)$(TCL_DIR);; esac; done

install.xaw:
if XAW_INSTALL_RESOURCE_FILES
	test -d ${DESTDIR}${XAWRES} || mkdir -p ${DESTDIR}${XAWRES}
	test -d ${DESTDIR}${XAWRES_JA} || mkdir -p ${DESTDIR}${XAWRES_JA}
	cp ${top_srcdir}/interface/TiMidity.ad ${DESTDIR}${XAWRES}/TiMidity
	cp ${top_srcdir}/interface/TiMidity-uj.ad ${DESTDIR}${XAWRES_JA}/TiMidity
endif

install.bitmaps:
	cd bitmaps; $(MAKE) install.bitmaps


if ENABLE_EMACS
# ELFILES = @ELFILES@ # autoconf already define this
install_el = install.el
endif

install.el: $(ELFILES)
	test -d $(DESTDIR)$(ELISP_DIR) || mkdir -p $(DESTDIR)$(ELISP_DIR)
	for f in $(ELFILES) ''; do case ".$$f" in .);; *) $(INSTALL_DATA) $$f $(DESTDIR)$(ELISP_DIR);; esac; done

if VCPP
w32g_res.res: w32g_res.h w32g_rec.h w32g_res.rc \
	w32g_btn.bmp w32g_icon.ico w32g_sleep.bmp w32g_subbtn.bmp
	rc -l0x11 w32g_res.rc
else
if WATCOM_C
w32g_res.res: w32g_res.h w32g_rec.h w32g_res.rc \
	w32g_btn.bmp w32g_icon.ico w32g_sleep.bmp w32g_subbtn.bmp
	rc -l0x11 w32g_res.rc
else
if DMC
w32g_res.res: w32g_res.h w32g_rec.h w32g_res.rc \
	w32g_btn.bmp w32g_icon.ico w32g_sleep.bmp w32g_subbtn.bmp
	rc -D__NT__ -l0x11 w32g_res.rc
else
if POCC
w32g_res.res: w32g_res.h w32g_rec.h w32g_res.rc \
	w32g_btn.bmp w32g_icon.ico w32g_sleep.bmp w32g_subbtn.bmp
	porc  w32g_res.rc
else
if BORLANDC
w32g_res.res: w32g_res.h w32g_rec.h w32g_res.rc \
	w32g_btn.bmp w32g_icon.ico w32g_sleep.bmp w32g_subbtn.bmp
	perl -pe 's/(^FONT.*".*").*$$/$$1/' w32g_res.rc >w32g_res_bc.rc
	brcc32 -iC:/Borland/BDS/4.0/include w32g_res_bc.rc
	mv w32g_res_bc.RES w32g_res.res
	rm w32g_res_bc.rc
else
w32g_syn_escaped.c:w32g_syn.c escape_sjis.pl
	./escape_sjis.pl < w32g_syn.c > w32g_syn_escaped.c

w32g_subwin_escaped.c:w32g_subwin.c escape_sjis.pl
	./escape_sjis.pl < w32g_subwin.c > w32g_subwin_escaped.c

w32g_res.res: w32g_res.h w32g_rec.h w32g_res.rc \
	w32g_btn.bmp w32g_icon.ico w32g_sleep.bmp w32g_subbtn.bmp \
	escape_sjis.pl
	./escape_sjis.pl <w32g_res.rc >w32g_res_escaped.rc
	windres -o $@ -O coff w32g_res.rc 2>&1|grep escape - >/dev/null && \
	windres -o $@ -O coff w32g_res_escaped.rc || echo
	rm w32g_res_escaped.rc
endif
endif
endif
endif
endif

## This is another way to build japanese resource for mingw.
#BRCC32 = c:/borland/bcc55/bin/brcc32.exe
#BRCC32_FLAGS = -ic:/borland/bcc55/include
#w32g_res.res: w32g_res.h w32g_rec.h w32g_res.rc \
#	w32g_btn.bmp w32g_icon.ico w32g_sleep.bmp w32g_subbtn.bmp
#	perl -pe 's/(^FONT.*".*").*$$/$$1/' w32g_res.rc >w32g_res_bc.rc
#	$(BRCC32) $(BRCC32_FLAGS) w32g_res_bc.rc
#	windres -o tmp.res -O coff w32g_res_bc.RES
#	mv tmp.res w32g_res.res
#	rm w32g_res_bc.RES

if NEEDDLOPEN
# dynamic_targets = @dynamic_targets@ # autoconf already define this
install_dynamics = install.dynamics
#n_so_libs = @n_so_libs@
#s_so_libs = @s_so_libs@
#m_so_libs = @m_so_libs@
#k_so_libs = @k_so_libs@
#e_so_libs = @e_so_libs@
#T_so_libs = @T_so_libs@
#a_so_libs = @a_so_libs@
#i_so_libs = @i_so_libs@
#g_so_libs = @g_so_libs@

all-am: $(dynamic_targets)

install.dynamics: $(dynamic_targets)
	test -d $(DESTDIR)$(SHLIB_DIR) || mkdir -p $(DESTDIR)$(SHLIB_DIR)
	for f in $(dynamic_targets) ''; do case ".$$f" in .);; *) $(INSTALL_PROGRAM) $$f $(DESTDIR)$(SHLIB_DIR) ;; esac; done

.c.$(so):
	$(COMPILE) $(SHCFLAGS) -c $< -o $@

bitset.$(so): $(top_srcdir)/utils/bitset.c
	$(COMPILE) $(SHCFLAGS) -o $@ -c $<

timer.$(so): $(top_srcdir)/utils/timer.c
	$(COMPILE) $(SHCFLAGS) -o $@ -c $<

url_buff.$(so): $(top_srcdir)/libarc/url_buff.c
	$(COMPILE) $(SHCFLAGS) -o $@ -c $<

support.$(so): $(top_srcdir)/utils/support.c
	$(COMPILE) $(SHCFLAGS) -o $@ -c $<

if_ncurses.$(so): ncurs_c.$(so) support.$(so) bitset.$(so) timer.$(so)
	$(SHLD) -o $@ ncurs_c.$(so) support.$(so) bitset.$(so) timer.$(so) $(n_so_libs)

if_slang.$(so): slang_c.$(so) support.$(so) timer.$(so)
	$(SHLD) -o $@ slang_c.$(so) support.$(so) timer.$(so) $(s_so_libs)

if_motif.$(so): motif_c.$(so) support.$(so) motif_i.$(so) motif_p.$(so)
	$(SHLD) -o $@ motif_c.$(so) support.$(so) motif_i.$(so) motif_p.$(so) $(m_so_libs)

if_tcltk.$(so): tk_c.$(so) support.$(so)
	$(SHLD) -o $@ tk_c.$(so) support.$(so) $(k_so_libs)

if_emacs.$(so): emacs_c.$(so) support.$(so)
	$(SHLD) -o $@ emacs_c.$(so) support.$(so) $(e_so_libs)

if_vt100.$(so): vt100_c.$(so) support.$(so) vt100.$(so) bitset.$(so) timer.$(so)
	$(SHLD) -o $@ vt100_c.$(so) support.$(so) vt100.$(so) bitset.$(so) timer.$(so) $(T_so_libs)

if_xaw.$(so): xaw_c.$(so) support.$(so) xaw_i.$(so) x_trace.${so} timer.$(so) ${XDND_SO}
	$(SHLD) -o $@ xaw_c.$(so) support.$(so) xaw_i.$(so) x_trace.${so} timer.$(so) ${XDND_SO} $(a_so_libs)

if_xskin.$(so): xskin_c.$(so) support.$(so) xskin_i.$(so) xskin_loadBMP.$(so) xskin_spectrum.$(so) url_buff.$(so)
	$(SHLD) -o $@ xskin_c.$(so) support.$(so) xskin_i.$(so) xskin_loadBMP.$(so) xskin_spectrum.$(so) url_buff.$(so) $(i_so_libs)

if_gtk.$(so): gtk_c.$(so) support.$(so) gtk_i.$(so) gtk_p.$(so)
	$(SHLD) -o $@ gtk_c.$(so) support.$(so) gtk_i.$(so) gtk_p.$(so) $(g_so_libs)

if_server.$(so): server_c.$(so) support.$(so)
	$(SHLD) -o $@ server_c.$(so) support.$(so)

if_alsaseq.$(so): alsaseq_c.$(so) support.$(so)
	$(SHLD) -o $@ alsaseq_c.$(so) support.$(so)

endif

clean-compile:
	-rm -f *.$(so)
	-rm -f *.res
	-rm -f *.RES

install-exec-local: $(install_tk) $(install_xaw) $(install_el) $(install_dynamics)

########## End of Makefile
