File: Makefile

package info (click to toggle)
hare 0.26.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 7,352 kB
  • sloc: asm: 1,374; makefile: 123; sh: 117; lisp: 101
file content (130 lines) | stat: -rw-r--r-- 3,855 bytes parent folder | download
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
.POSIX:

all:

include config.mk
include makefiles/$(PLATFORM).$(ARCH).mk

all: $(BINOUT)/hare-configured $(BINOUT)/haredoc docs

HARE_DEFINES = \
	-D PLATFORM:str='"$(PLATFORM)"' \
	-D ARCH:str='"$(ARCH)"' \
	-D VERSION:str="\"$(VERSION)\"" \
	-D HAREPATH:str='"$(HAREPATH)"' \
	-D TOOLDIR:str='"$(TOOLDIR)"' \
	-D AARCH64_AS:str='"$(AARCH64_AS)"' \
	-D AARCH64_CC:str='"$(AARCH64_CC)"' \
	-D AARCH64_LD:str='"$(AARCH64_LD)"' \
	-D RISCV64_AS:str='"$(RISCV64_AS)"' \
	-D RISCV64_CC:str='"$(RISCV64_CC)"' \
	-D RISCV64_LD:str='"$(RISCV64_LD)"' \
	-D X86_64_AS:str='"$(X86_64_AS)"' \
	-D X86_64_CC:str='"$(X86_64_CC)"' \
	-D X86_64_LD:str='"$(X86_64_LD)"'

.SUFFIXES:
.SUFFIXES: .ha .ssa .td .s .o .scd
.ssa.td:
	@cmp -s '$@' '$@.tmp' 2>/dev/null || cp '$@.tmp' '$@'

.ssa.s:
	@printf 'QBE\t%s\n' '$@'
	@$(QBE) $(QBEFLAGS) -o '$@' '$<'

.s.o:
	@printf 'AS\t%s\n' '$@'
	@$(AS) $(ASFLAGS) -o '$@' '$<'

.scd:
	@printf 'SCDOC\t%s\n' '$@'
	@$(SCDOC) < '$<' > '$@'

# bootstrapped hare(1), without HARE_DEFINES configuration
$(BINOUT)/hare: $(OBJS)
	@mkdir -p -- "$(BINOUT)"
	@printf 'LD\t%s\n' "$@"
	@$(LD) $(LDLINKFLAGS) -T $(RTSCRIPT) -o $@ $(OBJS)

HARE_BUILD_ENV = HAREPATH=. HAREC="$(HAREC)" QBE="$(QBE)" AS="$(AS)" \
	LD="$(LD)" HARECFLAGS="$(HARECFLAGS)" QBEFLAGS="$(QBEFLAGS)" \
	ASFLAGS="$(ASFLAGS)" LDLINKFLAGS="$(LDLINKFLAGS)" LDFLAGS="$(LDFLAGS)"

# hare(1) configured with HARE_DEFINES configuration
$(BINOUT)/hare-configured: $(BINOUT)/hare
	@mkdir -p $(BINOUT)
	@printf 'HARE\t%s\n' "$@"
	@env $(HARE_BUILD_ENV) \
		$(BINOUT)/hare build $(HARE_DEFINES) $(HAREFLAGS) -o $@ ./cmd/hare

$(BINOUT)/haredoc: $(BINOUT)/hare
	@mkdir -p $(BINOUT)
	@printf 'HARE\t%s\n' "$@"
	@env $(HARE_BUILD_ENV) $(BINOUT)/hare build \
		$(HARE_DEFINES) $(HAREFLAGS) -o $@ ./cmd/haredoc

docs/html: $(BINOUT)/haredoc
	mkdir -p docs/html
	$(BINOUT)/haredoc -Fhtml > docs/html/index.html
	for d in $$(scripts/moddirs); do \
		find $$d -type d | sed -E '/(\+|-)/d'; \
	done \
	| while read path; do \
		mod=$$(echo $$path | sed -E 's@/@::@g'); \
		echo $$mod; \
		mkdir -p docs/html/$$path; \
		$(BINOUT)/haredoc -Fhtml $$mod > docs/html/$$path/index.html; \
	done

docs: \
	docs/hare.1 \
	docs/hare-build.1 \
	docs/hare-cache.1 \
	docs/hare-deps.1 \
	docs/hare-tool.1 \
	docs/haredoc.1 \
	docs/hare-run.1 \
	docs/hare-test.1 \
	docs/haredoc.5 \
	docs/hare-module.5

MAN1 = hare hare-build hare-cache hare-deps haredoc hare-run hare-test hare-tool
MAN5 = haredoc hare-module

bootstrap:
	@BINOUT=$(BINOUT) ./scripts/genbootstrap

clean:
	rm -rf -- '$(HARECACHE)' '$(BINOUT)' docs/*.1 docs/*.5 docs/html

check: $(BINOUT)/hare
	@env HAREPATH=. HAREC='$(HAREC)' QBE='$(QBE)' AS='$(AS)' LD='$(LD)' \
		HAREFLAGS='$(HAREFLAGS)' HARECFLAGS='$(HARECFLAGS)' \
		QBEFLAGS='$(QBEFLAGS)' ASFLAGS='$(ASFLAGS)' \
		LDLINKFLAGS='$(LDLINKFLAGS)' '$(BINOUT)/hare' test

install: install-cmd install-mods

install-cmd: all $(BINOUT)/hare-configured
	mkdir -p -- \
		'$(DESTDIR)$(BINDIR)' '$(DESTDIR)$(MANDIR)/man1' \
		'$(DESTDIR)$(BINDIR)' '$(DESTDIR)$(MANDIR)/man5'
	install -m755 '$(BINOUT)/hare-configured' '$(DESTDIR)$(BINDIR)/hare'
	install -m755 '$(BINOUT)/haredoc' '$(DESTDIR)$(BINDIR)/haredoc'
	for i in $(MAN1); do install -m644 docs/$$i.1 '$(DESTDIR)$(MANDIR)'/man1/$$i.1; done
	for i in $(MAN5); do install -m644 docs/$$i.5 '$(DESTDIR)$(MANDIR)'/man5/$$i.5; done

install-mods:
	rm -rf -- '$(DESTDIR)$(STDLIB)'
	mkdir -p -- '$(DESTDIR)$(STDLIB)'
	cp -R -- $$(scripts/moddirs) README '$(DESTDIR)$(STDLIB)'

uninstall:
	rm -- '$(DESTDIR)$(BINDIR)/hare'
	rm -- '$(DESTDIR)$(BINDIR)/haredoc'
	for i in $(MAN1); do rm -- '$(DESTDIR)$(MANDIR)'/man1/$$i.1; done
	for i in $(MAN5); do rm -- '$(DESTDIR)$(MANDIR)'/man5/$$i.5; done
	rm -r -- '$(DESTDIR)$(STDLIB)'

.PHONY: all $(BINOUT)/hare-configured $(BINOUT)/haredoc bootstrap clean check \
	docs docs/html install start uninstall