#
#  Makefile.in for ahi.device.
#


#
# Autoconfig stuff
########################################

VERSION         = 6




top_srcdir	= .
srcdir		= .
PREFIX		= /sys/MorphOS
DISTDIR		= /tmp/-ahi
DEVSDIR		= ${DISTDIR}/User/Devs
CATDIR		= ${DISTDIR}/User/Catalogs
CATSRCDIR	= ${DISTDIR}/Developer/Translations

build_os	= morphos
host		= powerpc-unknown-morphos
host_cpu	= powerpc

CC		= ppc-morphos-gcc
AS		= ppc-morphos-as
AR              = ppc-morphos-ar
RANLIB          = ppc-morphos-ranlib
STRIP		= ppc-morphos-strip --strip-unneeded -R .comment

CPPFLAGS	= -DCPU="\"603\"" -I. -I. -I./Include/gcc  -I${top_srcdir} -I${srcdir}
CFLAGS		= -g -W -Wall -Wstrict-prototypes -Wno-unused -noixemul -mcpu=603 -O2
ASFLAGS		= -m603 -mregnames --defsym CPU=603
LDFLAGS		= -noixemul -mcpu=603 -nostartfiles
ARFLAGS         = -ru

LIBS		= 

EXECUTABLE	= ahi.device

INSTALL		= cp
INSTALL_PROGRAM	= ${INSTALL}
INSTALL_DATA	= ${INSTALL}

SFDC		= SFDC
SFDC_TARGET	= --target=${host}

FLEXCAT		= FlexCat

ifeq ($(strip $(FLEXCAT)),)
FLEXCAT		= @echo 'FlexCat not found; cannot make $@!'; false \#
endif

ENABLE_WARPUP	= 

#
# Files
########################################

LANGUAGES	= $(notdir $(basename $(wildcard $(srcdir)/translations/*.ct)))
CATALOGS	= $(addsuffix .catalog, $(LANGUAGES))

OBJECTS		= header.o gateway.o gatestubs.o \
		  device.o devcommands.o devsupp.o \
		  localize.o modeinfo.o requester.o database.o debug.o\
		  audioctrl.o effectinit.o sound.o misc.o dspecho.o \
		  mixer.o 

#ifeq ($(ENABLE_WARPUP),yes)
#OBJECTS		+= elfloader.o warpup.o
#endif

#ifeq ($(host_cpu),m68k)
#OBJECTS		+= addroutines_68k.o dspechofuncs_68k.o
#endif

#ifeq ($(host_cpu),powerpc)
#OBJECTS		+= addroutines_ppc.o
#endif

GENERATED	=   gatestubs.c gatestubs.h localize.c localize.h

#version.h \

#
# Targets
########################################

.PHONY:		all mostlyclean clean distclean maintainer-clean\
		install revup bindist bindist-install


all:		$(EXECUTABLE) $(srcdir)/ahi.ct $(CATALOGS)

mostlyclean:
	$(RM) $(EXECUTABLE) *.o *.a Makefile.dep

clean:		mostlyclean
	$(RM) $(CATALOGS) $(GENERATED)

distclean:	clean
	$(RM) Makefile

maintainer-clean: distclean

install:	all
	mkdir -p $(PREFIX)/Devs
	mkdir -p $(PREFIX)/Locale
	mkdir -p $(PREFIX)/Locale/Catalogs
	$(INSTALL_PROGRAM) $(EXECUTABLE) $(PREFIX)/Devs/$(EXECUTABLE)
	for i in $(LANGUAGES); do \
	  mkdir -p $(PREFIX)/Locale/Catalogs/$$i; \
	  $(INSTALL_DATA) $$i.catalog $(PREFIX)/Locale/Catalogs/$$i/AHI.catalog; \
	done

install-iso:	all
	mkdir -p $(ISOPATH)MorphOS/Devs
	mkdir -p $(ISOPATH)MorphOS/Locale
	mkdir -p $(ISOPATH)MorphOS/Locale/Catalogs
	$(INSTALL_PROGRAM) $(EXECUTABLE) $(ISOPATH)MorphOS/Devs/$(EXECUTABLE)
	for i in $(LANGUAGES); do \
	  mkdir -p $(ISOPATH)MorphOS/Locale/Catalogs/$$i; \
	  $(INSTALL_DATA) $$i.catalog $(ISOPATH)MorphOS/Locale/Catalogs/$$i/AHI.catalog; \
	done
	@mkdir -p $(ISOPATH)Docs/Licenses
	@cp COPYING $(ISOPATH)Docs/Licenses/AHI

source:
	(cd .. && tar --transform "s,^ahi,&.device," -cf $(SOURCEPATH)ahi.device.tar ahi)

bump:
	bumprev2 VERSION $(VERSION) FILE $(SRC)ahi.device_VERSION TAG ahi.device ADD " 1994-2006 Martin Blom"

revup:
	@rev=`cat $(srcdir)/version.rev` && echo `expr $$rev + 1` > $(srcdir)/version.rev
	@date +%d.%m.%y > $(srcdir)/version.date
	@echo -n "New revision: "
	@cat $(srcdir)/version.rev

bindist:	all
	$(INSTALL) -d $(CATDIR) $(CATSRCDIR) $(CATSRCDIR)/ahi
	$(INSTALL_DATA) ${srcdir}/ahi.cd $(CATSRCDIR)
	$(INSTALL_DATA) ${srcdir}/ahi.ct $(CATSRCDIR)
	for i in $(LANGUAGES); do \
	  $(INSTALL) -d $(CATDIR)/$$i; \
	  $(INSTALL_DATA) $$i.catalog $(CATDIR)/$$i/AHI.catalog; \
	  $(INSTALL_DATA) ${srcdir}/translations/$$i.ct \
			  $(CATSRCDIR)/ahi/$$i.ct; \
	done

	$(INSTALL) -d $(DEVSDIR)

	$(INSTALL_PROGRAM) $(EXECUTABLE) $(DEVSDIR)/$(EXECUTABLE)
	$(STRIP) $(DEVSDIR)/$(EXECUTABLE)


#
# Auto-remake autoconf stuff
########################################

#Makefile: Makefile.in ../config.status
#	(cd .. && ./config.status)


#
# Rules
########################################

%.o:	%.s
	@echo Build $@
	$(AS) $(ASFLAGS) $< -o $@

$(EXECUTABLE):		$(OBJECTS) libaddroutines.a
	@echo Build $@
	$(CC) $(LDFLAGS) $^ $(LIBS) -o $@.db
	$(STRIP) $@.db -o $@

libaddroutines.a:	addroutines_hifi.o addroutines_lofi.o \
			addroutines_32bit.o addroutines_71.o dspechofuncs.o
	@echo Build $@
	$(AR) $(ARFLAGS) $@ $^
	$(RANLIB) $@

version.h:	version.rev version.date \
		$(top_srcdir)/version.ver $(top_srcdir)/version.rev
	@echo Creating $@
	@ahiver=`cat $(top_srcdir)/version.ver` \
	 ahirev=`cat $(top_srcdir)/version.rev` \
	 ver=`cat $(top_srcdir)/version.ver` \
	 rev=`cat $(srcdir)/version.rev` \
	 date=`cat $(srcdir)/version.date` && \
	 echo "#define VERSION $$ver" > $@ && \
	 echo "#define REVISION $$rev" >> $@ && \
	 echo "#define VERS \"$$ver.$$rev ($$date) [AHI release $$ahiver.$$ahirev]\"" >> $@

gatestubs.c:	$(top_srcdir)/Include/SFD/ahi_lib.sfd
	$(SFDC) $(SFDC_TARGET) --mode=gatestubs $^ --output $@ \
	        --gateprefix=gw --libprefix=_ --libarg=last --addvectors=device

gatestubs.h:	$(top_srcdir)/Include/SFD/ahi_lib.sfd
	$(SFDC) $(SFDC_TARGET) --mode=gateproto $^ --output $@ \
	        --gateprefix=gw --libprefix=_ --libarg=last --addvectors=device

$(srcdir)/localize.c:	ahi.cd C_c_AHI.sd
	@echo Build $<
	$(FLEXCAT) ahi.cd localize.c=C_c_AHI.sd 
	cp $@ $@.in
	sed 's/ahi.catalog/AHI.catalog/g' <$@.in >$@
	rm -f $@.in
#	$(FLEXCAT) $(srcdir)/ahi.cd $(srcdir)/localize.c=$(srcdir)/C_c_AHI.sd 

$(srcdir)/localize.h:	ahi.cd C_c_AHI.sd
	@echo Build $<
	$(FLEXCAT) ahi.cd localize.h=C_h_AHI.sd
#	$(FLEXCAT) $(srcdir)/ahi.cd $(srcdir)/localize.h=$(srcdir)/C_h_AHI.sd

%.catalog:		translations/%.ct
	@echo Build $<
	$(FLEXCAT) WARNCTGAPS NOOPTIM FILL ahi.cd $< CATALOG=$@

#	$(FLEXCAT) WARNCTGAPS NOOPTIM FILL NOAUTODATE \
#		   $(srcdir)/ahi.cd $< CATALOG=$@

%.ct:
	@echo Build $@
	$(FLEXCAT) ahi.cd $@ NEWCTFILE=$@
#	$(FLEXCAT) $(srcdir)/ahi.cd $@ NEWCTFILE=$@

# Just some test code...

elftest:		elftest.o elfloader.o
	$(CC) $^ $(LIBS) -o $@


#
# Dependencies
########################################

SOURCES		= $(wildcard $(srcdir)/*.c)
HEADERS		= $(wildcard $(srcdir)/*.h)

#DEPENDENCIES	= $(SOURCES) $(HEADERS)

.PHONY:	depend

depend:
	$(RM) Makefile.dep
	$(MAKE) Makefile.dep

Makefile.dep:	$(DEPENDENCIES) $(GENERATED)
	@echo Making $@
	-@$(CC) $(CPPFLAGS) $(CFLAGS) -MM $(SOURCES) > $@

-include Makefile.dep

addroutines_ppc.o:	addroutines_ppc.s
addroutines_68k.o:	addroutines_68k.s
dspechofuncs_68k.o:	dspechofuncs_68k.s

$(wildcard $(srcdir)/translations/*.ct) $(srcdir)/ahi.ct:	ahi.cd
