#   $Id: SMakeFile,v 1.1 2006/08/13 11:57:41 laire Exp $
#   makefile for SAS-C
#
#   XAD library system for archive handling
#   Copyright (C) 1998 and later by Dirk Stcker <soft@dstoecker.de>
#
#   This library is free software; you can redistribute it and/or
#   modify it under the terms of the GNU Lesser General Public
#   License as published by the Free Software Foundation; either
#   version 2.1 of the License, or (at your option) any later version.
#
#   This library 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
#   Lesser General Public License for more details.
#
#   You should have received a copy of the GNU Lesser General Public
#   License along with this library; if not, write to the Free Software
#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

ODIR = T:
CDIR = /clients/
IDIR = /include/
LDIR = /
ADIR = 
DEBODIR = $(ODIR)D	# includes the first namepart of debug objects!

SCOPT = RESOPT PARM=R NOSTKCHK STRMER UCHAR NOCHKABORT NOICONS MEMSIZE=HUGE \
  DATA=FO CODE=FAR DEBUG=SYMBOL DEFINE=XAD_GPLCLIENTS IDIR=$(IDIR) IDIR=$(CDIR)
SCOPTSDEB = $(SCOPT) NOOPT DEFINE=DEBUG DEFINE=DEBUGRESOURCE
SCOPTS = $(SCOPT) DEFINE=__NOLIBBASE__ OPT OPTINLOCAL OPTGO OPTLOOP OPTPEEP OPTSCHED
SCOPTSTEST = $(SCOPT) NOOPT DEFINE=__NOLIBBASE__ 
SCOPTCL = $(SCOPTS) STRSECT=FAR OPTTIME NOOPTSCHED $(LDIR)clients.c
SCOPTIN = $(SCOPTS) IGNORE=315 OPTSIZE $(ADIR)libinit.c
SCOPTAL = $(SCOPTS) OPTSIZE $(LDIR)all.c
SCOPTINRES = $(SCOPTIN) DEFINE=DEBUGRESOURCE
SCOPTALRES = $(SCOPTAL) DEFINE=DEBUGRESOURCE

SLOPTS = NOICONS SMALLCODE SMALLDATA LIB LIB:SDI_ASM_STD_functions.lib
FARLIB = LIB:scnb.lib

HFILES   = \
	$(IDIR)ConvertE.c \
	$(IDIR)functions.h \
	$(IDIR)privdefs.h
	$(IDIR)version.h \
	$(IDIR)xadmaster.h

CFILES = \
        $(CDIR)HA.c \
        $(CDIR)TR-DOS.c \
	$(CDIR)Ace.c \
	$(CDIR)AMPK.c \
	$(CDIR)bzip2.c \
	$(CDIR)CAB.c \
	$(CDIR)Cpio.c \
	$(CDIR)CrunchDisk.c \
	$(CDIR)DMS.c \
	$(CDIR)DCS.c \
	$(CDIR)IFF-CDAF.c \
	$(CDIR)FS_Amiga.c \
        $(CDIR)FS_FAT.c \
        $(CDIR)FS_SOS.c \
        $(CDIR)LhA.c \
	$(CDIR)LhF.c \
	$(CDIR)LZX.c \
	$(CDIR)MDC.c \
	$(CDIR)MXM-SimpleArc.c \
	$(CDIR)PackDev.c \
	$(CDIR)PackDisk.c \
	$(CDIR)RPM.c \
	$(CDIR)StuffIt.c \
	$(CDIR)SuperDuper3.c \
	$(CDIR)Tar.c \
	$(CDIR)xDisk.c \
	$(CDIR)xMash.c \
	$(CDIR)Zip.c \
	$(CDIR)Zoom.c \
	$(CDIR)xadIO_Compress.c \
	$(CDIR)xadIO_XPK.c \
	$(CDIR)xadIO.h \
	$(CDIR)xadIO.c

CHARSET = \
	$(LDIR)cs_atarist_to_unicode.c \
	$(LDIR)cs_c64_to_unicode.c \
	$(LDIR)cs_ibmcp437_to_unicode.c \
	$(LDIR)cs_macroman_to_unicode.c \
	$(LDIR)cs_unicode_to_iso8859-1.c \
	$(LDIR)cs_windowscp1252_to_unicod.c

FILES = $(LDIR)all.c \
	$(LDIR)clientfunc.c \
	$(LDIR)copymem.c \
	$(LDIR)crc.c \
	$(LDIR)dates.c \
	$(LDIR)diskfile.c \
	$(LDIR)diskunarc.c \
        $(LDIR)error.c \
        $(LDIR)filename.c \
        $(LDIR)fileunarc.c \
        $(LDIR)hook.c \
        $(ADIR)hook_disk.c \
        $(LDIR)hook_diskarc.c \
        $(ADIR)hook_fh.c \
        $(LDIR)hook_mem.c \
        $(LDIR)hook_splitted.c \
        $(LDIR)hook_stream.c \
        $(LDIR)info.c \
        $(LDIR)objects.c \
        $(LDIR)protection.c \
	$(HFILES) $(CHARSET)

DEBOBJ = \
	$(DEBODIR)clients.o \
	$(DEBODIR)clientfunc.o \
	$(DEBODIR)copymem.o \
	$(DEBODIR)crc.o \
	$(DEBODIR)dates.o \
	$(DEBODIR)debug.o \
	$(DEBODIR)diskfile.o \
	$(DEBODIR)diskunarc.o \
	$(DEBODIR)error.o \
	$(DEBODIR)filename.o \
	$(DEBODIR)fileunarc.o \
	$(DEBODIR)hook.o \
	$(DEBODIR)hook_disk.o \
	$(DEBODIR)hook_diskarc.o \
	$(DEBODIR)hook_fh.o \
	$(DEBODIR)hook_mem.o \
	$(DEBODIR)hook_splitted.o \
	$(DEBODIR)hook_stream.o \
	$(DEBODIR)info.o \
	$(DEBODIR)objects.o \
	$(DEBODIR)protection.o

DEF: Install DEBUG
CPU: 000 020 030 040 060
RES: 060RES
ALL: CPU DEBUG

Flush:
	Avail FLUSH

ReInit:	DEBUG
	$(ODIR)xadmaster.libraryDEBUG

Install: 060 Flush
	Copy $(ODIR)xadmaster.library060 LIBS:xadmaster.library

Install040: 040 Flush
	Copy $(ODIR)xadmaster.library040 LIBS:xadmaster.library

Install020: 020 Flush
	Copy $(ODIR)xadmaster.library020 LIBS:xadmaster.library

InstallTEST: TEST Flush
	Copy $(ODIR)xadmaster.library060T LIBS:xadmaster.library

InstallRES: 060RES Flush
	Copy $(ODIR)xadmaster.library060RES LIBS:xadmaster.library

InstallDEBUG: DEBUG Flush
	Copy $(ODIR)xadmaster.libraryDEBUG LIBS:xadmaster.library

000:	   $(ODIR)xadmaster.library
020:	   $(ODIR)xadmaster.library020
030:	   $(ODIR)xadmaster.library030
040:	   $(ODIR)xadmaster.library040
060:	   $(ODIR)xadmaster.library060
060RES:	   $(ODIR)xadmaster.library060RES
DEBUG:     $(ODIR)xadmaster.libraryDEBUG
TEST:	   $(ODIR)xadmaster.library060T

# ******* object files *******

$(ODIR)libinit000.o: $(HFILES) $(ADIR)libinit.c
	sc $(SCOPTIN) OBJNAME=$@

$(ODIR)clients000.o: $(HFILES) $(LDIR)clients.c $(CFILES)
	sc $(SCOPTCL) OBJNAME=$@

$(ODIR)all000.o: $(FILES)
	sc $(SCOPTAL) OBJNAME=$@

# ******* object files for 020 *******

$(ODIR)libinit020.o: $(HFILES) $(ADIR)libinit.c
	sc $(SCOPTIN) OBJNAME=$@ CPU=68020

$(ODIR)clients020.o: $(HFILES) $(LDIR)clients.c $(CFILES)
	sc $(SCOPTCL) OBJNAME=$@ CPU=68020

$(ODIR)all020.o: $(FILES)
	sc $(SCOPTAL) OBJNAME=$@ CPU=68020

# ******* object files for 030 *******

$(ODIR)libinit030.o: $(HFILES) $(ADIR)libinit.c
	sc $(SCOPTIN) OBJNAME=$@ CPU=68030

$(ODIR)clients030.o: $(HFILES) $(LDIR)clients.c $(CFILES)
	sc $(SCOPTCL) OBJNAME=$@ CPU=68030

$(ODIR)all030.o: $(FILES)
	sc $(SCOPTAL) OBJNAME=$@ CPU=68030

# ******* object files for 040 *******

$(ODIR)libinit040.o: $(HFILES) $(ADIR)libinit.c
	sc $(SCOPTIN) OBJNAME=$@ CPU=68040

$(ODIR)clients040.o: $(HFILES) $(LDIR)clients.c $(CFILES)
	sc $(SCOPTCL) OBJNAME=$@ CPU=68040

$(ODIR)all040.o: $(FILES)
	sc $(SCOPTAL) OBJNAME=$@ CPU=68040

# ******* object files for 060 *******

$(ODIR)libinit060.o: $(HFILES) $(ADIR)libinit.c
	sc $(SCOPTIN) OBJNAME=$@ CPU=68060

$(ODIR)clients060.o: $(HFILES) $(LDIR)clients.c $(CFILES)
	sc $(SCOPTCL) OBJNAME=$@ CPU=68060

$(ODIR)all060.o: $(FILES)
	sc $(SCOPTAL) OBJNAME=$@ CPU=68060

# ******* object files for 060T *******

$(ODIR)clients060T.o: $(HFILES) $(LDIR)clients.c $(CFILES)
	sc $(SCOPTSTEST) OBJNAME=$@ CPU=68060 STRSECT=FAR $(LDIR)clients.c

$(ODIR)all060T.o: $(FILES)
	sc $(SCOPTSTEST) OBJNAME=$@ CPU=68060 $(LDIR)all.c

# ******* object files for 060RES *******

$(ODIR)libinit060RES.o: $(HFILES) $(ADIR)libinit.c
	sc $(SCOPTINRES) OBJNAME=$@ CPU=68060

$(ODIR)all060RES.o: $(FILES)
	sc $(SCOPTALRES) OBJNAME=$@ CPU=68060

$(ODIR)debugRES.o: $(HFILES) $(LDIR)debug.c
	sc $(SCOPTS) DEFINE=DEBUGRESOURCE OBJNAME=$@ $(LDIR)debug.c

# ******* object files for debugging ******

$(DEBODIR)clients.o: $(HFILES) $(LDIR)clients.c $(CFILES)
	sc $(SCOPTSDEB) OBJNAME=$@ STRSECT=FAR $(LDIR)clients.c

$(DEBODIR)clientfunc.o: $(HFILES) $(LDIR)clientfunc.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)clientfunc.c

$(DEBODIR)copymem.o: $(HFILES) $(LDIR)copymem.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)copymem.c

$(DEBODIR)crc.o: $(HFILES) $(LDIR)crc.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)crc.c

$(DEBODIR)dates.o: $(HFILES) $(LDIR)dates.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)dates.c

$(DEBODIR)debug.o: $(HFILES) $(LDIR)debug.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)debug.c

$(DEBODIR)diskfile.o: $(HFILES) $(LDIR)diskfile.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)diskfile.c

$(DEBODIR)diskunarc.o: $(HFILES) $(LDIR)diskunarc.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)diskunarc.c

$(DEBODIR)error.o: $(HFILES) $(LDIR)error.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)error.c

$(DEBODIR)filename.o: $(HFILES) $(LDIR)filename.c $(CHARSET)
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)filename.c

$(DEBODIR)fileunarc.o: $(HFILES) $(LDIR)fileunarc.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)fileunarc.c

$(DEBODIR)hook.o: $(HFILES) $(LDIR)hook.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)hook.c

$(DEBODIR)hook_disk.o: $(HFILES) $(ADIR)hook_disk.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(ADIR)hook_disk.c

$(DEBODIR)hook_diskarc.o: $(HFILES) $(LDIR)hook_diskarc.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)hook_diskarc.c

$(DEBODIR)hook_fh.o: $(HFILES) $(ADIR)hook_fh.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(ADIR)hook_fh.c

$(DEBODIR)hook_mem.o: $(HFILES) $(LDIR)hook_mem.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)hook_mem.c

$(DEBODIR)hook_splitted.o: $(HFILES) $(LDIR)hook_splitted.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)hook_splitted.c

$(DEBODIR)hook_stream.o: $(HFILES) $(LDIR)hook_stream.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)hook_stream.c

$(DEBODIR)info.o: $(HFILES) $(LDIR)info.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)info.c

$(DEBODIR)libinit.o: $(HFILES) $(ADIR)libinit.c
	sc $(SCOPTSDEB) OBJNAME=$@ IGNORE=315 $(ADIR)libinit.c

$(DEBODIR)objects.o: $(HFILES) $(LDIR)objects.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)objects.c

$(DEBODIR)protection.o: $(HFILES) $(LDIR)protection.c
	sc $(SCOPTSDEB) OBJNAME=$@ $(LDIR)protection.c

$(ODIR)xaddebug.lib: $(DEBOBJ)
	join $(DEBOBJ) AS $@

# ******* libraries creation *******

$(ODIR)xadmaster.library: $(ODIR)libinit000.o $(ODIR)all000.o $(ODIR)clients000.o
	slink FROM $(ODIR)libinit000.o $(ODIR)all000.o $(ODIR)clients000.o \
	$(SLOPTS) $(FARLIB) TO $@ STRIPDEBUG

$(ODIR)xadmaster.library020: $(ODIR)libinit020.o $(ODIR)all020.o $(ODIR)clients020.o
	slink FROM $(ODIR)libinit020.o $(ODIR)all020.o $(ODIR)clients020.o \
	$(SLOPTS) $(FARLIB) TO $@ STRIPDEBUG

$(ODIR)xadmaster.library030: $(ODIR)libinit030.o $(ODIR)all030.o $(ODIR)clients030.o
	slink FROM $(ODIR)libinit030.o $(ODIR)all030.o $(ODIR)clients030.o \
	$(SLOPTS) $(FARLIB) TO $@ STRIPDEBUG

$(ODIR)xadmaster.library040: $(ODIR)libinit040.o $(ODIR)all040.o $(ODIR)clients040.o
	slink FROM $(ODIR)libinit040.o $(ODIR)all040.o $(ODIR)clients040.o \
	$(SLOPTS) $(FARLIB) TO $@ STRIPDEBUG

$(ODIR)xadmaster.library060: $(ODIR)libinit060.o $(ODIR)all060.o $(ODIR)clients060.o
	slink FROM $(ODIR)libinit060.o $(ODIR)all060.o $(ODIR)clients060.o \
	$(SLOPTS) $(FARLIB) TO $@ STRIPDEBUG

$(ODIR)xadmaster.library060T: $(ODIR)libinit060.o $(ODIR)all060T.o $(ODIR)clients060T.o
	slink FROM $(ODIR)libinit060.o $(ODIR)all060T.o $(ODIR)clients060T.o \
	$(SLOPTS) $(FARLIB) TO $@ STRIPDEBUG

$(ODIR)xadmaster.library060RES: $(ODIR)libinit060RES.o $(ODIR)all060RES.o $(ODIR)clients060.o $(ODIR)debugRES.o
	slink FROM $(ODIR)libinit060RES.o $(ODIR)all060RES.o $(ODIR)clients060.o \
	$(ODIR)debugRES.o $(SLOPTS) $(FARLIB) LIB LIB:debug.lib LIB:ddebug.lib LIB:amiga.lib \
	TO $@ STRIPDEBUG

$(ODIR)xadmaster.libraryDEBUG: $(DEBODIR)libinit.o $(ODIR)xaddebug.lib
	slink FROM $(DEBODIR)libinit.o $(SLOPTS) $(FARLIB) $(ODIR)xaddebug.lib LIB:debug.lib LIB:ddebug.lib LIB:amiga.lib TO $@

