-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakefile
84 lines (66 loc) · 1.98 KB
/
makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
### -*- mode:makefile ; buffer-read-only:t -*-
### Makefile.
###
### Copyright (C) 2015 Alin C Soare
###
### This file is part of the Little Computer.
###
### This program is free software: you can redistribute it and/or modify
### it under the terms of the GNU General Public License as published by
### the Free Software Foundation, either version 3 of the License, or
### (at your option) any later version.
###
### This program 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 General Public License for more details.
###
### You should have received a copy of the GNU General Public License
### along with this program. If not, see <http://www.gnu.org/licenses/>.
VERSION=0.2
RACKET=racket
ASMDIR=./asm/
BINDIR=./bin/
HWDIR=./hw/
tmp:=$(shell mktemp)
ASMOBJS=$(wildcard ${ASMDIR}/*.asm)
HACKOBJS = $(patsubst ${ASMDIR}/%.asm, %.hack, ${ASMOBJS})
ifneq ($(wildcard $(BINDIR)),${BINDIR})
$(info creating the directory ${BINDIR})
$(shell mkdir -p ${BINDIR})
endif
ifneq ($(wildcard $(HWDIR)),${HWDIR})
$(info creating the directory ${HWDIR})
$(shell mkdir -p ${HWDIR})
endif
all:
@echo hwc hack sim
hwc:
@${RACKET} hwc.rkt
sim:
ifndef HACK
@echo To execute the hack program PROG do so:
@echo "\tmake sim HACK=PROG"
@echo PROG can be one of
@echo ${patsubst %.hack, %, ${HACKOBJS}} \
| sed 's. .\n.g' \
| xargs -I@ sed '/DESCRIPTION:\(.*\)/ !d; s_[^:]*\(.*\)_\t'@'\1_; 3q' ./asm/@.asm \
| column -s: -t
else
${RACKET} sim.rkt ${BINDIR}/${HACK}.hack
endif
clean:
@echo removing ./bin ./hw
@rm -rf ./bin ./hw
gnu: clean
tar c *.rkt makefile README asm/*.asm hdl-hack/*.HDL > $(tmp)
bzip2 --best $(tmp)
mv --backup=numbered $(tmp).bz2 little-computer.$(VERSION).tar.bz2
%.hack:
@echo Compile $*
@>/dev/null ${RACKET} assembler.rkt ${ASMDIR}/$*.asm ${BINDIR}/
hack: ${HACKOBJS}
rebuild: clean
@make --silent hwc
@make --silent hack
@make --silent sim