aboutsummaryrefslogtreecommitdiff
path: root/src/base/utf/rules.mk
blob: 554ba6a62d7e161398ca6bd6ea31d3dcd9db3178 (plain)
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
UNICODE=14.0.0

SRCS_$(d)+=\
	$(d)/utf/encode.c\
	$(d)/utf/decode.c\
	$(d)/utf/decodeprev.c\
	$(d)/utf/find.c\
	$(d)/utf/findlast.c\
	$(d)/utf/canfit.c\
	$(d)/utf/runelen.c\
	$(d)/utf/len.c\
	$(d)/utf/runetype-$(UNICODE).c\
	$(d)/utf/runewidth-$(UNICODE).c

# ========================================================================
# table generation

# NOTE: this is pretty hacky...
NEED_OBJS=\
	$(OBJ_DIR)/base/arg.o\
	$(OBJ_DIR)/base/utf/decode.o\
	$(OBJ_DIR)/base/error/panicf.o\
	$(OBJ_DIR)/base/io/readline.o\
	$(OBJ_DIR)/base/io/readuntil.o\
	$(OBJ_DIR)/base/io/open.o\
	$(OBJ_DIR)/base/io/openfd.o\
	$(OBJ_DIR)/base/io/flush.o\
	$(OBJ_DIR)/base/io/init.o\
	$(OBJ_DIR)/base/mem/move.o\
	$(OBJ_DIR)/base/mem/findc.o\
	$(d)/utf/vendor/common.o

$(d)/utf/vendor/common.o: $(d)/utf/vendor/common.c
	$(COMPILE)

# rune categories
$(d)/utf/vendor/UnicodeData-$(UNICODE).txt:
	@echo "GET	UnicodeData.txt";\
	curl https://www.unicode.org/Public/$(UNICODE)/ucd/UnicodeData.txt > $@

$(d)/utf/vendor/mkrunetype: $(d)/utf/vendor/mkrunetype.c $(NEED_OBJS) | $(RUNTIME) $(SYS)
	$(COMPLINK)

GENS += $(d)/utf/vendor/mkrunetype

$(d)/utf/runetype-$(UNICODE).c: $(d)/utf/vendor/UnicodeData-$(UNICODE).txt $(d)/utf/vendor/mkrunetype
	@$(dir $@)vendor/mkrunetype $< > $@

# rune widths
$(d)/utf/vendor/EastAsianWidth-$(UNICODE).txt:
	@echo "GET	EastAsianWidth.txt";\
	curl https://www.unicode.org/Public/$(UNICODE)/ucd/EastAsianWidth.txt > $@

$(d)/utf/vendor/EmojiData-$(UNICODE).txt:
	@echo "GET	EmojiData.txt";\
	curl https://www.unicode.org/Public/$(UNICODE)/ucd/emoji/emoji-data.txt > $@

$(d)/utf/vendor/mkrunewidth: $(d)/utf/vendor/mkrunewidth.c $(NEED_OBJS) | $(RUNTIME) $(SYS)
	$(COMPLINK)

GENS += $(d)/utf/vendor/mkrunewidth

$(d)/utf/runewidth-$(UNICODE).c: $(d)/utf/vendor/mkrunewidth $(d)/utf/vendor/UnicodeData-$(UNICODE).txt $(d)/utf/vendor/EastAsianWidth-$(UNICODE).txt $(d)/utf/vendor/EmojiData-$(UNICODE).txt
	@$(dir $@)vendor/mkrunewidth $(filter-out $<, $^) > $@

# grapheme boundaries
$(d)/utf/vendor/GraphemeBreakProperty-$(UNICODE).txt:
	@echo "GET	GraphemeBreakProperty.txt";\
	curl https://www.unicode.org/Public/$(UNICODE)/ucd/auxiliary/GraphemeBreakProperty.txt > $@

$(d)/utf/vendor/mkgraphemedata: $(d)/utf/vendor/mkgraphemedata.c $(NEED_OBJS) | $(RUNTIME) $(SYS)
	$(COMPLINK)

$(d)/utf/graphemedata-$(UNICODE).c: $(d)/utf/vendor/mkgraphemedata $(d)/utf/vendor/GraphemeBreakProperty-$(UNICODE).txt
	$^ > $@

GENS += $(d)/utf/vendor/mkgraphemedata