# MPGui - Amiga Guis from Text Files
# Copyright (C)  1996 Mark John Paddock

# $VER: MPGui_smakefile 5.3 (16.2.97)

# 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.

# mark@topic.demon.co.uk
# mpaddock@cix.compulink.co.uk

# Make file for MPGui and SAS/C 6.56

# various defines
OS        = sC/
PS        = sP/
PA        = $(PS)a/
DS        = sD/
GS        = sG/
R         = Rexx/
I         = .info
G         = Gui/
D         = docs/
INC       = include/
DE        = Demo/

# Compilation flags
# Normal compile
NORMFLAGS  = PARM=R CONSTLIB NOSTKCHK STRMER UCHAR STREQ OPT OPTGO\
 CNEST NOMINC STRCONS VERBOSE STRSECT=CODE NOCHKABORT\
 DBG=L WARN=ALL ERR=ALL IGN=104,51,148,190,61,165,120,212,112 IDIR=$(INC)
# Compile math = FFP 000
CCFLAGS000 = $(NORMFLAGS) CPU=ANY MATH=FFP OPTSIZE
# Compile MPGui.library
CCFLAGSLG000= $(CCFLAGS000) LIBCODE

# default compilation
.c.o:
   sc $(CCFLAGS000) $*.c

.asm.o:
	asm -d $*.asm

IGDIST    = $(INC)libraries/MPGui.h $(INC)clib/MPGui_protos.h $(INC)pragmas/MPGui_pragmas.h

DGDIST    = $(D)MPGui.doc

MPGUIDIST = $(IGDIST) $(DGDIST) libs/MPGui.library RunMPGui $(GS)RunMPGui.c $(OS)sprintf.c $(DE)SnoopDos-prefs $(DE)SnoopDos-prefs$(I) Demo$(I)\
 EditPrefs $(G)SnoopDos.def $(G)SnoopDos.gui $(G)Test.gui $(DE)Test $(DE)Test$(I) EditPrefs-rexx EditPrefs.guide\
 MPGui.guide MPGui.guide$(I) COPYING Install Install$(I)

COMMONSRC = $(OS)sprintf.c

DOCSRC    = COPYING smakefile $(DS)EditPrefs.texi $(DS)MPGui.texi Install Install$(I)

EMPTYSRC   = lha/emptyfile $(D)emptyfile $(INC)clib/emptyfile $(INC)libraries/emptyfile $(INC)pragmas/emptyfile $(GS)pragmas/emptyfile\
             libs/emptyfile

PREFSSRC  = $(PS)EditPrefs.c $(PA)EditPrefs.arb $(PA)EditPrefs_rxif.c $(PA)EditPrefs_rxcl.c $(PA)EditPrefs.c $(PA)EditPrefs.h $(PS)EditPrefs.cd

GUISRC    = $(GS)RunMPGui.c $(GS)MPGui.c $(GS)Hook.c $(GS)MPGui.h $(GS)MPGui.fd $(GS)clib/MPGui_Protos.h $(GS)libraries/MPGui.h $(GS)pragmas.edit\
				$(GS)MPGui.cd $(GS)RunMPGui.cd

DEMOSRC   = $(DE)SnoopDos-prefs $(DE)SnoopDos-prefs$(I) Demo$(I) $(G)SnoopDos.def $(G)SnoopDos.gui $(G)Test.gui $(DE)Test $(DE)Test$(I) 

FULLSRC   = $(COMMONSRC) $(DOCSRC) $(EMPTYSRC) $(PREFSSRC) $(GUISRC) $(DEMOSRC) MPGui.guide$(I) Read.me

PREFSOBJ  = $(PS)EditPrefs.o $(OS)sprintf.o $(PA)EditPrefs.o $(PA)EditPrefs_rxcl.o $(PA)EditPrefs_rxif.o

GUIOBJ000 = $(GS)MPGui.o $(GS)Hook.o

#stuff to delete
DELETE    = \#?/\#?.o \#?/\#?/\#?.o \#?/\#?.ld EditPrefs \
 $(GS)RunMPGui RunMPGui libs/MPGui.library $(GS)MPGui.library $(GS)pragmas/MPGui_pragmas.h\
 EditPrefs-rexx EditPrefs.guide\
 $(IGDIST) $(DGDIST)

# Default is to generate Source and Object lha
Everything: lha/MPGui53.lha lha/MPGui53s.lha

# Delete all the built files (except two above) to force a recompile
Delete:
   -delete $(DELETE)

# MPGui lha distribution
lha/MPGui53.lha: $(MPGUIDIST)
	-delete lha/MPGui53.lha
	lha -a -F u -x lha/MPGui53.lha <@<
	$(MPGUIDIST)
	<

# Source distribution - compressed lha archive
lha/MPGui53s.lha: $(FULLSRC)
	-delete lha/MPGui53s.lha
   lha -a -F u -x lha/MPGui53s.lha <@<
	$(FULLSRC)
	<

#Includes
$(INC)libraries/MPGui.h: $(GS)libraries/MPGui.h
	copy $(GS)libraries/MPGui.h $(INC)libraries/MPGui.h

$(INC)clib/MPGui_protos.h: $(GS)clib/MPGui_protos.h
	copy $(GS)clib/MPGui_protos.h $(INC)clib/MPGui_protos.h

$(INC)pragmas/MPGui_pragmas.h: $(GS)pragmas/MPGui_pragmas.h
	copy $(GS)pragmas/MPGui_pragmas.h $(INC)pragmas/MPGui_pragmas.h

#autodocs
$(D)MPGui.doc: $(GS)MPGui.c $(GS)RunMPGui.c
	makedoc $(GS)MPGui.c $(GS)RunMPGui.c noicon toc autodoc $(D)MPGui.doc

# Rexx docs
EditPrefs-rexx: $(PA)EditPrefs_rxif.c
	makedoc $(PA)EditPrefs_rxif.c noicon toc amigaguide noformfeed autodoc EditPrefs-rexx

# guide file using MakeInfo
EditPrefs.guide: $(DS)EditPrefs.texi
   Makeinfo --amiga-39 -o EditPrefs.guide $(DS)EditPrefs.texi

MPGui.guide: $(DS)MPGui.texi
   Makeinfo --amiga-39 -o MPGui.guide $(DS)MPGui.texi

# MPGui stuff
$(GS)RunMPGui.ld: $(GS)RunMPGui.c $(INC)pragmas/MPGui_pragmas.h $(INC)clib/MPGui_protos.h $(INC)libraries/MPGui.h $(OS)sprintf.o $(GS)Rmessages.h
	sc $(CCFLAGS000) link $(GS)RunMPGui.c $(OS)sprintf.o to $(GS)RunMPGui.ld

RunMPGui: $(GS)RunMPGui.ld
	slink from $(GS)RunMPGui.ld to RunMPGui stripdebug noicons

$(GS)Rmessages.h: $(GS)RunMPGui.cd
	CatComp $? CFILE=$@ NOOPTIM NOCODE NOARRAY

$(GS)MPGui.library: $(GUIOBJ000)
	sc $(CCFLAGSLG000) "linkopt=LIBID MPGui.library addsym VERBOSE" STARTUP=libinitr TO $(GS)MPGui.library link LIBFD $(GS)MPGui.fd LIBVERSION 5 LIBREVISION 3 $(GUIOBJ000)

libs/MPGui.library: $(GS)MPGui.library
	slink from $(GS)MPGui.library to libs/MPGui.library stripdebug noicons

$(GS)pragmas/MPGui_pragmas.h: $(GS)MPGui.fd $(GS)pragmas.edit
	fd2pragma $(GS)MPGui.fd $(GS)pragmas/MPGui_pragmas.h
	ed $(GS)pragmas/MPGui_pragmas.h with $(GS)pragmas.edit

$(GS)MPGui.o: $(GS)MPGui.c $(GS)libraries/MPGui.h $(GS)MPGui.h $(GS)messages.h
	sc $(CCFLAGSLG000) $*.c

$(GS)Hook.o: $(GS)Hook.c $(GS)MPGui.h $(GS)messages.h
	sc $(CCFLAGSLG000) $*.c

$(GS)messages.h: $(GS)MPGui.cd
	CatComp $? CFILE=$@ NOOPTIM NOCODE NOARRAY

# EditPrefs debug object
$(PS)EditPrefs.ld: $(PREFSOBJ)
   slink <WITH <
   FROM lib:c.o $(PREFSOBJ)
   LIBRARY lib:sc.lib LIB:amiga.lib
   TO $(PS)EditPrefs.ld SC SD BATCH
   VERBOSE
	ADDSYM
   DEFINE @__chkabort=@__dummy
   <

# non debug object
EditPrefs: $(PS)EditPrefs.ld
   slink $(PS)EditPrefs.ld to EditPrefs STRIPDEBUG NOICONS

$(PS)EditPrefs.o: $(PS)EditPrefs.c $(INC)pragmas/MPGui_pragmas.h $(INC)clib/MPGui_protos.h $(INC)libraries/MPGui.h\
 $(PA)EditPrefs.h $(PS)messages.h

$(PS)messages.h: $(PS)EditPrefs.cd
	CatComp $? CFILE=$@ NOOPTIM NOCODE NOARRAY

# ARexxBoxStuff
$(PA)EditPrefs_rxcl.c: $(PA)EditPrefs.arb
   echo "Use ARexxBox to regenerate EditPrefs ARexx source"
   Fault 10

# ARexxBox does not regenerate the .c file so setdate it if the header has changed
$(PA)EditPrefs.c: $(PA)EditPrefs.h
   setdate $(PA)EditPrefs.c

$(PA)EditPrefs.h: $(PA)EditPrefs.arb
   echo "Use ARexxBox to regenerate EditPrefs ARexx source"
   Fault 10

$(PA)EditPrefs.o: $(PA)EditPrefs.c $(PA)EditPrefs.h
   sc $(CCFLAGS000) IGN=178 $*.c

$(PA)EditPrefs_rxcl.o: $(PA)EditPrefs_rxcl.c $(PA)EditPrefs.h

$(PA)EditPrefs_rxif.o: $(PA)EditPrefs_rxif.c $(PA)EditPrefs.h $(INC)pragmas/MPGui_pragmas.h $(INC)clib/MPGui_protos.h $(INC)libraries/MPGui.h
