# TSMorph - Amiga Morphing program
# Copyright (C)  1993  Topicsave Limited

# 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
# 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., 675 Mass Ave, Cambridge, MA 02139, USA.

# mpaddock@cix.compulink.co.uk

#	$Author: M_J_Paddock $
#	$Date: 1993/08/28 22:04:09 $
#	$Revision: 1.6 $

# Make file for TSMorph and SAS/C 5.10

# Compilation flags
# Normal compile
CCFLAGS = -ccfistq -iINCLUDE: -O -mt -v -fl -j104 -d1
# Normal compile the same as above(???)
CCFLAGS1 = -ccfistq -iINCLUDE: -O -mt -v -fl -j104 -d1
# 881 maths compile
CCFLAGS881 = -ccfistq -iINCLUDE: -m2 -mt -dMY68881 -f8 -v -O -j104 -d1

# default compilation
.c.o:
	lc $(CCFLAGS) $*.c

# various defines
B         = brush/
C         = cursor/
G         = Gui/
R         = Rexx/
I         = .info
E         = ENV/TSMorph/
J         = JPEG_LS/
JPEGLSS1  = $(J)jconfig.h $(J)jdcolor.c $(J)jddeflts.c $(J)jdhuff.c $(J)jdmain.c $(J)jdmaster.c $(J)jdmcu.c $(J)jrdgif.c
JPEGLSS2  = $(J)jdpipe.c $(J)jdsample.c $(J)jinclude.h $(J)jmemmgr.c $(J)jmemsys.c $(J)jmemsys.h $(J)jrdppm.c
JPEGLSS3  = $(J)jpegdata.h $(J)jquant1.c $(J)jrdjfif.c $(J)jrevdct.c $(J)jutils.c $(J)jwrmem.c $(J)jrdtarga.c
JPEGLSO1  = $(J)jdcolor.o $(J)jddeflts.o $(J)jdhuff.o $(J)jdmaster.o $(J)jdmcu.o $(J)jrdgif.o
JPEGLSO2  = $(J)jdpipe.o $(J)jdsample.o $(J)jmemmgr.o $(J)jmemsys.o $(J)jrdppm.o
JPEGLSO3  = $(J)jquant1.o $(J)jrdjfif.o $(J)jrevdct.o $(J)jutils.o $(J)jwrmem.o $(J)jrdtarga.o
JPEGLSO4  = $(J)jdmain.o
JPEGLSO4R = $(J)jdmainr.o
IFF       = parse.o iffpstrings.o Hook.oo ilbmr.o unpacker.o loadilbm.o getbitmap.o
IFFS      = ilbmw.o packer.o saveilbm.o
PREFS     = TSMorph-prefs.o Prefs.o
TSMORPH   = TSMorph.o ControlWindow.o Gui.o Boopsi.oo Subroutines.o help.o sprintf.o Args.o LoadBrushes.o Frames.o OpalLoad.o HandleSettings.o RGBToScreen020.o
RENDER    = TSMorph-render.o Progress.o sprintf.o Args.o SaveHAMetc.o
RENDER881 = TSMorph-render881.o Progress.o sprintf.o Args.o SaveHAMetc881.o
DIST      = TSMorph-render.881     TSMorph     TSMorph-render     TSMorph.guide
DIST1     = Install     Read.Me TSMorph-prefs COPYING
DISTI     = TSMorph-render.881$(I) TSMorph$(I) TSMorph-render$(I) TSMorph.guide$(I) Install$(I) Read.Me$(I) TSMorph-prefs$(I)
REXX      = $(R)Prescript.TSM     $(R)Postscript.TSM     $(R)FadeToBlack.TSM     $(R)FadeToWhite.TSM     $(R)PixelWarp.TSM     $(R)PixelMorph.TSM
REXXI     = $(R)Prescript.TSM$(I) $(R)Postscript.TSM$(I) $(R)FadeToBlack.TSM$(I) $(R)FadeToWhite.TSM$(I) $(R)PixelWarp.TSM$(I) $(R)PixelMorph.TSM$(I)
REXX1     = $(R)ToHam.TSM     $(R)LoadScript.TSM     $(R)Preview.TSM
REXXI1    = $(R)ToHam.TSM$(I) $(R)LoadScript.TSM$(I) $(R)Preview.TSM$(I) Rexx$(I)
DIST2I    = $(E)def_points$(I) $(E)def_ilbm$(I) $(E)def_iff$(I) $(E)def_jpg$(I) $(E)def_prefs$(I) $(E)def_ppm$(I)
DIST2I1   = ENV$(I) ENV/TSMorph$(I) brush$(I) cursor$(I)
DIST2I2   = $(E)def_bw16$(I) $(E)def_bw256$(I) $(E)def_ham6$(I) $(E)def_ham8$(I) $(E)def_dctv3$(I) $(E)def_dctv4$(I)
SRC1      = boopsi.oo ControlWindow.c getbitmap.c gui.c gui.h help.c Hook.oo iffpstrings.c ilbmr.c ilbmw.c lmkfile
SRCBRUSH  = $(B)Add.c $(B)Del.c $(B)Link.c $(B)None.c $(B)One.c $(B)Rel.c $(B)Two.c $(B)Unlink.c $(B)1st.c $(B)last.c $(B)goto.c $(B)next.c $(B)prev.c
BRUSHES   = $(B)add.o $(B)del.o $(B)link.o $(B)none.o $(B)one.o $(B)rel.o $(B)two.o $(B)unlink.o $(B)1st.o $(B)last.o $(B)goto.o $(B)next.o $(B)prev.o
BRUSH     = $(B)Add   $(B)Del   $(B)Link   $(B)None   $(B)One   $(B)Rel   $(B)Two   $(B)Unlink   $(B)1st   $(B)last   $(B)goto   $(B)next   $(B)prev
BRUSHI    = $(B)Add$(I) $(B)Del$(I) $(B)Link$(I) $(B)None$(I) $(B)One$(I) $(B)Rel$(I) $(B)Two$(I)
BRUSHI1   = $(B)Unlink$(I) $(B)1st$(I) $(B)last$(I) $(B)goto$(I) $(B)next$(I) $(B)prev$(I)
CURSORS   = $(C)Xadd.o $(C)Xdel.o $(C)Xl1.o $(C)Xl2.o $(C)Xmov.o $(C)Xone.o $(C)Xrel.o $(C)Xtwo.o $(C)Xu1.o $(C)Xu2.o
SRCCURSOR = $(C)XAdd.c $(C)XDel.c $(C)XL1.c $(C)XL2.c $(C)XMov.c $(C)XOne.c $(C)XRel.c $(C)XTwo.c $(C)XU1.c $(C)XU2.c
CURSOR    = $(C)XAdd $(C)XDel $(C)XL1 $(C)XL2 $(C)XMov $(C)XOne $(C)XRel $(C)XTwo $(C)XU1 $(C)XU2
CURSORI1  = $(C)XAdd$(I) $(C)XDel$(I) $(C)XL1$(I) $(C)XL2$(I)
CURSORI2  = $(C)XMov$(I) $(C)XOne$(I) $(C)XRel$(I) $(C)XTwo$(I) $(C)XU1$(I) $(C)XU2$(I)
SRCIFFP   = iffp/compiler.h iffp/debug.h iffp/iff.h iffp/iffpstringids.h iffp/iffpstrings.h iffp/ilbm.h iffp/ilbmapp.h iffp/packer.h
SRC5      = loadilbm.c packer.c parse.c Progress.c progress.h saveilbm.c Subroutines.c TSMorph-render.c TSMorph.c TSMorph.h
SRC6      = TSMorph.texinfo unpacker.c Install Read.Me sprintf.c Args.c LoadBrushes.c Frames.c CIRCS OpalLoad.c HandleSettings.c COPYING
SRC7      = RGBToScreen020.c SaveHAMetc.c Prefs.c Prefs.h TSMorph-prefs.c Source.readme Source.readme.info JPEG.README
GUI       = $(G)TSMorph.gui     $(G)Progress.gui     $(G)AddGrid.gui     $(G)Settings.gui
GUII      = $(G)TSMorph.gui$(I) $(G)Progress.gui$(I) $(G)AddGrid.gui$(I) $(G)Settings.gui$(I)

# Default is to generate Source and Object lha
Everything: LHA:TSMorph23s.lha LHA:TSMorph23.lha

# All the "object" code
Object: TSMorph TSMorph-render TSMorph-render.881 TSMorph.guide TSMorph-prefs

# Object distribution
LHA:TSMorph23.lha: TSMorph TSMorph.guide TSMorph-render TSMorph-render.881 $(DISTI) $(REXXI) $(DIST2I) $(DIST2I1) $(DIST2I2) $(DIST1) $(REXX) $(REXX1) $(REXXI1) $(CURSOR) $(CURSORI1) $(CURSORI2) $(BRUSH) $(BRUSHI) $(BRUSHI1)
	lha -F u -x LHA:TSMorph23.lha <@<
	TSMorph
	TSMorph.guide
	TSMorph-render
	TSMorph-render.881
	$(DISTI)
	$(REXXI)
	$(DIST2I)
	$(DIST2I1)
	$(DIST2I2)
	$(DIST1)
	$(REXX)
	$(REXX1)
	$(REXXI1)
	$(CURSOR)
	$(CURSORI1)
	$(CURSORI2)
	$(BRUSH)
	$(BRUSHI)
	$(BRUSHI1)
<

# Object distribution split up
LHA:TSM.lha: TSMorph
	lha -F u -x LHA:TSM.lha TSMorph

LHA:TSM-g.lha: TSMorph.guide
	lha -F u -x LHA:TSM-g.lha TSMorph.guide

LHA:TSM-r.lha: TSMorph-render
	lha -F u -x LHA:TSM-r.lha TSMorph-render

LHA:TSM-r8.lha: TSMorph-render.881
	lha -F u -x LHA:TSM-r8.lha TSMorph-render.881

LHA:TSM-etc.lha: $(DIST1) $(REXX) $(REXX1) $(DISTI) $(REXXI) $(DIST2I) $(DIST2I1) $(DIST2I2) $(REXXI1) $(CURSOR) $(CURSORI1) $(CURSORI2) $(BRUSH) $(BRUSHI) $(BRUSHI1)
	lha -F u -x LHA:TSM-etc.lha <@<
	$(DISTI)
	$(REXXI)
	$(DIST2I)
	$(DIST2I1)
	$(DIST2I2)
	$(DIST1)
	$(REXX)
	$(REXX1)
	$(REXXI1)
	$(CURSOR)
	$(CURSORI1)
	$(CURSORI2)
	$(BRUSH)
	$(BRUSHI)
	$(BRUSHI1)
<

# Source distribution - compressed lha archive
LHA:TSMorph23s.lha: LHA:TSM23s.lha
	lha u -Z LHA:TSMorph23s.lha LHA:TSM23s.lha

# uncompressed archive saves about 12% space when recompressed
LHA:TSM23s.lha: $(SRC1) $(SRCBRUSH) $(SRCCURSOR) $(SRCIFFP) $(SRC5) $(SRC6) $(REXX) $(REXX1) $(REXXI) $(DISTI) $(DIST2I) $(DIST2I1) $(DIST2I2) $(REXXI1) $(CURSOR) $(CURSORI1) $(CURSORI2) $(BRUSH)\
                $(BRUSHI) $(BRUSHI1) $(GUI) $(GUII) $(JPEGLSS1) $(JPEGLSS2) $(JPEGLSS3)
	lha -F u -x -z LHA:TSM23s.lha <@<
	$(SRC1)
	$(SRCBRUSH)
	$(SRCCURSOR)
	$(SRCIFFP)
	$(SRC5)
	$(SRC6)
	$(SRC7)
	$(REXX)
	$(REXX1)
	$(REXXI)
	$(DISTI)
	$(DIST2I)
	$(DIST2I1)
	$(DIST2I2)
	$(REXXI1)
	$(CURSOR)
	$(CURSORI1)
	$(CURSORI2)
	$(BRUSH)
	$(BRUSHI)
	$(BRUSHI1)
	$(GUI)
	$(GUII)
	$(JPEGLSS1)
	$(JPEGLSS2)
	$(JPEGLSS3)
<

# guide file using MakeInfo
TSMorph.guide: TSMorph.texinfo
	Makeinfo --amiga-39 -o TSMorph.guide TSMorph.texinfo

# TSMorph debug object
TSMorph.ld: $(JPEGLSO1) $(JPEGLSO2) $(JPEGLSO3) $(JPEGLSO4) $(TSMORPH) $(BRUSHES) $(CURSORS) $(IFF)
	blink <WITH <
	FROM lib:c.o $(TSMORPH) $(IFF) $(BRUSHES) $(CURSORS) $(JPEGLSO1) $(JPEGLSO2) $(JPEGLSO3) $(JPEGLSO4)
	LIBRARY lib:lc.lib LIB:amiga.lib LIB:reqtools.lib lib:dctv.lib
	TO TSMorph.ld SC SD BATCH
	VERBOSE
	MAXHUNK 32000
	DEFINE __main=__tinymain
	<

# non debug object
TSMorph: TSMorph.ld
	blink TSMorph.ld to TSMorph NODEBUG

# TSMorph-render debug object
TSMorph-render.ld: $(RENDER) $(IFF) $(IFFS) $(JPEGLSO1) $(JPEGLSO2) $(JPEGLSO3) $(JPEGLSO4R)
	blink <WITH <
	FROM lib:c.o $(RENDER) $(IFF) $(IFFS) $(JPEGLSO1) $(JPEGLSO2) $(JPEGLSO3) $(JPEGLSO4R)
	LIBRARY lib:lcm.lib lib:lc.lib LIB:amiga.lib LIB:reqtools.lib lib:dctv.lib
	TO TSMorph-render.ld SC SD BATCH
	VERBOSE
	DEFINE __main=__tinymain
	<

# non debug object
TSMorph-render: TSMorph-render.ld
	blink TSMorph-render.ld to TSMorph-render NODEBUG

# TSMorph-render.881 debug object
TSMorph-render.881.ld: $(RENDER881) $(IFF) $(IFFS) $(JPEGLSO1) $(JPEGLSO2) $(JPEGLSO3) $(JPEGLSO4R)
	blink <WITH <
	FROM lib:c.o $(RENDER881) $(IFF) $(IFFS) $(JPEGLSO1) $(JPEGLSO2) $(JPEGLSO3) $(JPEGLSO4R)
	LIBRARY lib:lcm881.lib lib:lc.lib LIB:amiga.lib LIB:reqtools.lib lib:dctv.lib
	TO TSMorph-render.881.ld SC SD BATCH
	VERBOSE
	DEFINE __main=__tinymain
	<

# non debug object
TSMorph-render.881: TSMorph-render.881.ld
	blink TSMorph-render.881.ld to TSMorph-render.881 NODEBUG

# TSMorph-prefs debug object
TSMorph-prefs.ld: $(PREFS)
	blink <WITH <
	FROM lib:c.o $(PREFS)
	LIBRARY lib:lc.lib LIB:amiga.lib
	TO TSMorph-prefs.ld SC SD BATCH
	VERBOSE
	DEFINE __main=__tinymain
	<

# non debug object
TSMorph-prefs: TSMorph-prefs.ld
	blink TSMorph-prefs.ld to TSMorph-prefs NODEBUG

# C object dependencies
# sometimes Setdate is used to update source code
# where the header has changed.

TSMorph-prefs.o: TSMorph-prefs.c Prefs.h

Prefs.o: Prefs.c Prefs.h

# Generate .881 object by copying source, compiling and
# then deleting
TSMorph-render881.o: TSMorph-render.c
	Copy TSMorph-render.c TSMorph-render881.c
	lc $(CCFLAGS881) TSMorph-render881.c
	delete TSMorph-render881.c

SaveHAMetc881.o: SaveHAMetc.c
	Copy SaveHAMetc.c SaveHAMetc881.c
	lc $(CCFLAGS881) SaveHAMetc881.c
	delete SaveHAMetc881.c

# precompiled headers
TSMorph.p: TSMorph.h	iffp/ILBMapp.h gui.h
	copy TSMorph.h x.c
	lc -ph -oTSMorph.p x.c
	delete x.c

TSMorph-render.c: iffp/ilbmapp.h progress.h JPEG_LS/jinclude.h
	setdate TSMorph-render.c

SaveHAMetc.c: iffp/ilbmapp.h
	setdate SaveHAMetc.c

iffp/iff.h: iffp/compiler.h iffp/debug.h iffp/iffpstringids.h
	setdate iffp/iff.h

iffp/ilbm.h: iffp/iff.h
	setdate iffp/ilbm.h

iffp/ilbmapp.h: iffp/ilbm.h
	setdate iffp/ilbmapp.h

sprintf.o: sprintf.c

Args.o: Args.c

ilbmr.o: ilbmr.c iffp/ilbm.h iffp/packer.h iffp/ilbmapp.h

getbitmap.o: getbitmap.c iffp/ilbm.h iffp/packer.h iffp/ilbmapp.h

loadilbm.o: loadilbm.c iffp/ilbm.h iffp/ilbmapp.h

parse.o: parse.c iffp/iff.h

unpacker.o: unpacker.c iffp/ilbm.h iffp/packer.h

Subroutines.o: Subroutines.c TSMorph.p
	lc $(CCFLAGS) -HTSMorph.p $*.c

LoadBrushes.o: LoadBrushes.c TSMorph.p
	lc $(CCFLAGS) -HTSMorph.p $*.c

Frames.o: Frames.c TSMorph.p
	lc $(CCFLAGS) -HTSMorph.p $*.c

ControlWindow.o: ControlWindow.c TSMorph.p
	lc $(CCFLAGS) -HTSMorph.p $*.c

Gui.o: Gui.c TSMorph.p Gui.h
	lc $(CCFLAGS) -HTSMorph.p $*.c

iffpstrings.o: iffpstrings.c iffp/iffpstrings.h iffp/iff.h

TSMorph.o: TSMorph.c TSMorph.p
	lc $(CCFLAGS) -HTSMorph.p $*.c

OpalLoad.o: OpalLoad.c TSMorph.p $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h
	lc $(CCFLAGS1) -HTSMorph.p $*.c

# 020+ version, no 881 required
RGBToScreen020.o: RGBToScreen020.c TSMorph.p
	lc $(CCFLAGS1) -m2 -HTSMorph.p $*.c

HandleSettings.o: HandleSettings.c TSMorph.p
	lc $(CCFLAGS) -HTSMorph.p $*.c

help.o: help.c

ilbmw.o: ilbmw.c iffp/ilbm.h iffp/packer.h

packer.o: packer.c iffp/packer.h

saveilbm.o: saveilbm.c iffp/ilbm.h iffp/ilbmapp.h

Progress.o: Progress.c Progress.h

TSMorph-render.o: TSMorph-render.c

SaveHAMetc.o: SaveHAMetc.c

# brushes
$(C)Xu2.o: $(C)Xu2.c

$(C)Xu1.o: $(C)Xu1.c

$(C)Xtwo.o: $(C)Xtwo.c

$(C)Xrel.o: $(C)Xrel.c

$(C)Xone.o: $(C)Xone.c

$(C)Xmov.o: $(C)Xmov.c

$(C)Xl2.o: $(C)Xl2.c

$(C)Xl1.o: $(C)Xl1.c

$(C)Xdel.o: $(C)Xdel.c 

$(C)Xadd.o: $(C)Xadd.c

# pointer
$(B)add.o: $(B)add.c

$(B)del.o: $(B)del.c

$(B)link.o: $(B)link.c

$(B)none.o: $(B)none.c

$(B)one.o: $(B)one.c

$(B)rel.o: $(B)rel.c

$(B)two.o: $(B)two.c

$(B)unlink.o: $(B)unlink.c

$(B)1st.o: $(B)1st.c

$(B)last.o: $(B)last.c

$(B)goto.o: $(B)goto.c

$(B)prev.o: $(B)prev.c

$(B)next.o: $(B)next.c

# JPEG stuff
$(J)jdcolor.o: $(J)jdcolor.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jddeflts.o: $(J)jddeflts.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jdhuff.o: $(J)jdhuff.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jdmain.o: $(J)jdmain.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h TSMorph.p
	lc $(CCFLAGS) -HTSMorph.p $*.c

$(J)jdmaster.o: $(J)jdmaster.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jdmcu.o: $(J)jdmcu.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jdpipe.o: $(J)jdpipe.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jdsample.o: $(J)jdsample.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jinclude.o: $(J)jinclude.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jmemmgr.o: $(J)jmemmgr.c $(J)jmemsys.h $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jmemsys.o: $(J)jmemsys.c $(J)jmemsys.h $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jpegdata.o: $(J)jpegdata.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jquant1.o: $(J)jquant1.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jrdjfif.o: $(J)jrdjfif.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jrevdct.o: $(J)jrevdct.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jutils.o: $(J)jutils.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jwrmem.o: $(J)jwrmem.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jrdgif.o: $(J)jrdgif.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jrdtarga.o: $(J)jrdtarga.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

$(J)jrdppm.o: $(J)jrdppm.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h

# Render version of jdmain
# #defines RENDER for no progress stuff etc.
$(J)jdmainr.o: $(J)jdmain.c $(J)jinclude.h $(J)jconfig.h $(J)jpegdata.h
	Copy $(J)jdmain.c $(J)jdmainr.c
	lc $(CCFLAGS) -DRENDER $(J)jdmainr.c
	delete $(J)jdmainr.c
