Makefile


# Makefile fuer MinMax

# Nummer der aktuellen Aufgabe (1-5), bekommt der C-Compiler als #define
# (wird bisher nur von PDVIXtest.c benoetigt)
AUFGABE     = 1

# hier muessen alle Objektdateien fuer MinMax stehen
# bitte im Laufe der Aufgaben anpassen!
MXOBJS      = mxInit.o MinMax.o mxAbbruch.o mxAusgabe.o \
              mxCPUVerwaltung.o mxInterrupt.o mxKontrolle.o mxLader.o mxListe.o \
              mxProzess.o mxSeriell.o mxSystem.o mxSystemDienst.o mxUhr.o \
              mxUnterbrechung.o mxVT.o mxVektor.o mxLED.o \
              mxUnterbrechungAsm.o mxTrap.o mxLib.o \
              mxSystemAufruf.o mxBenutzer.o mxInterpreter.o

# hier stehen die zu uebersetzenden Benutzerprogramme
# in der 5. Aufgabe -- bitte vervollstaendigen!
EXES        =

# hier stehen *alle* Benutzerprogramme (auch fertige aus dem apps-Verzeichnis),
# die in die Standard-Ramdisk sollen -- ggf. vervollstaendigen!
# ACHTUNG: wenn PDVIXtest.mxe *nicht* uebersetzt werden soll, muss der
# komplette Pfad angegeben werden, z. B. als $(APPDIR)/PDVIXtest.mxe
DISK        = $(EXES)

# hier steht der make-Suchpfad fuer Quelldateien
# am besten die Arbeitsverzeichnisse der vorangegangenen Aufgaben
# nachtragen: SRCPATH = ../aufg4 ../aufg3 ../aufg2 ../aufg1
SRCPATH     =

# ------ab hier sind "normalerweise" keine Aenderungen erforderlich --------
ROOTDIR	    = /home/pdv/info4
MINMAXDIR   = $(ROOTDIR)/minmax99
TOOLDIR     = $(ROOTDIR)/mx

MXINIT      = mxInit.o

USEROBJS    = mxSystemAufruf.o mxLib.o mxTrap.o
USERINIT    = mxUserInit.o

MXSRCDIR    = $(MINMAXDIR)/src
APPDIR      = $(MINMAXDIR)/apps

CC          = $(TOOLDIR)/bin/mx-gcc
LD          = $(TOOLDIR)/bin/mx-ld
STRIP       = $(TOOLDIR)/bin/mx-strip
NM          = $(TOOLDIR)/bin/mx-nm
DISASM      = $(TOOLDIR)/bin/mx-objdump --disassemble
BOOT	    = $(TOOLDIR)/bin/mxBoot
DISKER	    = $(TOOLDIR)/bin/mxMkFs
LINKER      = $(TOOLDIR)/bin/mxLink

SCRIPT      = $(TOOLDIR)/lib/std.ld
SCRIPT0     = $(TOOLDIR)/lib/mxe.0.ld
SCRIPT1     = $(TOOLDIR)/lib/mxe.1.ld

CFLAGS      = -m68000 -Wall -O -ffreestanding -fomit-frame-pointer -DAUFGABE=$(AUFGABE)
CPPFLAGS    = -I. $(SRCPATH:%=-I%) -I$(MXSRCDIR) -I-
LDFLAGS     = -n -L$(TOOLDIR)/lib -L$(TOOLDIR)/lib/gcc/m68k-aout/4.1.1/m68000
ASFLAGS     = -m68000 -c

BINAME	    = MinMax
BISYMS	    = $(BINAME).syms
SYMBOL      = $(BINAME).map

DISKFILE    = Standard.disk

DEPEND      = $(MXOBJS:%.o=%.d) $(MXINIT:%.o=%.d) \
              $(USEROBJS:%.o=%.d) $(USERINIT:%.o=%.d) \
              $(EXES:%.mxe=%.d)

vpath %.c   $(SRCPATH) $(MXSRCDIR)
vpath %.S   $(SRCPATH) $(MXSRCDIR)
vpath %.mxe $(SRCPATH) $(APPDIR)

.PHONY: clean distclean all Image dump boot diskboot programs disk dep dep2 help


all:	$(BINAME) $(DISK)

help:
	@echo "** MinMax99-Makefile -- Kurzanleitung **"
	@echo "1) make-Ziele mit Sonderfunktionen:"
	@echo "     clean*       alle Objekt-Files und Muell loeschen"
	@echo "     distclean    alle erzeugbaren Dateien loeschen"
	@echo "     boot*        alles uebersetzen und booten"
	@echo "     dump         MinMax.syms erzeugen und disassemblieren"
	@echo "     dep*         Datei-Abhaengigkeiten neu ermitteln"
	@echo "     help         diese Hilfe anzeigen"
	@echo "2) Uebersetzung bestimmter Dateigruppen:"
	@echo "     all          alles, MinMax und evtl. eingetragene EXES"
	@echo "     Image        MinMax-Kern"
	@echo "     programs     alle unter EXES eingetragenen Programme"
	@echo "     disk         eine ladbare RAM-Disk aus den EXES"
	@echo "(Die Ziele mit * reichen fuers Praktikum prinzipiell aus.)"


Image:	$(BINAME)


dump:	$(BISYMS)
	$(DISASM) $(BISYMS)

boot:	$(BINAME) $(DISK)
	$(BOOT) $^

diskboot: boot

clean:
	rm -f *.o *.d *.syms *.map *.mx0 *.mx1 *~

distclean: clean
	rm -f $(EXES) $(BINAME) $(DISKFILE) syslog.out

programs: $(DISK)

disk: $(DISKFILE)


$(DISKFILE): $(DISK)
	$(DISKER) $^ > $@

$(BINAME) $(BISYMS) $(SYMBOL): $(MXINIT) $(MXOBJS)
	$(LD) $(LDFLAGS) -T$(SCRIPT) -Map $(SYMBOL) -o $@ $^ -lgcc
	chmod 644 $@
	cp -f $@ $(BISYMS)
	$(STRIP) $@

# Zeug fuer die automatischen Abhaengigkeiten

dep:
	rm -f *.d
	$(MAKE) dep2

dep2: $(DEPEND)

%.d: %.c
	$(CC) -MM $(CPPFLAGS) $^ > $@

%.d: %.S
	$(CC) -MM $(CPPFLAGS) $^ > $@

include $(DEPEND)

# Pattern Rules fuer Benutzer-Programme (5. Aufgabe)

%.mxe: %.mx0 %.mx1
	$(LINKER) $*

%.mx0 %.map: $(USERINIT) %.o $(USEROBJS)
	$(LD) $(LDFLAGS) -T$(SCRIPT0) -Map $*.map -o $@ $^ -lgcc

%.mx1: $(USERINIT) %.o $(USEROBJS)
	$(LD) $(LDFLAGS) -T$(SCRIPT1) -o $@ $^ -lgcc


Bei Problemen mit der Seite bitte eine Mail an Marek
Converted with C2HTML V0.669 by Iluvatar
Proze▀datenverarbeitung