# Programs
CC = sc
RM = delete

# Files
GST  = YAM.gst
OBJS = YAM_loc.o YAM.o YAM_AB.o YAM_CL.o YAM_CO.o YAM_COg.o YAM_COs.o YAM_DI.o YAM_EA.o \
       YAM_ER.o YAM_FI.o YAM_FO.o YAM_MA.o YAM_MAf.o YAM_MI.o YAM_RE.o YAM_TR.o YAM_US.o \
       YAM_UT.o YAM_WR.o YAM_rexx.o YAM_rexx_rxcl.o YAM_rexx_rxif.o \
       hmac_md5.o all_sas.o
DATE = T:YAM-date.tmp

# Compiler flags
CPU        = 68020
#YAMVERSION = "2.3-dev"
YAMDATE	   = `Type $(DATE)`
#OPTFLAGS   = OPT OPTCOMPLEXITY=5 OPTDEPTH=3 OPTINLOCAL
OPTFLAGS   = NOOPT
#DEBUG	   = DEF DEBUG DEBUG=LINE

# Pre-build for release:
DEBUG      = DEBUG=LINE
YAMVERSION = "2.3"

# CPU is defined outside

CFLAGS = RESOPT NOLINK GST=$(GST) DEF YAMVER=$(YAMVERSION) $(YAMDATE) IGNORE=147,306\
DATA=FAR CODE=FAR ERRORREXX INCLUDEDIR=includes STRINGSECTION=FAR $(DEBUG)\
NOICONS IDLEN=60 CPU=$(CPU) NOCHECKABORT\
DEFINE=__NOLIBBASE__ # this is required, as we use wrong UtilityBase declaration

# Default rules
.c.o:
	$(CC) $(CFLAGS) $(OPTFLAGS) $*.c

.ct.catalog:
	flexcat YAM.cd $*.ct CATALOG=YAM_$*.catalog FLUSH


# Targets & dependencies
all:	$(GST) YAM

clean:
	$(RM) \#?.(o|map|gst) (YAM_loc.\#?|YAM.h|YAM)

copy:	all catalogs
	copy YAM YAM:
#	copy YAM_$$language.catalog LOCALE:$$language/YAM.catalog

catalogs: YAM_deutsch.catalog

YAM:	$(OBJS)
	slink <with <
	TO YAM
	FROM lib:c.o $(OBJS)
	LIB lib:scnb.lib lib:amiga.lib lib:debug.lib lib:NewReadArgs.o
	MAP YAM.map
	STRIPDEBUG NOICONS
	<

YAM.h: YAM.h.in
	copy YAM.h.in YAM.h

YAM_loc.h: YAM.cd
	flexcat YAM.cd YAM_loc.h=C_h.sd YAM_loc.c=C_c.sd

YAM_loc.c: YAM.cd
	; # dummy entry to make smake happy

YAM_deutsch.catalog: deutsch.ct

YAM.o:     YAM.c     YAM.h YAM_loc.h $(DATE)
YAM_AB.o:  YAM_AB.c  YAM.h YAM_loc.h
YAM_CL.o:  YAM_CL.c  YAM.h YAM_loc.h
YAM_CO.o:  YAM_CO.c  YAM.h YAM_loc.h
YAM_COg.o: YAM_COg.c YAM.h YAM_loc.h
YAM_COs.o: YAM_COs.c YAM.h YAM_loc.h
YAM_DI.o:  YAM_DI.c  YAM.h YAM_loc.h
YAM_EA.o:  YAM_EA.c  YAM.h YAM_loc.h
YAM_ER.o:  YAM_ER.c  YAM.h YAM_loc.h
YAM_FI.o:  YAM_FI.c  YAM.h YAM_loc.h
YAM_FO.o:  YAM_FO.c  YAM.h YAM_loc.h
	$(CC) $(CFLAGS) NOOPT $*.c		# doesn't compile with optimization :-(

YAM_MA.o:  YAM_MA.c  YAM.h YAM_loc.h
	$(CC) $(CFLAGS) NOOPT $*.c		# doesn't compile with optimization :-(

YAM_MAf.o: YAM_MAf.c YAM.h YAM_loc.h $(DATE)
YAM_MI.o:  YAM_MI.c  YAM.h YAM_loc.h
YAM_RE.o:  YAM_RE.c  YAM.h YAM_loc.h
YAM_TR.o:  YAM_TR.c  YAM.h YAM_loc.h
YAM_US.o:  YAM_US.c  YAM.h YAM_loc.h
YAM_UT.o:  YAM_UT.c  YAM.h YAM_loc.h
YAM_WR.o:  YAM_WR.c  YAM.h YAM_loc.h
YAM_rexx.o     : YAM_rexx.c YAM_rexx.h
YAM_rexx_rxcl.o: YAM_rexx_rxcl.c YAM_rexx.h
YAM_rexx_rxif.o: YAM_rexx_rxif.c YAM_rexx.h YAM.h YAM_loc.h

YAM_loc.o: YAM_loc.h YAM_loc.c
	$(CC) $(CFLAGS) YAM_loc.c

$(DATE):
	@echo "Bumping date..."
	@rx   >$(DATE) "say 'DEF __YAM_VERDATE=' || '22'x || right(date(S),2)*1'.'substr(date(S),5,2)*1'.'left(date(S),4) || '22'x || ' DEF __YAM_VERDAYS=' || date('I')"

$(GST): headers.h YAM.h $(DATE) $(DAYS)
	$(CC) $(CFLAGS) headers.h mkgst $(GST) IGNORE=105
