I've split the cmd and others Makefile rules out to individual utility rules,

so that we don't keep building binaries for sources that have not changed.
This commit is contained in:
Warren Toomey
2016-03-21 06:51:00 +10:00
parent 4e65e9ebd0
commit 098c8a9e28
2 changed files with 78 additions and 46 deletions
+6 -5
View File
@@ -34,14 +34,15 @@ To compile it:
`make pdp7` `make pdp7`
On 64-bit systems, you may need to set the C compiler's optimisation
level to -O1. To run pdp-unix from the pdp7-unix source tree, do:
`make run`
## Running pdp7-unix ## Running pdp7-unix
You will need [simh](http://simh.trailing-edge.com/) 4.0 to run pdp7-unix. You can get the source code [here](https://github.com/simh/simh). You will need [simh](http://simh.trailing-edge.com/) 4.0 to run pdp7-unix. You can get the source code [here](https://github.com/simh/simh).
On 64-bit systems, you may need to set the C compiler's optimisation
level to -O1.
To run pdp-unix from the pdp7-unix source tree, do:
`make run`
<pre> <pre>
cd binaries cd binaries
+72 -41
View File
@@ -17,35 +17,39 @@ TESTSRC=../src/tests
# targets # targets
BINDIR=bin BINDIR=bin
TESTDIR=tests TESTDIR=tests
IMAGEFILE=image.fs
BINARIES=../binaries/ BINARIES=../binaries/
all: cmd others a.rim image copybinaries all: cmd others a.rim image.fs copybinaries
# Manually make all before make run # The run rule has no dependencies so that the system can be booted easily
# and frequently with make run. However, you have to manually make all first!
run: run:
$(PDP7) unixv0.simh $(PDP7) unixv0.simh
# Warm boot Unix kernel: boots into init and a login prompt
a.rim: a.rim:
$(AS) -f rim -o a.rim $(SYSSRC)/sop.s $(SYSSRC)/s[1-8].s $(AS) -f rim -o a.rim $(SYSSRC)/sop.s $(SYSSRC)/s[1-8].s
$(AS) -n -f list -o a.lst $(SYSSRC)/sop.s $(SYSSRC)/s[1-8].s $(AS) -n -f list -o a.lst $(SYSSRC)/sop.s $(SYSSRC)/s[1-8].s
# Cold boot Unix kernel: attempts to build a minimal filesystem.
# Don't use this one!
coldboot: coldboot:
$(AS) -f rim -o a.rim $(SYSSRC)/sop.s $(SYSSRC)/s[1-9].s $(AS) -f rim -o a.rim $(SYSSRC)/sop.s $(SYSSRC)/s[1-9].s
$(AS) -n -f list -o a.lst $(SYSSRC)/sop.s $(SYSSRC)/s[1-9].s $(AS) -n -f list -o a.lst $(SYSSRC)/sop.s $(SYSSRC)/s[1-9].s
image: # Filesystem image
image.fs: cmd others
$(MKFS) --format simh proto $(MKFS) --format simh proto
$(FSCK) $(IMAGEFILE) $(FSCK) image.fs
copybinaries: copybinaries:
mkdir -p $(BINARIES) mkdir -p $(BINARIES)
cp $(IMAGEFILE) $(BINARIES) cp image.fs $(BINARIES)
cp a.rim $(BINARIES) cp a.rim $(BINARIES)
clean: clean:
rm -f a.rim $(IMAGEFILE) a.lst n.out rm -f a.rim image.fs a.lst n.out
rm -rf $(BINDIR) rm -rf $(BINDIR)
rm -rf $(TESTDIR) rm -rf $(TESTDIR)
rm -rf $(BINARIES) rm -rf $(BINARIES)
@@ -53,41 +57,68 @@ clean:
dirs: dirs:
mkdir -p $(BINDIR) mkdir -p $(BINDIR)
cmd: dirs # The commands that came from the original scans
# $(AS) $(ASARGS) -o $(BINDIR)/adm $(CMDSRC)/adm.s cmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \
# $(AS) $(ASARGS) -o $(BINDIR)/apr $(CMDSRC)/apr.s $(BINDIR)/chown $(BINDIR)/chrm $(BINDIR)/cp $(BINDIR)/ds $(BINDIR)/ed \
$(AS) $(ASARGS) -o $(BINDIR)/as $(CMDSRC)/as.s $(BINDIR)/init
# $(AS) $(ASARGS) -o $(BINDIR)/bc $(CMDSRC)/bc.s
# $(AS) $(ASARGS) -o $(BINDIR)/bi $(CMDSRC)/bi.s
# $(AS) $(ASARGS) -o $(BINDIR)/bl $(CMDSRC)/bl.s
# $(AS) $(ASARGS) -o $(BINDIR)/cas $(CMDSRC)/cas.s
$(AS) $(ASARGS) -o $(BINDIR)/cat $(CMDSRC)/cat.s
$(AS) $(ASARGS) -o $(BINDIR)/check $(CMDSRC)/check.s
$(AS) $(ASARGS) -o $(BINDIR)/chmod $(CMDSRC)/chmod.s
$(AS) $(ASARGS) -o $(BINDIR)/chown $(CMDSRC)/chown.s
$(AS) $(ASARGS) -o $(BINDIR)/chrm $(CMDSRC)/chrm.s
$(AS) $(ASARGS) -o $(BINDIR)/cp $(CMDSRC)/cp.s
# $(AS) $(ASARGS) -o $(BINDIR)/db $(CMDSRC)/db.s
# $(AS) $(ASARGS) -o $(BINDIR)/dmabs $(CMDSRC)/dmabs.s
$(AS) $(ASARGS) -o $(BINDIR)/ds $(CMDSRC)/ds.s
# $(AS) $(ASARGS) -o $(BINDIR)/dskio $(CMDSRC)/dskio.s
# $(AS) $(ASARGS) -o $(BINDIR)/dskres $(CMDSRC)/dskres.s
# $(AS) $(ASARGS) -o $(BINDIR)/dsksav $(CMDSRC)/dsksav.s
# $(AS) $(ASARGS) -o $(BINDIR)/dsw $(CMDSRC)/dsw.s
$(AS) $(ASARGS) -o $(BINDIR)/ed $(CMDSRC)/ed1.s $(CMDSRC)/ed2.s
$(AS) $(ASARGS) -o $(BINDIR)/init $(CMDSRC)/init.s
$(AS) $(ASARGS) -o $(BINDIR)/maksys $(CMDSRC)/maksys.s
$(AS) $(ASARGS) -o $(BINDIR)/trysys $(CMDSRC)/trysys.s
others: dirs $(BINDIR)/as: $(CMDSRC)/as.s
$(AS) $(ASARGS) -o $(BINDIR)/sh $(OTHERSRC)/pbsh.s $(AS) $(ASARGS) -o $(BINDIR)/as $(CMDSRC)/as.s
$(AS) $(ASARGS) -o $(BINDIR)/ls $(OTHERSRC)/wktls.s
$(AS) $(ASARGS) -o $(BINDIR)/wktcat $(OTHERSRC)/wktcat.s $(BINDIR)/cat: $(CMDSRC)/cat.s
$(AS) $(ASARGS) -o $(BINDIR)/wktcp $(OTHERSRC)/wktcp.s $(AS) $(ASARGS) -o $(BINDIR)/cat $(CMDSRC)/cat.s
$(AS) $(ASARGS) -o $(BINDIR)/date $(OTHERSRC)/wktdate.s
$(AS) $(ASARGS) -o $(BINDIR)/ln $(OTHERSRC)/wktln.s $(BINDIR)/check: $(CMDSRC)/check.s
$(AS) $(ASARGS) -o $(BINDIR)/mv $(OTHERSRC)/wktmv.s $(AS) $(ASARGS) -o $(BINDIR)/check $(CMDSRC)/check.s
$(AS) $(ASARGS) -o $(BINDIR)/stat $(OTHERSRC)/wktstat.s
$(BINDIR)/chmod: $(CMDSRC)/chmod.s
$(AS) $(ASARGS) -o $(BINDIR)/chmod $(CMDSRC)/chmod.s
$(BINDIR)/chown: $(CMDSRC)/chown.s
$(AS) $(ASARGS) -o $(BINDIR)/chown $(CMDSRC)/chown.s
$(BINDIR)/chrm: $(CMDSRC)/chrm.s
$(AS) $(ASARGS) -o $(BINDIR)/chrm $(CMDSRC)/chrm.s
$(BINDIR)/cp: $(CMDSRC)/cp.s
$(AS) $(ASARGS) -o $(BINDIR)/cp $(CMDSRC)/cp.s
$(BINDIR)/ds: $(CMDSRC)/ds.s
$(AS) $(ASARGS) -o $(BINDIR)/ds $(CMDSRC)/ds.s
$(BINDIR)/ed: $(CMDSRC)/ed1.s $(CMDSRC)/ed2.s
$(AS) $(ASARGS) -o $(BINDIR)/ed $(CMDSRC)/ed1.s $(CMDSRC)/ed2.s
$(BINDIR)/init: $(CMDSRC)/init.s
$(AS) $(ASARGS) -o $(BINDIR)/init $(CMDSRC)/init.s
# The commands that did not come from the scans
others: dirs $(BINDIR)/sh $(BINDIR)/wktcat $(BINDIR)/wktcp $(BINDIR)/date \
$(BINDIR)/ln $(BINDIR)/ls $(BINDIR)/mv $(BINDIR)/stat
$(BINDIR)/sh: $(OTHERSRC)/pbsh.s
$(AS) $(ASARGS) -o $(BINDIR)/sh $(OTHERSRC)/pbsh.s
$(BINDIR)/wktcat: $(OTHERSRC)/wktcat.s
$(AS) $(ASARGS) -o $(BINDIR)/wktcat $(OTHERSRC)/wktcat.s
$(BINDIR)/wktcp: $(OTHERSRC)/wktcp.s
$(AS) $(ASARGS) -o $(BINDIR)/wktcp $(OTHERSRC)/wktcp.s
$(BINDIR)/date: $(OTHERSRC)/wktdate.s
$(AS) $(ASARGS) -o $(BINDIR)/date $(OTHERSRC)/wktdate.s
$(BINDIR)/ln: $(OTHERSRC)/wktln.s
$(AS) $(ASARGS) -o $(BINDIR)/ln $(OTHERSRC)/wktln.s
$(BINDIR)/ls: $(OTHERSRC)/wktls.s
$(AS) $(ASARGS) -o $(BINDIR)/ls $(OTHERSRC)/wktls.s
$(BINDIR)/mv: $(OTHERSRC)/wktmv.s
$(AS) $(ASARGS) -o $(BINDIR)/mv $(OTHERSRC)/wktmv.s
$(BINDIR)/stat: $(OTHERSRC)/wktstat.s
$(AS) $(ASARGS) -o $(BINDIR)/stat $(OTHERSRC)/wktstat.s
tests: tests:
mkdir -p $(TESTDIR) mkdir -p $(TESTDIR)