#  $Id: Makefile.in,v 1.41 1999/12/12 14:09:47 lcs Exp $
#
#  Makefile.in for the AHI preferences program
#


# The CPU to generate code for:

CPU	= 68060

#Can be GEN, PPC:

VER	= GEN

include Makefile.opt


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

@SET_MAKE@

VPATH		= @srcdir@

top_srcdir	= @top_srcdir@
srcdir		= @srcdir@
prefix		= @prefix@
DISTDIR		= @DISTDIR@
DEVSDIR		= ${DISTDIR}/User/Devs
CATDIR		= ${DISTDIR}/User/Catalogs

build_os	= @build_os@
host_cpu	= @host_cpu@



CPPFLAGS	= @CPPFLAGS@ -I.. -I${srcdir} -I${top_srcdir} \
		  -I${top_srcdir}/Include/C -DVERSION$(VER)

ifeq ($(VER),PPC)

CC		= ppc-amigaos-gcc
AS		= ppc-amigaos-as
AR		= ppc-amigaos-ar
RANLIB		= ppc-amigaos-ranlib
CFLAGS		= @CFLAGS@ -O3 -mcpu=$(CPU) -DCPU=\"$(CPU)\"
CPPFLAGS	+= -I/gg/os-include -I/gg/include
ASFLAGS		= @ASFLAGS@ -m$(CPU) -mregnames --defsym CPU=$(CPU)
LDFLAGS		= -nostartfiles -nostdlib -r 
LIBS		= -lgcc

TARGET		= ahi.elf.$(CPU)

else

CC		= @CC@
AS		= @AS@
AR              = @AR@
RANLIB          = @RANLIB@
CFLAGS		= @CFLAGS@ -O3 -m$(CPU) -DCPU=\"$(CPU)\"
ASFLAGS		= @ASFLAGS@ -m$(CPU) --register-prefix-optional --bitwise-or \
		  --defsym CPU=$(CPU)
LDFLAGS		= @LDFLAGS@ -nostartfiles
ARFLAGS         = @ARFLAGS@
LIBS		= @LIBS@

ASM		= @ASM@
ASMFLAGS	= I INCLUDE:,@srcdir@ SYMDEBUG LINEDEBUG \
		  QUIET NOEXE OPT NRQBPSMD \
		  MACHINE $(CPU) SET "VERSION$(VER)"

TARGET		= ahi.device.$(VER)-$(CPU)

ifeq ($(strip $(ASM)),)
ASM		= @echo 'No suitable assembler found; cannot make $@!'; false \#
endif

endif

INSTALL		= @INSTALL@
INSTALL_PROGRAM	= @INSTALL_PROGRAM@
INSTALL_DATA	= @INSTALL_DATA@

FLEXCAT		= @FLEXCAT@
MAKEDEPEND	= @MAKEDEPEND@

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


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

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

OBJECTS		= header.o device.o devcommands.o devsupp.o \
		  localize.o modeinfo.o requester.o database.o debug.o\
		  asmfuncs.o audioctrl.o effectinit.o sound.o misc.o\
		  mixer.o ppchandler.o elfloader.o

ifeq ($(VER),GEN)

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

ifeq ($(host_cpu),ppc)
# Wishful thinking!
OBJECTS		+= addroutines_ppc.o
endif

endif

ifeq ($(VER),PPC)
OBJECTS		= ppcheader.o dspecho.o mixer.o addroutines_ppc.o
endif


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

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


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

mostlyclean:
	$(RM) $(TARGETS) *.o *.bak *~ \#*\# core Makefile.dep Makefile.opt

clean:		mostlyclean
	$(RM) $(CATALOGS) localize.c localize.h version.h version.i \
	      ahi.device.* ahi.elf.*

distclean:	clean
	$(RM) Makefile

maintainer-clean: distclean

install:	$(TARGET)
	$(INSTALL_PROGRAM) $(TARGET) $(PREFIX)/Devs/$(basename $(TARGET))

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:	$(srcdir)/ahi.ct $(CATALOGS)
	$(INSTALL) --directory $(CATDIR)
	$(INSTALL_DATA) ${srcdir}/ahi.cd $(CATDIR)
	$(INSTALL_DATA) ${srcdir}/ahi.ct $(CATDIR)
	for i in $(LANGUAGES); do \
	  $(INSTALL) --directory $(CATDIR)/$$i; \
	  $(INSTALL_DATA) $$i.catalog $(CATDIR)/$$i/ahi.catalog; \
	done

	$(INSTALL) --directory $(DEVSDIR)

#	$(MAKE) clean
#	$(MAKE) bindist-install VER=GEN CPU=68000

#	$(MAKE) clean
#	$(MAKE) bindist-install VER=GEN CPU=68020

	$(MAKE) clean
	$(MAKE) bindist-install VER=GEN CPU=68030

	$(MAKE) clean
	$(MAKE) bindist-install VER=GEN CPU=68040

	$(MAKE) clean
	$(MAKE) bindist-install VER=GEN CPU=68060

	$(MAKE) clean
	$(MAKE) bindist-install VER=PPC CPU=603

	$(MAKE) clean
	$(MAKE) bindist-install VER=PPC CPU=604


bindist-install: $(TARGET)
	$(INSTALL_PROGRAM) --strip $(TARGET) $(DEVSDIR)/$(TARGET)


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

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


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

%.o:	%.s
	gasp $< | $(AS) $(ASFLAGS) -o $@
	#$(AS) $(ASFLAGS) $< -o $@

asmfuncs.o devsupp.o:
	$(ASM) $(ASMFLAGS) $< TO $@

$(TARGET):		$(OBJECTS) libaddroutines.a
	$(CC) $(LDFLAGS) $^ $(LIBS) -o $@

libaddroutines.a:	addroutines_hifi.o addroutines_lofi.o dspecho.o
	$(AR) $(ARFLAGS) $@ $^
	$(RANLIB) $@

version.i:	version.rev
	@echo Creating $@
	@ver=`cat $(top_srcdir)/version.ver` \
	 rev=`cat $(srcdir)/version.rev` && \
	 echo "VERSION  EQU $$ver" >$@ && \
	 echo "REVISION EQU $$rev" >>$@

version.h:	version.rev version.date
	@echo Creating $@
	@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)\"" >> $@

localize.c:		ahi.cd C_c_AHI.sd
	$(FLEXCAT) $(srcdir)/ahi.cd localize.c=$(srcdir)/C_c_AHI.sd 

localize.h:		ahi.cd C_c_AHI.sd
	$(FLEXCAT) $(srcdir)/ahi.cd localize.h=$(srcdir)/C_h_AHI.sd

%.catalog:		translations/%.ct
	$(FLEXCAT) $(srcdir)/ahi.cd $< CATALOG $@

%.ct:
	$(FLEXCAT) $(srcdir)/ahi.cd $@ NEWCTFILE $@

# Just some test code...

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

warpup-test:		warpup-test.o elfloader.o asmfuncs.o
	$(CC) $^ $(LIBS) -o $@


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

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

ifneq ($(build_os),amigaos)

DEPENDENCIES	= $(SOURCES) $(HEADERS) localize.c localize.h version.h

else
	# The Amiga is way to slow to update the dependencies each time

.PHONY:	depend

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

Makefile.dep:	$(DEPENDENCIES)
	@echo Making $@
ifeq ($(MAKEDEPEND),)
	-@$(CC) $(CPPFLAGS) $(CFLAGS) -MM $(SOURCES) > $@
else
	-@touch $@
	-@makedepend -f $@ -I $(srcdir) $(notdir $(SOURCES))
endif

include Makefile.dep

asmfuncs.o:	asmfuncs.s ahi_def.i
devsupp.o:	devsupp.s
addroutines_ppc.o:	addroutines_ppc.s
addroutines_68k.o:	addroutines_68k.s

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

#
# Options
########################################

Makefile.opt:
	echo CPU = $(CPU) > $@
	echo VER = $(VER) >> $@
