29 Apr, 2019

1 commit

  • 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
    Signed-off-by: Theodore Ts'o

    Masahiro Yamada