CC68k	= vc
COPTSM	= -c -cpu=68040 -I:warpos/include -IPPC-CDROM:PPCRelease/PPC-Dev/include
CCPPC	= vc +warpos
COPTSP	= -c -DKERNEL_DEBUG -I:warpos/include -IPPC-CDROM:PPCRelease/PPC-Dev/include -amiga-align
CLIBS	=
AS68k	= phxass
AOPTS	= Q NOEXE OPT 2 I :Asm/NDUK40/Include_i,:warpos/include SET DEBUGMODE
ASPPC	= pasm -F2 -DSHOW_UNIMPLEMENTED -DKERNEL_DEBUG
LD	= vlink
LDOPTS	= -dn -s -x


all: ppc.library.debug


OBJ68k	= libinit.o misc68k.o cache68k.o ppcmem.o ppcobject.o ppcattr.o \
          ppcmsg.o kernelsyms.o relocnames.o elfloadseg.o elfsegment.o \
          supp.o mpsema68k.o errors.o sprintf68k.o

OBJPPC	= kernelcall.o asmkernel.o kernlaunch.o kernel.o kernelinit.o \
          taskinit.o kerntimerobj.o libraries.o msgsystem.o miscppc.o \
          kernattr.o mpsemappc.o nappc.o


ppc.library.debug: lib68k.o libppc.o
	$(LD) $(LDOPTS) -o $@ lib68k.o libppc.o

lib68k.o: $(OBJ68k)
	$(LD) -r $(LDOPTS) -o $@ $(OBJ68k) -lamiga

libppc.o: $(OBJPPC) firstppc.o lastppc.o
	$(LD) -r $(LDOPTS) -o $@ firstppc.o $(OBJPPC) lastppc.o


# M68k assembler

libinit.o: libinit.asm ppclibemu.i
	$(AS68k) $(AOPTS) libinit.asm

misc68k.o: misc68k.asm ppclibemu.i
	$(AS68k) $(AOPTS) misc68k.asm

cache68k.o: cache68k.asm ppclibemu.i
	$(AS68k) $(AOPTS) cache68k.asm

sprintf68k.o: sprintf68k.asm
	$(AS68k) $(AOPTS) sprintf68k.asm

elfsegment.o: elfsegment.asm
	$(AS68k) $(AOPTS) elfsegment.asm


# M68k C

ppcmem.o: ppcmem.c ppclibemu.h mpsema.h inline68k.h errors.h supp.h
	$(CC68k) $(COPTSM) ppcmem.c

ppcobject.o: ppcobject.c ppclibemu.h mpsema.h inline68k.h elfobject.h \
             taskobject.h msgsystem.h elflibraries.h errors.h \
             supp.h elf32.h elfcommon.h mpsema_protos.h
	$(CC68k) $(COPTSM) ppcobject.c

ppcattr.o: ppcattr.c ppclibemu.h mpsema.h inline68k.h errors.h supp.h \
           taskobject.h mpsema_protos.h
	$(CC68k) $(COPTSM) ppcattr.c

ppcmsg.o: ppcmsg.c ppclibemu.h mpsema.h inline68k.h errors.h supp.h \
          mpsema_protos.h
	$(CC68k) $(COPTSM) ppcmsg.c

kernelsyms.o: kernelsyms.c
	$(CC68k) $(COPTSM) kernelsyms.c

relocnames.o: relocnames.c
	$(CC68k) $(COPTSM) relocnames.c

elfloadseg.o: elfloadseg.c ppclibemu.h mpsema.h inline68k.h supp.h
	$(CC68k) $(COPTSM) elfloadseg.c

supp.o: supp.c ppclibemu.h mpsema.h inline68k.h errors.h
	$(CC68k) $(COPTSM) supp.c

mpsema68k.o: mpsema68k.c ppclibemu.h mpsema.h inline68k.h supp.h \
             mpsema_protos.h
	$(CC68k) $(COPTSM) mpsema68k.c

errors.o: errors.c ppclibemu.h mpsema.h inline68k.h errors.h
	$(CC68k) $(COPTSM) errors.c


# PPC assembler

firstppc.o: firstppc.s
	$(ASPPC) firstppc.s

lastppc.o: lastppc.s
	$(ASPPC) lastppc.s

kernelcall.o: kernelcall.s
	$(ASPPC) kernelcall.s

asmkernel.o: asmkernel.s warpos_lvo.i
	$(ASPPC) asmkernel.s

kernlaunch.o: kernlaunch.s warpos_lvo.i taskobject.i
	$(ASPPC) kernlaunch.s

miscppc.o: miscppc.s warpos_lvo.i
	$(ASPPC) miscppc.s

nappc.o: nappc.s
	$(ASPPC) nappc.s


# PPC C

kernel.o: kernel.c ppclibemu.h mpsema.h inlineppc.h warpos_protos.h \
          timerobject.h elflibraries.h taskobject.h elfobject.h \
          msgsystem.h mpsema_protos.h
	$(CCPPC) $(COPTSP) kernel.c

kernelinit.o: kernelinit.c ppclibemu.h mpsema.h inlineppc.h timerobject.h \
              warpos_protos.h
	$(CCPPC) $(COPTSP) kernelinit.c

taskinit.o: taskinit.c ppclibemu.h mpsema.h inlineppc.h msgsystem.h \
            taskobject.h elfobject.h mpsema_protos.h warpos_protos.h
	$(CCPPC) $(COPTSP) taskinit.c

kerntimerobj.o: kerntimerobj.c ppclibemu.h mpsema.h inlineppc.h \
                warpos_protos.h timerobject.h
	$(CCPPC) $(COPTSP) kerntimerobj.c

libraries.o: libraries.c ppclibemu.h mpsema.h elfobject.h elflibraries.h \
             inlineppc.h warpos_protos.h
	$(CCPPC) $(COPTSP) libraries.c

msgsystem.o: msgsystem.c ppclibemu.h mpsema.h msgsystem.h taskobject.h \
             elfobject.h inlineppc.h mpsema_protos.h warpos_protos.h
	$(CCPPC) $(COPTSP) msgsystem.c

kernattr.o: kernattr.c ppclibemu.h mpsema.h inlineppc.h warpos_protos.h \
            taskobject.h elfobject.h msgsystem.h mpsema_protos.h
	$(CCPPC) $(COPTSP) kernattr.c

mpsemappc.o: mpsemappc.c ppclibemu.h mpsema.h inlineppc.h mpsema_protos.h
	$(CCPPC) $(COPTSP) mpsemappc.c
