diff options
Diffstat (limited to 'src/base/utf/rules.mk')
-rw-r--r-- | src/base/utf/rules.mk | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/base/utf/rules.mk b/src/base/utf/rules.mk new file mode 100644 index 0000000..446c113 --- /dev/null +++ b/src/base/utf/rules.mk @@ -0,0 +1,71 @@ +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/readln.o\ + $(OBJ_DIR)/base/io/open.o\ + $(OBJ_DIR)/base/io/close.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 $(d)/utf/vendor/common.o $(NEED_OBJS) + $(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 $(d)/utf/vendor/common.o $(NEED_OBJS) + $(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 $(d)/utf/vendor/common.o $(NEED_OBJS) + $(COMPLINK) + +$(d)/utf/graphemedata-$(UNICODE).c: $(d)/utf/vendor/mkgraphemedata $(d)/utf/vendor/GraphemeBreakProperty-$(UNICODE).txt + $^ > $@ + +GENS += $(d)/utf/vendor/mkgraphemedata |