2019-04-25 17:38:44 +00:00
|
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
|
2019-04-25 17:51:22 +00:00
|
|
|
obj-$(CONFIG_UNICODE) += unicode.o
|
2019-04-25 17:56:01 +00:00
|
|
|
obj-$(CONFIG_UNICODE_NORMALIZATION_SELFTEST) += utf8-selftest.o
|
2019-04-25 17:51:22 +00:00
|
|
|
|
|
|
|
unicode-y := utf8-norm.o utf8-core.o
|
2019-04-25 17:45:46 +00:00
|
|
|
|
unicode: refactor the rule for regenerating utf8data.h
scripts/mkutf8data is used only when regenerating utf8data.h,
which never happens in the normal kernel build. However, it is
irrespectively built if CONFIG_UNICODE is enabled.
Moreover, there is no good reason for it to reside in the scripts/
directory since it is only used in fs/unicode/.
Hence, move it from scripts/ to fs/unicode/.
In some cases, we bypass build artifacts in the normal build. The
conventional way to do so is to surround the code with ifdef REGENERATE_*.
For example,
- 7373f4f83c71 ("kbuild: add implicit rules for parser generation")
- 6aaf49b495b4 ("crypto: arm,arm64 - Fix random regeneration of S_shipped")
I rewrote the rule in a more kbuild'ish style.
In the normal build, utf8data.h is just shipped from the check-in file.
$ make
[ snip ]
SHIPPED fs/unicode/utf8data.h
CC fs/unicode/utf8-norm.o
CC fs/unicode/utf8-core.o
CC fs/unicode/utf8-selftest.o
AR fs/unicode/built-in.a
If you want to generate utf8data.h based on UCD, put *.txt files into
fs/unicode/, then pass REGENERATE_UTF8DATA=1 from the command line.
The mkutf8data tool will be automatically compiled to generate the
utf8data.h from the *.txt files.
$ make REGENERATE_UTF8DATA=1
[ snip ]
HOSTCC fs/unicode/mkutf8data
GEN fs/unicode/utf8data.h
CC fs/unicode/utf8-norm.o
CC fs/unicode/utf8-core.o
CC fs/unicode/utf8-selftest.o
AR fs/unicode/built-in.a
I renamed the check-in utf8data.h to utf8data.h_shipped so that this
will work for the out-of-tree build.
You can update it based on the latest UCD like this:
$ make REGENERATE_UTF8DATA=1 fs/unicode/
$ cp fs/unicode/utf8data.h fs/unicode/utf8data.h_shipped
Also, I added entries to .gitignore and dontdiff.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2019-04-28 17:45:36 +00:00
|
|
|
$(obj)/utf8-norm.o: $(obj)/utf8data.h
|
|
|
|
|
|
|
|
# In the normal build, the checked-in utf8data.h is just shipped.
|
|
|
|
#
|
|
|
|
# To generate utf8data.h from UCD, put *.txt files in this directory
|
|
|
|
# and pass REGENERATE_UTF8DATA=1 from the command line.
|
|
|
|
ifdef REGENERATE_UTF8DATA
|
|
|
|
|
|
|
|
quiet_cmd_utf8data = GEN $@
|
|
|
|
cmd_utf8data = $< \
|
|
|
|
-a $(srctree)/$(src)/DerivedAge.txt \
|
|
|
|
-c $(srctree)/$(src)/DerivedCombiningClass.txt \
|
|
|
|
-p $(srctree)/$(src)/DerivedCoreProperties.txt \
|
|
|
|
-d $(srctree)/$(src)/UnicodeData.txt \
|
|
|
|
-f $(srctree)/$(src)/CaseFolding.txt \
|
|
|
|
-n $(srctree)/$(src)/NormalizationCorrections.txt \
|
|
|
|
-t $(srctree)/$(src)/NormalizationTest.txt \
|
2019-04-25 17:38:44 +00:00
|
|
|
-o $@
|
unicode: refactor the rule for regenerating utf8data.h
scripts/mkutf8data is used only when regenerating utf8data.h,
which never happens in the normal kernel build. However, it is
irrespectively built if CONFIG_UNICODE is enabled.
Moreover, there is no good reason for it to reside in the scripts/
directory since it is only used in fs/unicode/.
Hence, move it from scripts/ to fs/unicode/.
In some cases, we bypass build artifacts in the normal build. The
conventional way to do so is to surround the code with ifdef REGENERATE_*.
For example,
- 7373f4f83c71 ("kbuild: add implicit rules for parser generation")
- 6aaf49b495b4 ("crypto: arm,arm64 - Fix random regeneration of S_shipped")
I rewrote the rule in a more kbuild'ish style.
In the normal build, utf8data.h is just shipped from the check-in file.
$ make
[ snip ]
SHIPPED fs/unicode/utf8data.h
CC fs/unicode/utf8-norm.o
CC fs/unicode/utf8-core.o
CC fs/unicode/utf8-selftest.o
AR fs/unicode/built-in.a
If you want to generate utf8data.h based on UCD, put *.txt files into
fs/unicode/, then pass REGENERATE_UTF8DATA=1 from the command line.
The mkutf8data tool will be automatically compiled to generate the
utf8data.h from the *.txt files.
$ make REGENERATE_UTF8DATA=1
[ snip ]
HOSTCC fs/unicode/mkutf8data
GEN fs/unicode/utf8data.h
CC fs/unicode/utf8-norm.o
CC fs/unicode/utf8-core.o
CC fs/unicode/utf8-selftest.o
AR fs/unicode/built-in.a
I renamed the check-in utf8data.h to utf8data.h_shipped so that this
will work for the out-of-tree build.
You can update it based on the latest UCD like this:
$ make REGENERATE_UTF8DATA=1 fs/unicode/
$ cp fs/unicode/utf8data.h fs/unicode/utf8data.h_shipped
Also, I added entries to .gitignore and dontdiff.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2019-04-28 17:45:36 +00:00
|
|
|
|
|
|
|
$(obj)/utf8data.h: $(obj)/mkutf8data $(filter %.txt, $(cmd_utf8data)) FORCE
|
|
|
|
$(call if_changed,utf8data)
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
$(obj)/utf8data.h: $(src)/utf8data.h_shipped FORCE
|
|
|
|
$(call if_changed,shipped)
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
targets += utf8data.h
|
|
|
|
hostprogs-y += mkutf8data
|