Skip to content

Commit

Permalink
DocBook: Use a fixed encoding for output
Browse files Browse the repository at this point in the history
Currently the encoding of documents generated by DocBook depends on
the current locale.  Make the output reproducible independently of
the locale, by setting the encoding to UTF-8 (LC_CTYPE=C.UTF-8) by
preference, or ASCII (LC_CTYPE=C) as a fallback.

LC_CTYPE can normally be overridden by LC_ALL, but the top-level
Makefile unsets that.

Signed-off-by: Ben Hutchings <[email protected]>
[jc: added check-lc_ctype to .gitignore]
Signed-off-by: Jonathan Corbet <[email protected]>
  • Loading branch information
bwhacks authored and Jonathan Corbet committed Sep 28, 2015
1 parent c51edfb commit b479bfd
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 3 deletions.
6 changes: 6 additions & 0 deletions Documentation/DocBook/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,12 @@ installmandocs: mandocs
KERNELDOCXMLREF = $(srctree)/scripts/kernel-doc-xml-ref
KERNELDOC = $(srctree)/scripts/kernel-doc
DOCPROC = $(objtree)/scripts/docproc
CHECK_LC_CTYPE = $(objtree)/scripts/check-lc_ctype

# Use a fixed encoding - UTF-8 if the C library has support built-in
# or ASCII if not
LC_CTYPE := $(call try-run, LC_CTYPE=C.UTF-8 $(CHECK_LC_CTYPE),C.UTF-8,C)
export LC_CTYPE

XMLTOFLAGS = -m $(srctree)/$(src)/stylesheet.xsl
XMLTOFLAGS += --skip-validation
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -1336,7 +1336,7 @@ $(help-board-dirs): help-%:
# Documentation targets
# ---------------------------------------------------------------------------
%docs: scripts_basic FORCE
$(Q)$(MAKE) $(build)=scripts build_docproc
$(Q)$(MAKE) $(build)=scripts build_docproc build_check-lc_ctype
$(Q)$(MAKE) $(build)=Documentation/DocBook $@

else # KBUILD_EXTMOD
Expand Down
1 change: 1 addition & 0 deletions scripts/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ unifdef
ihex2fw
recordmcount
docproc
check-lc_ctype
sortextable
asn1_compiler
extract-cert
Expand Down
7 changes: 5 additions & 2 deletions scripts/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
# conmakehash: Create chartable
# conmakehash: Create arrays for initializing the kernel console tables
# docproc: Used in Documentation/DocBook
# check-lc_ctype: Used in Documentation/DocBook

HOST_EXTRACFLAGS += -I$(srctree)/tools/include

Expand All @@ -27,14 +28,16 @@ HOSTLOADLIBES_extract-cert = -lcrypto
always := $(hostprogs-y) $(hostprogs-m)

# The following hostprogs-y programs are only build on demand
hostprogs-y += unifdef docproc
hostprogs-y += unifdef docproc check-lc_ctype

# These targets are used internally to avoid "is up to date" messages
PHONY += build_unifdef build_docproc
PHONY += build_unifdef build_docproc build_check-lc_ctype
build_unifdef: $(obj)/unifdef
@:
build_docproc: $(obj)/docproc
@:
build_check-lc_ctype: $(obj)/check-lc_ctype
@:

subdir-$(CONFIG_MODVERSIONS) += genksyms
subdir-y += mod
Expand Down
11 changes: 11 additions & 0 deletions scripts/check-lc_ctype.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/*
* Check that a specified locale works as LC_CTYPE. Used by the
* DocBook build system to probe for C.UTF-8 support.
*/

#include <locale.h>

int main(void)
{
return !setlocale(LC_CTYPE, "");
}

0 comments on commit b479bfd

Please sign in to comment.