#
#  OpenTriton -- A free release of the triton.library source code
#  Copyright (C) 1993-1998  Stefan Zeiger
#
#  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
#  (at your option) 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.
#
#  SMakefile - Makefile for SAS/C SMake
#

VERSION		= 6
REVISION	= 115

SVERSION	= "6"
SREVISION	= "115"

C_SOURCES	= src/triton.c src/quickhelp_prim.c src/frame_prim.c src/text_prim.c src/color_prim.c \
		  classes/object.c classes/displayobject.c classes/checkbox.c classes/group.c \
		  classes/space.c classes/text.c classes/line.c classes/button.c classes/framebox.c \
		  classes/dropbox.c classes/listview.c classes/palette.c classes/slider.c \
		  classes/scroller.c classes/cycle.c classes/string.c classes/progress.c \
		  classes/image.c # classes/dragitem.c src/dragndrop.c
OBJECTS37	= obj37/triton.o obj37/quickhelp_prim.o obj37/frame_prim.o \
		  obj37/text_prim.o obj37/color_prim.o \
		  obj37/object.o obj37/displayobject.o obj37/checkbox.o obj37/group.o obj37/space.o \
		  obj37/text.o obj37/line.o obj37/button.o obj37/framebox.o obj37/dropbox.o \
		  obj37/listview.o obj37/palette.o obj37/slider.o obj37/scroller.o obj37/cycle.o \
		  obj37/string.o obj37/progress.o obj37/image.o # obj37/dragitem.o obj37/dragndrop_prim.o
OBJECTS39	= obj39/triton.o obj39/quickhelp_prim.o obj39/frame_prim.o \
		  obj39/text_prim.o obj39/color_prim.o \
		  obj39/object.o obj39/displayobject.o obj39/checkbox.o obj39/group.o obj39/space.o \
		  obj39/text.o obj39/line.o obj39/button.o obj39/framebox.o obj39/dropbox.o \
		  obj39/listview.o obj39/palette.o obj39/slider.o obj39/scroller.o obj39/cycle.o \
		  obj39/string.o obj39/progress.o obj39/image.o # obj39/dragitem.o obj39/dragndrop_prim.o

LIBDEPS		= include/pragmas/triton_pragmas.h include/libraries/triton.h incl parts/define_classes.h \
		  parts/install_classes.h include

DEMOS		= demos/Demo demos/EnvPrint demos/trLogo demos/CustomClass \
                  demos/ToolManager1 demos/ToolManager2 demos/ToolManager3 demos/ProgInd

BENCHMARKS	= bench/bench

LLIB_SRC	= libsrc/OpenTriton.c libsrc/Stubs.c libsrc/Boopsi.c
LLIB_OBJ	= libsrc/OpenTriton.o libsrc/Stubs.o libsrc/Boopsi.o

COMPILE		= sc LIBRARYCODE LIBRARYFDFILE=triton_lib.fd \
                  DEFINE=SVERSION=$(SVERSION) DEFINE=SREVISION=$(SREVISION)

OS37		= CPU=68000 objname=obj37/
OS39		= define=TR_OS39 CPU=68030 objname=obj39/
OS39_INIT	= define=TR_OS39 CPU=68000 objname=obj39/


########################################################################################## Default targets ##

default: trcl/null.trcl lib demos/Demo demos/CustomClass
lib: libs37/triton.library
med: default prefs/Triton libs39/triton.library
all: med $(BENCHMARKS) \
     demos/EnvPrint demos/CustomClass demos/trLogo \
     demos/ToolManager1 demos/ToolManager2 demos/ToolManager3 demos/ProgInd \
     doc prefs/trPrefsUpdate cat_deutsch


################################################################################## Build the linker system ##

lib/triton.lib: $(LLIB_SRC)
	sc $(LLIB_SRC) objname=libsrc/
	delete lib/triton.lib
	# OML lib/triton.lib R $(LLIB_OBJ)
	join $(LLIB_OBJ) to lib/triton.lib
	copy lib/triton.lib lib:


######################################################################################## Build the library ##

obj37/triton.o: src/triton.c catalogs/triton.o internal.h
	$(COMPILE) src/triton.c $(OS37)

obj37/dragndrop_prim.o: src/dragndrop.c internal.h
	$(COMPILE) src/dragndrop.c $(OS37)

obj37/quickhelp_prim.o: src/quickhelp_prim.c internal.h
	$(COMPILE) src/quickhelp_prim.c $(OS37)

obj37/text_prim.o: src/text_prim.c internal.h
	$(COMPILE) src/text_prim.c $(OS37)

obj37/color_prim.o: src/color_prim.c internal.h
	$(COMPILE) src/color_prim.c $(OS37)

obj37/frame_prim.o: src/frame_prim.c internal.h
	$(COMPILE) src/frame_prim.c $(OS37)

obj39/triton.o: src/triton.c catalogs/triton.o
	$(COMPILE) src/triton.c $(OS39)

obj39/dragndrop_prim.o: src/dragndrop.c internal.h
	$(COMPILE) src/dragndrop.c $(OS39)

obj39/quickhelp_prim.o: src/quickhelp_prim.c internal.h
	$(COMPILE) src/quickhelp_prim.c $(OS39)

obj39/text_prim.o: src/text_prim.c internal.h
	$(COMPILE) src/text_prim.c $(OS39)

obj39/color_prim.o: src/color_prim.c internal.h
	$(COMPILE) src/color_prim.c $(OS39)

obj39/frame_prim.o: src/frame_prim.c internal.h
	$(COMPILE) src/frame_prim.c $(OS39)

libs37/triton.library: $(LIBDEPS) $(OBJECTS37)
	sc with <<
	   LIBRARYCODE LIBRARYFDFILE=triton_lib.fd from $(OBJECTS37) catalogs/triton.o startup=libinit
	   link to libs37/triton.library LIBVERSION $(VERSION) LIBREVISION $(REVISION)
	<
	copy libs37/triton.library libs:
	delete libs37/triton.lnk
	copy triton_lib.fd FD:
	flushlibs
	version triton.library

libs39/triton.library: $(LIBDEPS) $(OBJECTS39)
	sc with <<
	   LIBRARYCODE LIBRARYFDFILE=triton_lib.fd from $(OBJECTS39) catalogs/triton.o startup=libinit
	   link to libs39/triton.library LIBVERSION $(VERSION) LIBREVISION $(REVISION)
	<
	copy libs39/triton.library libs:
	delete libs39/triton.lnk
	flushlibs
	version triton.library

include/pragmas/triton_pragmas.h: triton_lib.fd
	sc:c/fd2pragma triton_lib.fd include/pragmas/triton_pragmas.h


############################################################################################ Default rules ##

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

.asm.o:
	sc:c/asm $*.asm


############################################################################################ Documentation ##

doc: doc/Triton.guide doc/Triton.dvi doc/triton.adoc doc/TritonDev.guide doc/TritonDev.dvi cleandoc

doc/triton.adoc: $(C_SOURCES)
	autodoc -C -Ft:tmpfile -I $(C_SOURCES) $(LLIB_SRC) >doc/triton.adoc

doc/Triton.guide: doc/Triton.texi
	tex:texinfo/makeinfo --amiga --no-split -o doc/Triton.guide doc/Triton.texi

doc/Triton.dvi: doc/Triton.texi
	execute doc/MakeDVI

doc/TritonDev.guide: doc/TritonDev.texi
	tex:texinfo/makeinfo --amiga --no-split -o doc/TritonDev.guide doc/TritonDev.texi

doc/TritonDev.dvi: doc/TritonDev.texi
	execute doc/MakeDVI_dev


############################################################################################### Basic TrCl ##

trcl/trcl.o: trcl/trcl.c trcl/trcl.fd
	sc trcl/trcl.c objname=trcl/ with <<
	   NOMODIFIED OPTIMIZE STRINGSCONST OPTIMIZERSIZE STRIPDEBUG MAPHUNK MAPSYMBOLS
           STRINGSECTION=CODE NOOPTIMIZERINLINELOCAL NOOPTIMIZERSCHEDULER NOOPTIMIZERALIAS
           LIBRARYCODE LIBRARYFDFILE=trcl/trcl.fd
	<

trcl/null.trcl: trcl/trcl.o trcl/trcl.fd
	sc to trcl/null.trcl with <<
	   NOMODIFIED OPTIMIZE STRINGSCONST OPTIMIZERSIZE STRIPDEBUG MAPHUNK MAPSYMBOLS
           LIBRARYCODE STRINGSECTION=CODE NOOPTIMIZERINLINELOCAL NOOPTIMIZERSCHEDULER NOOPTIMIZERALIAS
           LIBRARYFDFILE=trcl/trcl.fd from trcl/trcl.o startup=libinit link
	<
	delete trcl/\#?.lnk
	sc:c/fd2pragma trcl/trcl.fd trcl/trcl_pragmas.h
	copy trcl/null.trcl libs:triton/
	flushlibs


########################################################################################### Make the demos ##

demos/Demo: demos/demo.c lib/triton.lib incl
	sc LINK LIB=lib/triton.lib demos/demo.c TO demos/Demo
	delete demos/Demo.lnk demos/demo.o

demos/EnvPrint: demos/envprint.c lib/triton.lib incl
	sc LINK LIB=lib/triton.lib demos/envprint.c TO demos/EnvPrint
	delete demos/EnvPrint.lnk demos/envprint.o

demos/trLogo: demos/trLogo.c lib/triton.lib incl
	sc LINK LIB=lib/triton.lib demos/trLogo.c TO demos/trLogo
	delete demos/trLogo.lnk demos/trLogo.o

demos/CustomClass: demos/customclass.c lib/triton.lib incl
	sc LINK LIB=lib/triton.lib MATH=standard demos/customclass.c TO demos/CustomClass
	delete demos/CustomClass.lnk demos/customclass.o

demos/ToolManager1: demos/ToolManager1.c lib/triton.lib incl
	sc LINK LIB=lib/triton.lib demos/ToolManager1.c TO demos/ToolManager1
	delete demos/ToolManager1.lnk demos/ToolManager1.o

demos/ToolManager2: demos/ToolManager2.c lib/triton.lib incl
	sc LINK LIB=lib/triton.lib demos/ToolManager2.c TO demos/ToolManager2
	delete demos/ToolManager2.lnk demos/ToolManager2.o

demos/ToolManager3: demos/ToolManager3.c lib/triton.lib incl
	sc LINK LIB=lib/triton.lib demos/ToolManager3.c TO demos/ToolManager3
	delete demos/ToolManager3.lnk demos/ToolManager3.o

demos/ProgInd: demos/progind.c lib/triton.lib incl
	sc LINK LIB=lib/triton.lib demos/progind.c TO demos/ProgInd
	delete demos/ProgInd.lnk demos/progind.o


############################################################################################### Benchmarks ##

bench/bench: bench/bench.c lib/triton.lib incl
	sc LINK LIB=lib/triton.lib bench/bench.c TO bench/bench
	delete bench/bench.lnk bench/bench.o


################################################################################################## Classes ##

#### v37 ####

obj37/object.o: classes/object.c
	$(COMPILE) classes/object.c $(OS37)

obj37/displayobject.o: classes/displayobject.c
	$(COMPILE) classes/displayobject.c $(OS37)

obj37/group.o: classes/group.c
	$(COMPILE) classes/group.c $(OS37)

obj37/line.o: classes/line.c
	$(COMPILE) classes/line.c $(OS37)

obj37/space.o: classes/space.c
	$(COMPILE) classes/space.c $(OS37)

obj37/checkbox.o: classes/checkbox.c
	$(COMPILE) classes/checkbox.c $(OS37)

obj37/text.o: classes/text.c
	$(COMPILE) classes/text.c $(OS37)

obj37/button.o: classes/button.c
	$(COMPILE) classes/button.c $(OS37)

obj37/framebox.o: classes/framebox.c
	$(COMPILE) classes/framebox.c $(OS37)

obj37/dropbox.o: classes/dropbox.c
	$(COMPILE) classes/dropbox.c $(OS37)

obj37/listview.o: classes/listview.c
	$(COMPILE) classes/listview.c $(OS37)

obj37/palette.o: classes/palette.c
	$(COMPILE) classes/palette.c $(OS37)

obj37/slider.o: classes/slider.c
	$(COMPILE) classes/slider.c $(OS37)

obj37/scroller.o: classes/scroller.c
	$(COMPILE) classes/scroller.c $(OS37)

obj37/cycle.o: classes/cycle.c
	$(COMPILE) classes/cycle.c $(OS37)

obj37/string.o: classes/string.c
	$(COMPILE) classes/string.c $(OS37)

obj37/progress.o: classes/progress.c
	$(COMPILE) classes/progress.c $(OS37)

obj37/image.o: classes/image.c
	$(COMPILE) classes/image.c $(OS37)

obj37/dragitem.o: classes/dragitem.c
	$(COMPILE) classes/dragitem.c $(OS37)

#### v39 ####

obj39/object.o: classes/object.c
	$(COMPILE) classes/object.c $(OS39)

obj39/displayobject.o: classes/displayobject.c
	$(COMPILE) classes/displayobject.c $(OS39)

obj39/group.o: classes/group.c
	$(COMPILE) classes/group.c $(OS39)

obj39/line.o: classes/line.c
	$(COMPILE) classes/line.c $(OS39)

obj39/space.o: classes/space.c
	$(COMPILE) classes/space.c $(OS39)

obj39/checkbox.o: classes/checkbox.c
	$(COMPILE) classes/checkbox.c $(OS39)

obj39/text.o: classes/text.c
	$(COMPILE) classes/text.c $(OS39)

obj39/button.o: classes/button.c
	$(COMPILE) classes/button.c $(OS39)

obj39/framebox.o: classes/framebox.c
	$(COMPILE) classes/framebox.c $(OS39)

obj39/dropbox.o: classes/dropbox.c
	$(COMPILE) classes/dropbox.c $(OS39)

obj39/listview.o: classes/listview.c
	$(COMPILE) classes/listview.c $(OS39)

obj39/palette.o: classes/palette.c
	$(COMPILE) classes/palette.c $(OS39)

obj39/slider.o: classes/slider.c
	$(COMPILE) classes/slider.c $(OS39)

obj39/scroller.o: classes/scroller.c
	$(COMPILE) classes/scroller.c $(OS39)

obj39/cycle.o: classes/cycle.c
	$(COMPILE) classes/cycle.c $(OS39)

obj39/string.o: classes/string.c
	$(COMPILE) classes/string.c $(OS39)

obj39/progress.o: classes/progress.c
	$(COMPILE) classes/progress.c $(OS39)

obj39/image.o: classes/image.c
	$(COMPILE) classes/image.c $(OS39)

obj39/dragitem.o: classes/dragitem.c
	$(COMPILE) classes/dragitem.c $(OS39)


############################################################################################# Prefs system ##

prefs/Triton: prefs/Triton.c lib/triton.lib incl catalogs/tritonprefs.o
	sc LINK LIB=lib/triton.lib LIB=lib:reqtools.lib prefs/Triton.c catalogs/tritonprefs.o TO prefs/Triton
	delete prefs/Triton.lnk prefs/Triton.o
	copy prefs/Triton sys:prefs/

prefs/trPrefsUpdate: prefs/trPrefsUpdate.c lib/triton.lib incl
	sc LINK prefs/trPrefsUpdate.c TO prefs/trPrefsUpdate
	delete prefs/trPrefsUpdate.lnk prefs/trPrefsUpdate.o


################################################################################################# Catalogs ##

cat_deutsch: catalogs/deutsch/tritonprefs.catalog catalogs/deutsch/triton.catalog

catalogs/deutsch/tritonprefs.catalog: catalogs/tritonprefs.cd catalogs/deutsch/tritonprefs.ct
	catcomp DESCRIPTOR=catalogs/tritonprefs.cd TRANSLATION=catalogs/deutsch/tritonprefs.ct \
	        CATALOG=catalogs/deutsch/tritonprefs.catalog VB=1
	copy catalogs/deutsch/tritonprefs.catalog locale:catalogs/deutsch/
	avail flush >NIL:

catalogs/deutsch/triton.catalog: catalogs/triton.cd catalogs/deutsch/triton.ct
	catcomp DESCRIPTOR=catalogs/triton.cd TRANSLATION=catalogs/deutsch/triton.ct \
	        CATALOG=catalogs/deutsch/triton.catalog VB=1
	copy catalogs/deutsch/triton.catalog locale:catalogs/deutsch/
	avail flush >NIL:

catalogs/tritonprefs.o: catalogs/tritonprefs.cd
	catcomp DESCRIPTOR=catalogs/tritonprefs.cd CFILE=catalogs/tritonprefs.h \
	        OBJFILE=catalogs/tritonprefs.o VB=1

catalogs/triton.o: catalogs/triton.cd
	catcomp DESCRIPTOR=catalogs/triton.cd CFILE=catalogs/triton.h OBJFILE=catalogs/triton.o VB=1

ctemp: catalogs/tritonprefs.ct catalogs/triton.ct

catalogs/tritonprefs.ct: catalogs/tritonprefs.cd
	catcomp DESCRIPTOR=catalogs/tritonprefs.cd CTFILE=catalogs/tritonprefs.ct VB=1

catalogs/triton.ct: catalogs/triton.cd
	catcomp DESCRIPTOR=catalogs/triton.cd CTFILE=catalogs/triton.ct VB=1


######################################################################################### Class management ##

include/libraries/triton.h: parts/libraries_triton_1.h parts/libraries_triton_1.h classes
	join parts/libraries_triton_1.h classes/\#?.pub1 classes/\#?.pub2 classes/\#?.pub3 \
		parts/libraries_triton_2.h \
		to include/libraries/triton.h

incl: include/libraries/triton.h include/pragmas/triton_pragmas.h
	copy include include: all
	copy include/clib/\#? GNU:os-include/clib/
	copy include/libraries/\#? GNU:os-include/libraries/


################################################################################################## Install ##

clean: cleandoc
	-delete obj37/\#? obj39/\#? include/libraries/\#?.h libs37/\#? libs39/\#? \
	        doc/\#?.dvi doc/\#?.guide doc/triton.adoc prefs/Triton prefs/trPrefsUpdate $(DEMOS) \
		trcl/\#?.o trcl/\#?.trcl

cleandoc:
	-delete doc/\#?.info doc/\#?.log doc/\#?.aux doc/\#?.toc doc/\#?.cp doc/\#?.fn doc/\#?.vr \
	        doc/\#?.tp doc/\#?.ky doc/\#?.pg doc/\#?.cps

install: installclean # all
	execute installation/install

pack: # install
	execute installation/pack

installclean:
	-delete ram:Triton\#? all
