##
##	$VER: XModule-Makefile 3.4 (28.5.95)
##
##	Copyright (C) 1993,94,95 by Bernardo Innocenti
##

ARCHIVER	= LZX -3 -e -r a
ARCNAME		= MAIL:Outbound/XModule.lzx
SRCARCNAME	= MAIL:Outbound/XModule_src.lzx
DESTDIR 	= Work:Music/
SRCDIR		= SC:Source/

AS          = PhxAss INCPATH=INCLUDE: NOEXE

###########################################################
# Release version should be linked with these flags
#
LFLAGS = NODEBUG SMALLCODE SMALLDATA BATCH NOALVS NOICONS XREF
ASMFLAGS =
ASMLFLAGS = SC SD ND

###########################################################
# Debug version should be linked with these flags
#
#LFLAGS = ADDSYM SMALLCODE SMALLDATA NOALVS NOICONS BATCH
#ASMFLAGS = DS DL
#ASMLFLAGS = SC SD K1

LIBS = LIB:sc.lib LIB:small.lib #LIB:debug.lib

###########################################################
# Unfortunately, the following trick won't work with SLink Argh!!
#
# OBJS = $(SRCS:"*.c":"Obj/*.o")


OBJS = Main.o Misc.o Rexx.o Gui.o Requesters.o Prefs.o Locale.o \
Audio.o Compress.o App.o Cx.o Help.o Data.o Operators.o Song.o Instr.o \
GetXModule.o SaveXModule.o GetOktalyzer.o SaveTracker.o \
GetTracker.o SaveOktalyzer.o SaveMED.o GetMED.o GetS3M.o SaveMIDI.o \
CustomClasses.o ToolBoxWin.o OptimizationWin.o ClearWin.o \
InstrumentsWin.o SongInfoWin.o SequenceWin.o ProgressWin.o \
SampleWin.o SaveFormatWin.o PlayWin.o PrefsWin.o PatternWin.o \
PattPrefsWin.o



all: XModule.gst XModule XModule.guide XModule.doc Players/32Channels.player \
	Gadgets/pattedit.gadget Gadgets/pattedit.gadget_000 \
	Catalogs/Italiano/XModule.catalog


###########################################################
# Make the executable
###########################################################

XModule.gst: XModule.h Gui.h Locale.h XModuleGst.c OctaMED.h XModuleClass.h PattEditClass.h
	$(CC) XModuleGst.c MakeGst=XModule.gst NoObjName

.c.o:
	$(CC) $(*).c

Startup.o: Startup.asm
	@$(AS) Startup.asm $(ASMFLAGS)

XModule: $(OBJS) Startup.o
	@$(LD) FROM Startup.o TO XModule $(LFLAGS) LIB $(LIBS) WITH <<
		$(OBJS)
	<


###########################################################
# Make pattedit.gadget
###########################################################

LIBNAME		= "pattedit.gadget"
LIBVERSION	= 1
LIBREVISION	= 1

CFLAGS = CODE=NEAR DATA=FARONLY STRSECT=CODE \
	DEF LIBNAME=$(LIBNAME) \
	DEF LIBVERSION=$(LIBVERSION) \
	DEF LIBREVISION=$(LIBREVISION)

RomTag.o: RomTag.asm
	@$(AS) RomTag.asm $(ASMFLAGS)

PattEditClass.o: PattEditClass.c
	$(CC) PattEditClass.c $(CFLAGS) CPU=68020

Gadgets/pattedit.gadget: PattEditClass.o RomTag.o
	@$(LD) TO Gadgets/pattedit.gadget FROM RomTag.o PattEditClass.o $(LFLAGS) LIB $(LIBS)
	@Protect Gadgets/pattedit.gadget -e
	@FileNote Gadgets/pattedit.gadget "68020+ version"
	@Avail FLUSH >NIL:

PattEditClass_000.o:
	$(CC) PattEditClass.c OBJNAME PattEditClass_000.o $(CFLAGS) CPU=68000

Gadgets/pattedit.gadget_000: PattEditClass_000.o RomTag.o
	@$(LD) TO Gadgets/pattedit.gadget_000 FROM RomTag.o PattEditClass_000.o $(LFLAGS) LIB $(LIBS)
	@Protect Gadgets/pattedit.gadget_000 -e
	@FileNote Gadgets/pattedit.gadget_000 "68000 version"


###########################################################
# Make Locale related stuff
###########################################################

Locale.h Locale.c Catalogs/Empty.ct: Locale_h.sd Locale_c.sd Catalogs/XModule.cd
	FlexCat Catalogs/XModule.cd NEWCTFILE Catalogs/Empty.ct Locale.h=Locale_h.sd Locale.c=Locale_c.sd

Catalogs/Italiano/XModule.catalog: Catalogs/Italiano.ct
	FlexCat Catalogs/XModule.cd Catalogs/Italiano.ct CATALOG=Catalogs/Italiano/XModule.catalog
	@FileNote Catalogs/Italiano/XModule.catalog "Italiano catalog for XModule translated by Steven Cantini."

# Make NewCTFiles to create update CT files for all supported languages
NewCTFiles:
	FlexCat Catalogs/XModule.cd Catalogs/Italiano.ct NEWCTFILE Catalogs/Italiano.ct


###########################################################
# Make 32Channels.player
###########################################################

Player.o: Player.asm
	$(AS) Player.asm $(ASMFLAGS)

Players/32Channels.player: Player.o
	PhxLnk Player.o TO Players/32Channels.player LIB:Small.lib $(ASMLFLAGS)



###########################################################
# Bump the revision
###########################################################

bumprev:
	@RevUp 3 XModule NOASM EXTRA TINY


###########################################################
# Cleanup all mess
###########################################################

clean:
	@Delete *.lnk *.map *.o *.gst *.xref XModule XModule.guide XModule.doc \
	Locale.c Locale.h Catalogs/Italiano/XModule.catalog Gadgets/pattedit.gadget* Players/32Channels.player


###########################################################
# Make the AmigaGuide and Text documentation
###########################################################

XModule.guide: XModule.texi
	@SC:MakeGuide/MakeInfo --amiga-39 --output XModule.guide XModule.texi

XModule.doc: XModule.texi
	@SC:MakeGuide/MakeInfo --amiga-39 --no-headers --output XModule.doc XModule.texi


###########################################################
# Make the distribution archives
###########################################################

release: XModule XModule.guide XModule.doc
	@Execute <<
		If NOT EXISTS $(DESTDIR)XModule
			MakeDir $(DESTDIR)XModule
		EndIf

		Copy XModule XModule.doc XModule.guide History ReadMe TO $(DESTDIR)XModule/ CLONE
		Copy Players/* TO $(DESTDIR)XModule/Players/
		Copy Gadgets/pattedit.gadget TO $(DESTDIR)XModule/Gadgets/pattedit.gadget_020 CLONE
		Copy Gadgets/pattedit.gadget_000 TO $(DESTDIR)XModule/Gadgets/pattedit.gadget CLONE
		Copy Catalogs/* TO $(DESTDIR)XModule/Catalogs/ ALL CLONE

		CD $(DESTDIR)
		If EXISTS $(ARCNAME)
			Delete $(ARCNAME) QUIET
		EndIf
		$(ARCHIVER) $(ARCNAME) XModule/* XModule.info
	<
	@Execute <<
		If EXISTS $(SRCARCNAME)
			Delete $(SRCARCNAME) QUIET
		EndIf

		Copy ~(gtb*).c TO $(SRCDIR)XModuleSource CLONE
		Copy ~(gtb*).h TO $(SRCDIR)XModuleSource CLONE
		Copy Startup.asm XModule.texi XModule.gui SMakeFile XModule_rev.rev Locale_h.sd Locale_c.sd SCOPTIONS TO $(SRCDIR)XModuleSource CLONE
		Copy FakePlayer.asm TO $(SRCDIR)XModuleSource/Player.asm CLONE

		CD $(SRCDIR)
		If EXISTS $(SRCARCNAME)
			Delete $(SRCARCNAME) QUIET
		EndIf
		$(ARCHIVER) $(SRCARCNAME) XModuleSource/* XModuleSource.info
	<
