Discussion:
[PATCH] gnulib-tool: new option --gnu-make
(too old to reply)
Paul Eggert
2017-03-13 02:19:43 UTC
Permalink
Raw Message
This is for applications like GNU Emacs that use GNU Make
features instead of Automake.
* doc/gnulib-tool.texi (Initial import): Mention --gnu-make.
* doc/gnulib.texi (Unit test modules, Build robot for gnulib):
Do not assume Automake.
* gnulib-tool (func_determine_path_separator)
(func_modules_transitive_closure, func_update_file)
(func_emit_lib_Makefile_am, func_emit_tests_Makefile_am)
(func_import): Add support for --gnu-make.
---
ChangeLog | 13 +++++++++
doc/gnulib-tool.texi | 24 ++++++++-------
doc/gnulib.texi | 12 ++++----
gnulib-tool | 82 +++++++++++++++++++++++++++++++++++++++++++++-------
4 files changed, 103 insertions(+), 28 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d4b2bf6..3e79fcc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2017-03-12 Paul Eggert <***@cs.ucla.edu>
+
+ gnulib-tool: new option --gnu-make
+ This is for applications like GNU Emacs that use GNU Make
+ features instead of Automake.
+ * doc/gnulib-tool.texi (Initial import): Mention --gnu-make.
+ * doc/gnulib.texi (Unit test modules, Build robot for gnulib):
+ Do not assume Automake.
+ * gnulib-tool (func_determine_path_separator)
+ (func_modules_transitive_closure, func_update_file)
+ (func_emit_lib_Makefile_am, func_emit_tests_Makefile_am)
+ (func_import): Add support for --gnu-make.
+
2017-03-11 Paul Eggert <***@cs.ucla.edu>

gnulib-common.m4: avoid aclocal.m4 bloat
diff --git a/doc/gnulib-tool.texi b/doc/gnulib-tool.texi
index 8ed06a2..2578fc8 100644
--- a/doc/gnulib-tool.texi
+++ b/doc/gnulib-tool.texi
@@ -84,11 +84,13 @@ module that contains this source file, you can use the command
@cindex initial import

Gnulib assumes that your project uses Autoconf. When using Gnulib, you
-will need to have Autoconf and Automake among your build tools. Note that
-while the use of Automake in your project's top level directory is an
-easy way to fulfil the Makefile conventions of the GNU coding standards,
-Gnulib does not require it. But when you use Gnulib, Automake will be
-used at least in a subdirectory of your project.
+will need to have Autoconf among your build tools.
+
+Unless you use @command{gnulib-tool}'s @option{--gnu-make} option,
+Gnulib also assumes that your project uses Automake at least in a
+subdirectory of your project. While the use of Automake in your
+project's top level directory is an easy way to fulfil the Makefile
+conventions of the GNU coding standards, Gnulib does not require it.

Invoking @samp{gnulib-tool --import} will copy source files, create a
@file{Makefile.am} to build them, generate a file @file{gnulib-comp.m4} with
@@ -244,7 +246,7 @@ gl_INIT

@code{gl_INIT} will in turn call the macros related with the
gnulib functions, be it specific gnulib macros, like @code{gl_FUNC_ALLOCA}
-or autoconf or automake macros like @code{AC_FUNC_ALLOCA} or
+or Autoconf or Automake macros like @code{AC_FUNC_ALLOCA} or
@code{AM_FUNC_GETLINE}. So there is no need to call those macros yourself
when you use the corresponding gnulib modules.

@@ -564,7 +566,7 @@ invocation.
@cindex autopoint, caveat
The programs @code{gettextize} and @code{autopoint}, part of
GNU @code{gettext}, import or update the internationalization infrastructure.
-Some of this infrastructure, namely ca.@: 20 autoconf macro files and the
+Some of this infrastructure, namely ca.@: 20 Autoconf macro files and the
@file{config.rpath} file, is also contained in Gnulib and may be imported
by @code{gnulib-tool}. The use of @code{gettextize} or @code{autopoint}
will therefore overwrite some of the files that @code{gnulib-tool} has
@@ -602,8 +604,8 @@ is done for you if you use gnulib's @file{bootstrap} script).
If you get an error message like
@code{*** error: gettext infrastructure mismatch:
using a Makefile.in.in from gettext version ...
-but the autoconf macros are from gettext version ...},
-it means that a new GNU gettext release was made, and its autoconf macros
+but the Autoconf macros are from gettext version ...},
+it means that a new GNU gettext release was made, and its Autoconf macros
were integrated into Gnulib and now mismatch the @file{po/} infrastructure.
In this case, fetch and install the new GNU gettext release and run
@code{gettextize} followed by @code{gnulib-tool}.
@@ -870,9 +872,9 @@ in this case.

@cindex conditional dependencies
In some cases, a module is needed by another module only on specific
-platforms. But when a module is present, its autoconf checks are always
+platforms. But when a module is present, its Autoconf checks are always
executed, and its @code{Makefile.am} additions are always enabled. So
-it can happen that some autoconf checks are executed and some source files
+it can happen that some Autoconf checks are executed and some source files
are compiled, although no other module needs them on this particular
platform, just @emph{in case} some other module would need them.

diff --git a/doc/gnulib.texi b/doc/gnulib.texi
index ddbac2f..b2defc0 100644
--- a/doc/gnulib.texi
+++ b/doc/gnulib.texi
@@ -589,10 +589,10 @@ check_PROGRAMS += test-foo

Here, the @code{TESTS_ENVIRONMENT} variable can be used to pass values
determined by @code{configure} or by the @code{Makefile} to the shell
-script, as environment variables. The values of @code{EXEEXT} and of
-@code{srcdir}, from Autoconf and Automake, are already provided as
-environment variables, through an initial value of @code{TESTS_ENVIRONMENT}
-that @code{gnulib-tool} puts in place.
+script, as environment variables. The Autoconf values @code{EXEEXT}
+and @code{srcdir} are already provided as environment variables,
+through an initial value of @code{TESTS_ENVIRONMENT} that
+@code{gnulib-tool} puts in place.

Regardless of the specific form of the unit test, the following guidelines
should be respected:
@@ -1073,8 +1073,8 @@ your favorite platform, you may perform these steps:

@item Create gnulib directory

-On a machine with recent automake, autoconf, m4 installed and with a
-gnulib git checkout (typically a Linux machine), use
+On a machine with GNU development tools installed and with a gnulib
+git checkout, use

@example
gnulib-tool --create-megatestdir --with-tests --dir=...
diff --git a/gnulib-tool b/gnulib-tool
index 8b3f61f..18b801e 100755
--- a/gnulib-tool
+++ b/gnulib-tool
@@ -264,14 +264,16 @@ Options for --import, --add/remove-import:
placed (default \"tests\").
--aux-dir=DIRECTORY Directory relative to --dir where auxiliary build
tools are placed (default comes from configure.ac).
+ --gnu-make Output for GNU Make instead of for the default
+ Automake
--lgpl[=2|=3orGPLv2|=3]
Abort if modules aren't available under the LGPL.
Also modify license template from GPL to LGPL.
The version number of the LGPL can be specified;
the default is currently LGPLv3.
- --makefile-name=NAME Name of makefile in automake syntax in the
- source-base and tests-base directories
- (default \"Makefile.am\").
+ --makefile-name=NAME Name of makefile in the source-base and tests-base
+ directories (default \"Makefile.am\", or
+ \"Makefile.in\" if --gnu-make).
--macro-prefix=PREFIX Specify the prefix of the macros 'gl_EARLY' and
'gl_INIT'. Default is 'gl'.
--po-domain=NAME Specify the prefix of the i18n domain. Usually use
@@ -1039,6 +1041,7 @@ func_determine_path_separator
# - cond_dependencies true if --conditional-dependencies was given, false if
# --no-conditional-dependencies was given, blank otherwise
# - lgpl yes or a number if --lgpl was given, blank otherwise
+# - gnu_make true if --gnu-make was given, false otherwise
# - makefile_name from --makefile-name
# - libtool true if --libtool was given, false if --no-libtool was
# given, blank otherwise
@@ -1082,6 +1085,7 @@ func_determine_path_separator
avoidlist=
cond_dependencies=
lgpl=
+ gnu_make=false
makefile_name=
libtool=
macro_prefix=
@@ -1305,6 +1309,9 @@ func_determine_path_separator
esac
lgpl=$arg
shift ;;
+ --gnu-make )
+ gnu_make=true
+ shift ;;
--makefile-name )
shift
if test $# = 0; then
@@ -2780,6 +2787,7 @@ sed_dependencies_without_conditions='s/ *\[.*//'
# func_modules_transitive_closure
# Input:
# - local_gnulib_path from --local-dir
+# - gnu_make true if --gnu-make was given, false otherwise
# - modcache true or false, from --cache-modules/--no-cache-modules
# - modules list of specified modules
# - inctests true if tests should be included, false otherwise
@@ -2846,7 +2854,9 @@ func_modules_transitive_closure ()
if func_acceptable $module; then
func_append outmodules " $module"
if test "$cond_dependencies" = true; then
- if func_get_automake_snippet_conditional $module | grep '^if ' > /dev/null; then
+ if ! $gnu_make \
+ && func_get_automake_snippet_conditional $module \
+ | grep '^if ' > /dev/null; then
# A module whose Makefile.am snippet contains a reference to an
# automake conditional. If we were to use it conditionally, we
# would get an error
@@ -3390,6 +3400,7 @@ func_update_file ()
# - libname library name
# - pobase directory relative to destdir where to place *.po files
# - auxdir directory relative to destdir where to place build aux files
+# - gnu_make true if --gnu-make was given, false otherwise
# - makefile_name from --makefile-name
# - libtool true if libtool will be used, false or blank otherwise
# - macro_prefix prefix of gl_LIBOBJS macros to use
@@ -3407,9 +3418,10 @@ func_update_file ()
# - uses_subdirs nonempty if object files in subdirs exist
func_emit_lib_Makefile_am ()
{
- # When creating an includable Makefile.am snippet, augment variables with
- # += instead of assigning them.
- if test -n "$makefile_name"; then
+
+ # When using GNU make, or when creating an includable Makefile.am snippet,
+ # augment variables with += instead of assigning them.
+ if $gnu_make || test -n "$makefile_name"; then
assign='+='
else
assign='='
@@ -3474,20 +3486,33 @@ func_emit_lib_Makefile_am ()
# Skip the contents if it's entirely empty.
if grep '[^ ]' "$tmp"/amsnippet1 "$tmp"/amsnippet2 > /dev/null ; then
echo "## begin gnulib module $module"
+ if $gnu_make; then
+ echo "ifeq (,\$(OMIT_GNULIB_MODULE_$module))"
+ convert_to_gnu_make='s/^if \(.*\)/ifneq (,$(\1))/'
+ else
+ convert_to_gnu_make=
+ fi
echo
if test "$cond_dependencies" = true; then
if func_cond_module_p "$module"; then
func_module_conditional_name "$module"
- echo "if $conditional"
+ if $gnu_make; then
+ echo "ifneq (,\$($conditional))"
+ else
+ echo "if $conditional"
+ fi
fi
fi
- cat "$tmp"/amsnippet1
+ sed "$convert_to_gnu_make" "$tmp"/amsnippet1
if test "$cond_dependencies" = true; then
if func_cond_module_p "$module"; then
echo "endif"
fi
fi
- cat "$tmp"/amsnippet2
+ sed "$convert_to_gnu_make" "$tmp"/amsnippet2
+ if $gnu_make; then
+ echo "endif"
+ fi
echo "## end gnulib module $module"
echo
fi
@@ -3539,6 +3564,15 @@ func_emit_lib_Makefile_am ()
echo "DISTCLEANFILES ="
echo "MAINTAINERCLEANFILES ="
fi
+ if $gnu_make; then
+ echo "# Start of GNU Make output."
+ echo 'gl_EARLY;gl_INIT' \
+ | ${AUTOCONF} -t 'AC_SUBST:$1 = @$1@' "$configure_ac" \
+ | LC_ALL=C sort -u
+ echo "# End of GNU Make output."
+ else
+ echo "# No GNU Make output."
+ fi
# Execute edits that apply to the Makefile.am being generated.
edit=0
while test $edit != $makefile_am_edits; do
@@ -3616,6 +3650,25 @@ func_emit_lib_Makefile_am ()
fi
cat "$tmp"/allsnippets \
| sed -e 's|\$(top_srcdir)/build-aux/|$(top_srcdir)/'"$auxdir"'/|g'
+ # Determine variables the automake snippet mentions.
+ if false && $gnu_make; then
+ sed_get_makefile_vars='
+ :again
+ /@/!d
+ s/^[^@]*@//
+ h
+ /^[a-zA-Z_][a-zA-Z_0-9]*@/{
+ s/@.*//p
+ g
+ s/^[^@]*@//
+ h
+ }
+ g
+ b again
+ '
+ substs=`func_get_automake_snippet "$module" \
+ | LC_ALL=C sed -e "$sed_get_makefile_vars"`
+ fi
echo
echo "mostlyclean-local: mostlyclean-generic"
echo " @for dir in '' \$(MOSTLYCLEANDIRS); do \\"
@@ -3713,6 +3766,7 @@ func_emit_po_POTFILES_in ()
# - modules list of modules, including dependencies
# - libname library name
# - auxdir directory relative to destdir where to place build aux files
+# - gnu_make true if --gnu-make was given, false otherwise
# - makefile_name from --makefile-name
# - libtool true if libtool will be used, false or blank otherwise
# - sourcebase relative directory containing lib source code
@@ -3794,8 +3848,14 @@ func_emit_tests_Makefile_am ()
fi
done
{ echo "## begin gnulib module $module"
+ if $gnu_make; then
+ echo "ifeq (,\$(OMIT_GNULIB_MODULE_$module))"
+ fi
echo
cat "$tmp"/amsnippet
+ if $gnu_make; then
+ echo "endif"
+ fi
echo "## end gnulib module $module"
echo
} >&$ofd
@@ -5471,7 +5531,7 @@ s,//*$,/,'

func_emit_pre_early_macros : ' ' "$final_modules"

- if test -n "$uses_subdirs"; then
+ if ! $gnu_make && test -n "$uses_subdirs"; then
echo " AC_REQUIRE([AM_PROG_CC_C_O])"
fi
for module in $final_modules; do
--
2.9.3
Thien-Thi Nguyen
2017-03-13 06:58:19 UTC
Permalink
Raw Message
() Paul Eggert <***@cs.ucla.edu>
() Sun, 12 Mar 2017 19:19:43 -0700

+ if false && $gnu_make; then

Typo?
--
Thien-Thi Nguyen -----------------------------------------------
(defun responsep (query)
(pcase (context query)
(`(technical ,ml) (correctp ml))
...)) 748E A0E8 1CB8 A748 9BFA
--------------------------------------- 6CE4 6703 2224 4C80 7502
Paul Eggert
2017-03-13 22:53:28 UTC
Permalink
Raw Message
Post by Paul Eggert
+ if false && $gnu_make; then
Typo?
Thanks for catching that. It's a harmless typo, as the then-part is not
supposed to be executed; this was an alternative implementation I was
thinking of doing, but discarded in favor of the "${AUTOCONF} -t"
implementation. I installed the attached further patch, which also fixes
a minor problem in a comment in the output.
Bruno Haible
2017-03-13 09:07:10 UTC
Permalink
Raw Message
Hi Paul,
Post by Paul Eggert
This is for applications like GNU Emacs that use GNU Make
features instead of Automake.
Wow! A big change done with so little code. Kudos!

Do we need to revisit the Makefile.am section of all modules/* files?
Are there anti-patterns that should not be used in modules files when
a module should be usable with GNU Make instead of Automake?
Post by Paul Eggert
+ sed "$convert_to_gnu_make" "$tmp"/amsnippet1
As a matter of style, I prefer to write

sed -e "$convert_to_gnu_make" "$tmp"/amsnippet1

as it conveys the information which argument has which role, and as
the -e option is mandatory anyway when you use sed inside a pipe.

Bruno
Jim Meyering
2017-03-13 17:18:02 UTC
Permalink
Raw Message
Post by Bruno Haible
the -e option is mandatory anyway when you use sed inside a pipe.
Hi Bruno,
I was surprised to read the above. What does it mean?
This works with GNU sed and no "-e" option:

$ echo abc|sed s/b/X/|cat
aXc
Bruno Haible
2017-03-13 19:14:54 UTC
Permalink
Raw Message
Hi Jim,
Post by Jim Meyering
Post by Bruno Haible
the -e option is mandatory anyway when you use sed inside a pipe.
I was surprised to read the above. What does it mean?
$ echo abc|sed s/b/X/|cat
aXc
Oops, thinko. Forget about this sentence.

Bruno
Paul Eggert
2017-03-13 23:02:04 UTC
Permalink
Raw Message
Post by Bruno Haible
Do we need to revisit the Makefile.am section of all modules/* files?
Are there anti-patterns that should not be used in modules files when
a module should be usable with GNU Make instead of Automake?
Anything that uses an Automake-specific feature other than "if FOO /
else / endif" would be suspect, yes. For example, I suppose there would
be trouble if a module uses the Automake syntax "if FOO / else !FOO /
endif !FOO". Although this particular feature should be easy for
gnulib-tool to support, I imagine other Automake features wouldn't be.

I didn't look for problems systematically; I looked only in the modules
that Emacs uses, none of which had problems (which is a good sign...).
Bruno Haible
2017-03-14 06:41:21 UTC
Permalink
Raw Message
Hi Paul,
Post by Paul Eggert
Anything that uses an Automake-specific feature other than "if FOO /
else / endif" would be suspect, yes. For example, I suppose there would
be trouble if a module uses the Automake syntax "if FOO / else !FOO /
endif !FOO".
Hmm. We use this pattern a lot. In particular, in every module that overrides
an system include file:

$ grep -r '^if[^;]*$' modules | grep -v ' test ' | LC_ALL=C sort
modules/alloca-opt:if GL_GENERATE_ALLOCA_H
modules/argz:if GL_GENERATE_ARGZ_H
modules/arpa_inet-c++-tests:if ANSICXX
modules/assert-h:if GL_GENERATE_ASSERT_H
modules/byteswap:if GL_GENERATE_BYTESWAP_H
modules/crypto/gc:if GL_COND_LIBTOOL
modules/dirent-c++-tests:if ANSICXX
modules/errno:if GL_GENERATE_ERRNO_H
modules/execinfo:if GL_GENERATE_EXECINFO_H
modules/fcntl-h-c++-tests:if ANSICXX
modules/float:if GL_GENERATE_FLOAT_H
modules/fnmatch:if GL_GENERATE_FNMATCH_H
modules/glob-c++-tests:if ANSICXX
modules/glob:if GL_GENERATE_GLOB_H
modules/iconv-h-c++-tests:if ANSICXX
modules/iconv-h:if GL_GENERATE_ICONV_H
modules/langinfo-c++-tests:if ANSICXX
modules/limits-h:if GL_GENERATE_LIMITS_H
modules/locale-c++-tests:if ANSICXX
modules/math-c++-tests:if ANSICXX
modules/net_if:if GL_GENERATE_NET_IF_H
modules/netdb-c++-tests:if ANSICXX
modules/netinet_in:if GL_GENERATE_NETINET_IN_H
modules/poll-h-c++-tests:if ANSICXX
modules/posix_spawn-tests:if POSIX_SPAWN_PORTED
modules/posix_spawnp-tests:if POSIX_SPAWN_PORTED
modules/pthread:if GL_GENERATE_PTHREAD_H
modules/pty-c++-tests:if ANSICXX
modules/relocatable-prog:if RELOCATABLE_VIA_WRAPPER
modules/sched:if GL_GENERATE_SCHED_H
modules/search-c++-tests:if ANSICXX
modules/selinux-h:if GL_GENERATE_SELINUX_CONTEXT_H
modules/signal-h-c++-tests:if ANSICXX
modules/spawn-c++-tests:if ANSICXX
modules/stdalign:if GL_GENERATE_STDALIGN_H
modules/stdarg:if GL_GENERATE_STDARG_H
modules/stdbool:if GL_GENERATE_STDBOOL_H
modules/stddef:if GL_GENERATE_STDDEF_H
modules/stdint:if GL_GENERATE_STDINT_H
modules/stdio-c++-tests:if ANSICXX
modules/stdlib-c++-tests:if ANSICXX
modules/stdnoreturn:if GL_GENERATE_STDNORETURN_H
modules/striconv:if GL_COND_LIBTOOL
modules/striconveh:if GL_COND_LIBTOOL
modules/string-c++-tests:if ANSICXX
modules/sys_ioctl-c++-tests:if ANSICXX
modules/sys_select-c++-tests:if ANSICXX
modules/sys_socket-c++-tests:if ANSICXX
modules/sys_stat-c++-tests:if ANSICXX
modules/sys_time-c++-tests:if ANSICXX
modules/sys_types-c++-tests:if ANSICXX
modules/sys_wait-c++-tests:if ANSICXX
modules/sysexits:if GL_GENERATE_SYSEXITS_H
modules/termios-c++-tests:if ANSICXX
modules/time-c++-tests:if ANSICXX
modules/unicase/empty-prefix-context:if LIBUNISTRING_COMPILE_UNICASE_EMPTY_PREFIX_CONTEXT
modules/unicase/empty-suffix-context:if LIBUNISTRING_COMPILE_UNICASE_EMPTY_SUFFIX_CONTEXT
modules/unicase/locale-language:if LIBUNISTRING_COMPILE_UNICASE_LOCALE_LANGUAGE
modules/unicase/tolower:if LIBUNISTRING_COMPILE_UNICASE_TOLOWER
modules/unicase/totitle:if LIBUNISTRING_COMPILE_UNICASE_TOTITLE
modules/unicase/toupper:if LIBUNISTRING_COMPILE_UNICASE_TOUPPER
modules/unicase/u16-casecmp:if LIBUNISTRING_COMPILE_UNICASE_U16_CASECMP
modules/unicase/u16-casecoll:if LIBUNISTRING_COMPILE_UNICASE_U16_CASECOLL
modules/unicase/u16-casefold:if LIBUNISTRING_COMPILE_UNICASE_U16_CASEFOLD
modules/unicase/u16-casexfrm:if LIBUNISTRING_COMPILE_UNICASE_U16_CASEXFRM
modules/unicase/u16-ct-casefold:if LIBUNISTRING_COMPILE_UNICASE_U16_CT_CASEFOLD
modules/unicase/u16-ct-tolower:if LIBUNISTRING_COMPILE_UNICASE_U16_CT_TOLOWER
modules/unicase/u16-ct-totitle:if LIBUNISTRING_COMPILE_UNICASE_U16_CT_TOTITLE
modules/unicase/u16-ct-toupper:if LIBUNISTRING_COMPILE_UNICASE_U16_CT_TOUPPER
modules/unicase/u16-is-cased:if LIBUNISTRING_COMPILE_UNICASE_U16_IS_CASED
modules/unicase/u16-is-casefolded:if LIBUNISTRING_COMPILE_UNICASE_U16_IS_CASEFOLDED
modules/unicase/u16-is-lowercase:if LIBUNISTRING_COMPILE_UNICASE_U16_IS_LOWERCASE
modules/unicase/u16-is-titlecase:if LIBUNISTRING_COMPILE_UNICASE_U16_IS_TITLECASE
modules/unicase/u16-is-uppercase:if LIBUNISTRING_COMPILE_UNICASE_U16_IS_UPPERCASE
modules/unicase/u16-prefix-context:if LIBUNISTRING_COMPILE_UNICASE_U16_PREFIX_CONTEXT
modules/unicase/u16-suffix-context:if LIBUNISTRING_COMPILE_UNICASE_U16_SUFFIX_CONTEXT
modules/unicase/u16-tolower:if LIBUNISTRING_COMPILE_UNICASE_U16_TOLOWER
modules/unicase/u16-totitle:if LIBUNISTRING_COMPILE_UNICASE_U16_TOTITLE
modules/unicase/u16-toupper:if LIBUNISTRING_COMPILE_UNICASE_U16_TOUPPER
modules/unicase/u32-casecmp:if LIBUNISTRING_COMPILE_UNICASE_U32_CASECMP
modules/unicase/u32-casecoll:if LIBUNISTRING_COMPILE_UNICASE_U32_CASECOLL
modules/unicase/u32-casefold:if LIBUNISTRING_COMPILE_UNICASE_U32_CASEFOLD
modules/unicase/u32-casexfrm:if LIBUNISTRING_COMPILE_UNICASE_U32_CASEXFRM
modules/unicase/u32-ct-casefold:if LIBUNISTRING_COMPILE_UNICASE_U32_CT_CASEFOLD
modules/unicase/u32-ct-tolower:if LIBUNISTRING_COMPILE_UNICASE_U32_CT_TOLOWER
modules/unicase/u32-ct-totitle:if LIBUNISTRING_COMPILE_UNICASE_U32_CT_TOTITLE
modules/unicase/u32-ct-toupper:if LIBUNISTRING_COMPILE_UNICASE_U32_CT_TOUPPER
modules/unicase/u32-is-cased:if LIBUNISTRING_COMPILE_UNICASE_U32_IS_CASED
modules/unicase/u32-is-casefolded:if LIBUNISTRING_COMPILE_UNICASE_U32_IS_CASEFOLDED
modules/unicase/u32-is-lowercase:if LIBUNISTRING_COMPILE_UNICASE_U32_IS_LOWERCASE
modules/unicase/u32-is-titlecase:if LIBUNISTRING_COMPILE_UNICASE_U32_IS_TITLECASE
modules/unicase/u32-is-uppercase:if LIBUNISTRING_COMPILE_UNICASE_U32_IS_UPPERCASE
modules/unicase/u32-prefix-context:if LIBUNISTRING_COMPILE_UNICASE_U32_PREFIX_CONTEXT
modules/unicase/u32-suffix-context:if LIBUNISTRING_COMPILE_UNICASE_U32_SUFFIX_CONTEXT
modules/unicase/u32-tolower:if LIBUNISTRING_COMPILE_UNICASE_U32_TOLOWER
modules/unicase/u32-totitle:if LIBUNISTRING_COMPILE_UNICASE_U32_TOTITLE
modules/unicase/u32-toupper:if LIBUNISTRING_COMPILE_UNICASE_U32_TOUPPER
modules/unicase/u8-casecmp:if LIBUNISTRING_COMPILE_UNICASE_U8_CASECMP
modules/unicase/u8-casecoll:if LIBUNISTRING_COMPILE_UNICASE_U8_CASECOLL
modules/unicase/u8-casefold:if LIBUNISTRING_COMPILE_UNICASE_U8_CASEFOLD
modules/unicase/u8-casexfrm:if LIBUNISTRING_COMPILE_UNICASE_U8_CASEXFRM
modules/unicase/u8-ct-casefold:if LIBUNISTRING_COMPILE_UNICASE_U8_CT_CASEFOLD
modules/unicase/u8-ct-tolower:if LIBUNISTRING_COMPILE_UNICASE_U8_CT_TOLOWER
modules/unicase/u8-ct-totitle:if LIBUNISTRING_COMPILE_UNICASE_U8_CT_TOTITLE
modules/unicase/u8-ct-toupper:if LIBUNISTRING_COMPILE_UNICASE_U8_CT_TOUPPER
modules/unicase/u8-is-cased:if LIBUNISTRING_COMPILE_UNICASE_U8_IS_CASED
modules/unicase/u8-is-casefolded:if LIBUNISTRING_COMPILE_UNICASE_U8_IS_CASEFOLDED
modules/unicase/u8-is-lowercase:if LIBUNISTRING_COMPILE_UNICASE_U8_IS_LOWERCASE
modules/unicase/u8-is-titlecase:if LIBUNISTRING_COMPILE_UNICASE_U8_IS_TITLECASE
modules/unicase/u8-is-uppercase:if LIBUNISTRING_COMPILE_UNICASE_U8_IS_UPPERCASE
modules/unicase/u8-prefix-context:if LIBUNISTRING_COMPILE_UNICASE_U8_PREFIX_CONTEXT
modules/unicase/u8-suffix-context:if LIBUNISTRING_COMPILE_UNICASE_U8_SUFFIX_CONTEXT
modules/unicase/u8-tolower:if LIBUNISTRING_COMPILE_UNICASE_U8_TOLOWER
modules/unicase/u8-totitle:if LIBUNISTRING_COMPILE_UNICASE_U8_TOTITLE
modules/unicase/u8-toupper:if LIBUNISTRING_COMPILE_UNICASE_U8_TOUPPER
modules/unicase/ulc-casecmp:if LIBUNISTRING_COMPILE_UNICASE_ULC_CASECMP
modules/unicase/ulc-casecoll:if LIBUNISTRING_COMPILE_UNICASE_ULC_CASECOLL
modules/unicase/ulc-casexfrm:if LIBUNISTRING_COMPILE_UNICASE_ULC_CASEXFRM
modules/uniconv/u16-conv-from-enc:if LIBUNISTRING_COMPILE_UNICONV_U16_CONV_FROM_ENC
modules/uniconv/u16-conv-to-enc:if LIBUNISTRING_COMPILE_UNICONV_U16_CONV_TO_ENC
modules/uniconv/u16-strconv-from-enc:if LIBUNISTRING_COMPILE_UNICONV_U16_STRCONV_FROM_ENC
modules/uniconv/u16-strconv-from-locale:if LIBUNISTRING_COMPILE_UNICONV_U16_STRCONV_FROM_LOCALE
modules/uniconv/u16-strconv-to-enc:if LIBUNISTRING_COMPILE_UNICONV_U16_STRCONV_TO_ENC
modules/uniconv/u16-strconv-to-locale:if LIBUNISTRING_COMPILE_UNICONV_U16_STRCONV_TO_LOCALE
modules/uniconv/u32-conv-from-enc:if LIBUNISTRING_COMPILE_UNICONV_U32_CONV_FROM_ENC
modules/uniconv/u32-conv-to-enc:if LIBUNISTRING_COMPILE_UNICONV_U32_CONV_TO_ENC
modules/uniconv/u32-strconv-from-enc:if LIBUNISTRING_COMPILE_UNICONV_U32_STRCONV_FROM_ENC
modules/uniconv/u32-strconv-from-locale:if LIBUNISTRING_COMPILE_UNICONV_U32_STRCONV_FROM_LOCALE
modules/uniconv/u32-strconv-to-enc:if LIBUNISTRING_COMPILE_UNICONV_U32_STRCONV_TO_ENC
modules/uniconv/u32-strconv-to-locale:if LIBUNISTRING_COMPILE_UNICONV_U32_STRCONV_TO_LOCALE
modules/uniconv/u8-conv-from-enc:if LIBUNISTRING_COMPILE_UNICONV_U8_CONV_FROM_ENC
modules/uniconv/u8-conv-to-enc:if LIBUNISTRING_COMPILE_UNICONV_U8_CONV_TO_ENC
modules/uniconv/u8-strconv-from-enc:if LIBUNISTRING_COMPILE_UNICONV_U8_STRCONV_FROM_ENC
modules/uniconv/u8-strconv-from-locale:if LIBUNISTRING_COMPILE_UNICONV_U8_STRCONV_FROM_LOCALE
modules/uniconv/u8-strconv-to-enc:if LIBUNISTRING_COMPILE_UNICONV_U8_STRCONV_TO_ENC
modules/uniconv/u8-strconv-to-locale:if LIBUNISTRING_COMPILE_UNICONV_U8_STRCONV_TO_LOCALE
modules/unictype/bidiclass-byname:if LIBUNISTRING_COMPILE_UNICTYPE_BIDICLASS_BYNAME
modules/unictype/bidiclass-longname:if LIBUNISTRING_COMPILE_UNICTYPE_BIDICLASS_LONGNAME
modules/unictype/bidiclass-name:if LIBUNISTRING_COMPILE_UNICTYPE_BIDICLASS_NAME
modules/unictype/bidiclass-of:if LIBUNISTRING_COMPILE_UNICTYPE_BIDICLASS_OF
modules/unictype/bidiclass-test:if LIBUNISTRING_COMPILE_UNICTYPE_BIDICLASS_TEST
modules/unictype/block-list:if LIBUNISTRING_COMPILE_UNICTYPE_BLOCK_LIST
modules/unictype/block-test:if LIBUNISTRING_COMPILE_UNICTYPE_BLOCK_TEST
modules/unictype/category-C:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_C
modules/unictype/category-Cc:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_CC
modules/unictype/category-Cf:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_CF
modules/unictype/category-Cn:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_CN
modules/unictype/category-Co:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_CO
modules/unictype/category-Cs:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_CS
modules/unictype/category-L:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_L
modules/unictype/category-LC:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_LC
modules/unictype/category-Ll:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_LL
modules/unictype/category-Lm:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_LM
modules/unictype/category-Lo:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_LO
modules/unictype/category-Lt:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_LT
modules/unictype/category-Lu:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_LU
modules/unictype/category-M:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_M
modules/unictype/category-Mc:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_MC
modules/unictype/category-Me:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_ME
modules/unictype/category-Mn:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_MN
modules/unictype/category-N:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_N
modules/unictype/category-Nd:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_ND
modules/unictype/category-Nl:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_NL
modules/unictype/category-No:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_NO
modules/unictype/category-P:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_P
modules/unictype/category-Pc:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_PC
modules/unictype/category-Pd:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_PD
modules/unictype/category-Pe:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_PE
modules/unictype/category-Pf:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_PF
modules/unictype/category-Pi:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_PI
modules/unictype/category-Po:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_PO
modules/unictype/category-Ps:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_PS
modules/unictype/category-S:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_S
modules/unictype/category-Sc:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_SC
modules/unictype/category-Sk:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_SK
modules/unictype/category-Sm:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_SM
modules/unictype/category-So:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_SO
modules/unictype/category-Z:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_Z
modules/unictype/category-Zl:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_ZL
modules/unictype/category-Zp:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_ZP
modules/unictype/category-Zs:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_ZS
modules/unictype/category-and-not:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_AND_NOT
modules/unictype/category-and:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_AND
modules/unictype/category-byname:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_BYNAME
modules/unictype/category-longname:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_LONGNAME
modules/unictype/category-name:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_NAME
modules/unictype/category-none:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_NONE
modules/unictype/category-of:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_OF
modules/unictype/category-or:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_OR
modules/unictype/category-test:if LIBUNISTRING_COMPILE_UNICTYPE_CATEGORY_TEST
modules/unictype/combining-class-byname:if LIBUNISTRING_COMPILE_UNICTYPE_COMBINING_CLASS_BYNAME
modules/unictype/combining-class-longname:if LIBUNISTRING_COMPILE_UNICTYPE_COMBINING_CLASS_LONGNAME
modules/unictype/combining-class-name:if LIBUNISTRING_COMPILE_UNICTYPE_COMBINING_CLASS_NAME
modules/unictype/combining-class:if LIBUNISTRING_COMPILE_UNICTYPE_COMBINING_CLASS
modules/unictype/ctype-alnum:if LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_ALNUM
modules/unictype/ctype-alpha:if LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_ALPHA
modules/unictype/ctype-blank:if LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_BLANK
modules/unictype/ctype-cntrl:if LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_CNTRL
modules/unictype/ctype-digit:if LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_DIGIT
modules/unictype/ctype-graph:if LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_GRAPH
modules/unictype/ctype-lower:if LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_LOWER
modules/unictype/ctype-print:if LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_PRINT
modules/unictype/ctype-punct:if LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_PUNCT
modules/unictype/ctype-space:if LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_SPACE
modules/unictype/ctype-upper:if LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_UPPER
modules/unictype/ctype-xdigit:if LIBUNISTRING_COMPILE_UNICTYPE_CTYPE_XDIGIT
modules/unictype/decimal-digit:if LIBUNISTRING_COMPILE_UNICTYPE_DECIMAL_DIGIT
modules/unictype/digit:if LIBUNISTRING_COMPILE_UNICTYPE_DIGIT
modules/unictype/joininggroup-byname:if LIBUNISTRING_COMPILE_UNICTYPE_JOININGGROUP_BYNAME
modules/unictype/joininggroup-name:if LIBUNISTRING_COMPILE_UNICTYPE_JOININGGROUP_NAME
modules/unictype/joininggroup-of:if LIBUNISTRING_COMPILE_UNICTYPE_JOININGGROUP_OF
modules/unictype/joiningtype-byname:if LIBUNISTRING_COMPILE_UNICTYPE_JOININGTYPE_BYNAME
modules/unictype/joiningtype-longname:if LIBUNISTRING_COMPILE_UNICTYPE_JOININGTYPE_LONGNAME
modules/unictype/joiningtype-name:if LIBUNISTRING_COMPILE_UNICTYPE_JOININGTYPE_NAME
modules/unictype/joiningtype-of:if LIBUNISTRING_COMPILE_UNICTYPE_JOININGTYPE_OF
modules/unictype/mirror:if LIBUNISTRING_COMPILE_UNICTYPE_MIRROR
modules/unictype/numeric:if LIBUNISTRING_COMPILE_UNICTYPE_NUMERIC
modules/unictype/property-alphabetic:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_ALPHABETIC
modules/unictype/property-ascii-hex-digit:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_ASCII_HEX_DIGIT
modules/unictype/property-bidi-arabic-digit:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_ARABIC_DIGIT
modules/unictype/property-bidi-arabic-right-to-left:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT
modules/unictype/property-bidi-block-separator:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_BLOCK_SEPARATOR
modules/unictype/property-bidi-boundary-neutral:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_BOUNDARY_NEUTRAL
modules/unictype/property-bidi-common-separator:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_COMMON_SEPARATOR
modules/unictype/property-bidi-control:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_CONTROL
modules/unictype/property-bidi-embedding-or-override:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE
modules/unictype/property-bidi-eur-num-separator:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_EUR_NUM_SEPARATOR
modules/unictype/property-bidi-eur-num-terminator:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_EUR_NUM_TERMINATOR
modules/unictype/property-bidi-european-digit:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_EUROPEAN_DIGIT
modules/unictype/property-bidi-hebrew-right-to-left:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT
modules/unictype/property-bidi-left-to-right:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_LEFT_TO_RIGHT
modules/unictype/property-bidi-non-spacing-mark:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_NON_SPACING_MARK
modules/unictype/property-bidi-other-neutral:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_OTHER_NEUTRAL
modules/unictype/property-bidi-pdf:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_PDF
modules/unictype/property-bidi-segment-separator:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_SEGMENT_SEPARATOR
modules/unictype/property-bidi-whitespace:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BIDI_WHITESPACE
modules/unictype/property-byname:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_BYNAME
modules/unictype/property-case-ignorable:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_CASE_IGNORABLE
modules/unictype/property-cased:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_CASED
modules/unictype/property-changes-when-casefolded:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_CHANGES_WHEN_CASEFOLDED
modules/unictype/property-changes-when-casemapped:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_CHANGES_WHEN_CASEMAPPED
modules/unictype/property-changes-when-lowercased:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_CHANGES_WHEN_LOWERCASED
modules/unictype/property-changes-when-titlecased:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_CHANGES_WHEN_TITLECASED
modules/unictype/property-changes-when-uppercased:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_CHANGES_WHEN_UPPERCASED
modules/unictype/property-combining:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_COMBINING
modules/unictype/property-composite:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_COMPOSITE
modules/unictype/property-currency-symbol:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_CURRENCY_SYMBOL
modules/unictype/property-dash:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_DASH
modules/unictype/property-decimal-digit:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_DECIMAL_DIGIT
modules/unictype/property-default-ignorable-code-point:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT
modules/unictype/property-deprecated:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_DEPRECATED
modules/unictype/property-diacritic:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_DIACRITIC
modules/unictype/property-extender:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_EXTENDER
modules/unictype/property-format-control:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_FORMAT_CONTROL
modules/unictype/property-grapheme-base:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_GRAPHEME_BASE
modules/unictype/property-grapheme-extend:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_GRAPHEME_EXTEND
modules/unictype/property-grapheme-link:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_GRAPHEME_LINK
modules/unictype/property-hex-digit:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_HEX_DIGIT
modules/unictype/property-hyphen:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_HYPHEN
modules/unictype/property-id-continue:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_ID_CONTINUE
modules/unictype/property-id-start:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_ID_START
modules/unictype/property-ideographic:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_IDEOGRAPHIC
modules/unictype/property-ids-binary-operator:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_IDS_BINARY_OPERATOR
modules/unictype/property-ids-trinary-operator:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_IDS_TRINARY_OPERATOR
modules/unictype/property-ignorable-control:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_IGNORABLE_CONTROL
modules/unictype/property-iso-control:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_ISO_CONTROL
modules/unictype/property-join-control:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_JOIN_CONTROL
modules/unictype/property-left-of-pair:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_LEFT_OF_PAIR
modules/unictype/property-line-separator:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_LINE_SEPARATOR
modules/unictype/property-logical-order-exception:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_LOGICAL_ORDER_EXCEPTION
modules/unictype/property-lowercase:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_LOWERCASE
modules/unictype/property-math:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_MATH
modules/unictype/property-non-break:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_NON_BREAK
modules/unictype/property-not-a-character:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_NOT_A_CHARACTER
modules/unictype/property-numeric:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_NUMERIC
modules/unictype/property-other-alphabetic:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_OTHER_ALPHABETIC
modules/unictype/property-other-default-ignorable-code-point:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT
modules/unictype/property-other-grapheme-extend:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_OTHER_GRAPHEME_EXTEND
modules/unictype/property-other-id-continue:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_OTHER_ID_CONTINUE
modules/unictype/property-other-id-start:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_OTHER_ID_START
modules/unictype/property-other-lowercase:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_OTHER_LOWERCASE
modules/unictype/property-other-math:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_OTHER_MATH
modules/unictype/property-other-uppercase:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_OTHER_UPPERCASE
modules/unictype/property-paired-punctuation:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_PAIRED_PUNCTUATION
modules/unictype/property-paragraph-separator:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_PARAGRAPH_SEPARATOR
modules/unictype/property-pattern-syntax:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_PATTERN_SYNTAX
modules/unictype/property-pattern-white-space:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_PATTERN_WHITE_SPACE
modules/unictype/property-private-use:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_PRIVATE_USE
modules/unictype/property-punctuation:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_PUNCTUATION
modules/unictype/property-quotation-mark:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_QUOTATION_MARK
modules/unictype/property-radical:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_RADICAL
modules/unictype/property-sentence-terminal:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_SENTENCE_TERMINAL
modules/unictype/property-soft-dotted:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_SOFT_DOTTED
modules/unictype/property-space:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_SPACE
modules/unictype/property-terminal-punctuation:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_TERMINAL_PUNCTUATION
modules/unictype/property-test:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_TEST
modules/unictype/property-titlecase:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_TITLECASE
modules/unictype/property-unassigned-code-value:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_UNASSIGNED_CODE_VALUE
modules/unictype/property-unified-ideograph:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_UNIFIED_IDEOGRAPH
modules/unictype/property-uppercase:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_UPPERCASE
modules/unictype/property-variation-selector:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_VARIATION_SELECTOR
modules/unictype/property-white-space:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_WHITE_SPACE
modules/unictype/property-xid-continue:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_XID_CONTINUE
modules/unictype/property-xid-start:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_XID_START
modules/unictype/property-zero-width:if LIBUNISTRING_COMPILE_UNICTYPE_PROPERTY_ZERO_WIDTH
modules/unictype/scripts:if LIBUNISTRING_COMPILE_UNICTYPE_SCRIPTS
modules/unictype/syntax-c-ident:if LIBUNISTRING_COMPILE_UNICTYPE_SYNTAX_C_IDENT
modules/unictype/syntax-c-whitespace:if LIBUNISTRING_COMPILE_UNICTYPE_SYNTAX_C_WHITESPACE
modules/unictype/syntax-java-ident:if LIBUNISTRING_COMPILE_UNICTYPE_SYNTAX_JAVA_IDENT
modules/unictype/syntax-java-whitespace:if LIBUNISTRING_COMPILE_UNICTYPE_SYNTAX_JAVA_WHITESPACE
modules/unigbrk/u16-grapheme-breaks:if LIBUNISTRING_COMPILE_UNIGBRK_U16_GRAPHEME_BREAKS
modules/unigbrk/u16-grapheme-next:if LIBUNISTRING_COMPILE_UNIGBRK_U16_GRAPHEME_NEXT
modules/unigbrk/u16-grapheme-prev:if LIBUNISTRING_COMPILE_UNIGBRK_U16_GRAPHEME_PREV
modules/unigbrk/u32-grapheme-breaks:if LIBUNISTRING_COMPILE_UNIGBRK_U32_GRAPHEME_BREAKS
modules/unigbrk/u32-grapheme-next:if LIBUNISTRING_COMPILE_UNIGBRK_U32_GRAPHEME_NEXT
modules/unigbrk/u32-grapheme-prev:if LIBUNISTRING_COMPILE_UNIGBRK_U32_GRAPHEME_PREV
modules/unigbrk/u8-grapheme-breaks:if LIBUNISTRING_COMPILE_UNIGBRK_U8_GRAPHEME_BREAKS
modules/unigbrk/u8-grapheme-next:if LIBUNISTRING_COMPILE_UNIGBRK_U8_GRAPHEME_NEXT
modules/unigbrk/u8-grapheme-prev:if LIBUNISTRING_COMPILE_UNIGBRK_U8_GRAPHEME_PREV
modules/unigbrk/uc-gbrk-prop:if LIBUNISTRING_COMPILE_UNIGBRK_UC_GBRK_PROP
modules/unigbrk/uc-is-grapheme-break:if LIBUNISTRING_COMPILE_UNIGBRK_UC_IS_GRAPHEME_BREAK
modules/unigbrk/ulc-grapheme-breaks:if LIBUNISTRING_COMPILE_UNIGBRK_ULC_GRAPHEME_BREAKS
modules/unilbrk/u16-possible-linebreaks:if LIBUNISTRING_COMPILE_UNILBRK_U16_POSSIBLE_LINEBREAKS
modules/unilbrk/u16-width-linebreaks:if LIBUNISTRING_COMPILE_UNILBRK_U16_WIDTH_LINEBREAKS
modules/unilbrk/u32-possible-linebreaks:if LIBUNISTRING_COMPILE_UNILBRK_U32_POSSIBLE_LINEBREAKS
modules/unilbrk/u32-width-linebreaks:if LIBUNISTRING_COMPILE_UNILBRK_U32_WIDTH_LINEBREAKS
modules/unilbrk/u8-possible-linebreaks:if LIBUNISTRING_COMPILE_UNILBRK_U8_POSSIBLE_LINEBREAKS
modules/unilbrk/u8-width-linebreaks:if LIBUNISTRING_COMPILE_UNILBRK_U8_WIDTH_LINEBREAKS
modules/unilbrk/ulc-possible-linebreaks:if LIBUNISTRING_COMPILE_UNILBRK_ULC_POSSIBLE_LINEBREAKS
modules/unilbrk/ulc-width-linebreaks:if LIBUNISTRING_COMPILE_UNILBRK_ULC_WIDTH_LINEBREAKS
modules/uniname/uniname-tests:if LIBUNISTRING_COMPILE_UNINAME_UNINAME
modules/uniname/uniname:if LIBUNISTRING_COMPILE_UNINAME_UNINAME
modules/uninorm/canonical-decomposition:if LIBUNISTRING_COMPILE_UNINORM_CANONICAL_DECOMPOSITION
modules/uninorm/composition:if LIBUNISTRING_COMPILE_UNINORM_COMPOSITION
modules/uninorm/decomposing-form:if LIBUNISTRING_COMPILE_UNINORM_DECOMPOSING_FORM
modules/uninorm/decomposition:if LIBUNISTRING_COMPILE_UNINORM_DECOMPOSITION
modules/uninorm/filter:if LIBUNISTRING_COMPILE_UNINORM_FILTER
modules/uninorm/nfc:if LIBUNISTRING_COMPILE_UNINORM_NFC
modules/uninorm/nfd:if LIBUNISTRING_COMPILE_UNINORM_NFD
modules/uninorm/nfkc:if LIBUNISTRING_COMPILE_UNINORM_NFKC
modules/uninorm/nfkd:if LIBUNISTRING_COMPILE_UNINORM_NFKD
modules/uninorm/u16-normalize:if LIBUNISTRING_COMPILE_UNINORM_U16_NORMALIZE
modules/uninorm/u16-normcmp:if LIBUNISTRING_COMPILE_UNINORM_U16_NORMCMP
modules/uninorm/u16-normcoll:if LIBUNISTRING_COMPILE_UNINORM_U16_NORMCOLL
modules/uninorm/u16-normxfrm:if LIBUNISTRING_COMPILE_UNINORM_U16_NORMXFRM
modules/uninorm/u32-normalize:if LIBUNISTRING_COMPILE_UNINORM_U32_NORMALIZE
modules/uninorm/u32-normcmp:if LIBUNISTRING_COMPILE_UNINORM_U32_NORMCMP
modules/uninorm/u32-normcoll:if LIBUNISTRING_COMPILE_UNINORM_U32_NORMCOLL
modules/uninorm/u32-normxfrm:if LIBUNISTRING_COMPILE_UNINORM_U32_NORMXFRM
modules/uninorm/u8-normalize:if LIBUNISTRING_COMPILE_UNINORM_U8_NORMALIZE
modules/uninorm/u8-normcmp:if LIBUNISTRING_COMPILE_UNINORM_U8_NORMCMP
modules/uninorm/u8-normcoll:if LIBUNISTRING_COMPILE_UNINORM_U8_NORMCOLL
modules/uninorm/u8-normxfrm:if LIBUNISTRING_COMPILE_UNINORM_U8_NORMXFRM
modules/unistd-c++-tests:if ANSICXX
modules/unistdio/u16-asnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_ASNPRINTF
modules/unistdio/u16-asprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_ASPRINTF
modules/unistdio/u16-snprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_SNPRINTF
modules/unistdio/u16-sprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_SPRINTF
modules/unistdio/u16-u16-asnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_U16_ASNPRINTF
modules/unistdio/u16-u16-asprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_U16_ASPRINTF
modules/unistdio/u16-u16-snprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_U16_SNPRINTF
modules/unistdio/u16-u16-sprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_U16_SPRINTF
modules/unistdio/u16-u16-vasnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_U16_VASNPRINTF
modules/unistdio/u16-u16-vasprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_U16_VASPRINTF
modules/unistdio/u16-u16-vsnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_U16_VSNPRINTF
modules/unistdio/u16-u16-vsprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_U16_VSPRINTF
modules/unistdio/u16-vasnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_VASNPRINTF
modules/unistdio/u16-vasprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_VASPRINTF
modules/unistdio/u16-vsnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_VSNPRINTF
modules/unistdio/u16-vsprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U16_VSPRINTF
modules/unistdio/u32-asnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_ASNPRINTF
modules/unistdio/u32-asprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_ASPRINTF
modules/unistdio/u32-snprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_SNPRINTF
modules/unistdio/u32-sprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_SPRINTF
modules/unistdio/u32-u32-asnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_U32_ASNPRINTF
modules/unistdio/u32-u32-asprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_U32_ASPRINTF
modules/unistdio/u32-u32-snprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_U32_SNPRINTF
modules/unistdio/u32-u32-sprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_U32_SPRINTF
modules/unistdio/u32-u32-vasnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_U32_VASNPRINTF
modules/unistdio/u32-u32-vasprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_U32_VASPRINTF
modules/unistdio/u32-u32-vsnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_U32_VSNPRINTF
modules/unistdio/u32-u32-vsprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_U32_VSPRINTF
modules/unistdio/u32-vasnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_VASNPRINTF
modules/unistdio/u32-vasprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_VASPRINTF
modules/unistdio/u32-vsnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_VSNPRINTF
modules/unistdio/u32-vsprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U32_VSPRINTF
modules/unistdio/u8-asnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_ASNPRINTF
modules/unistdio/u8-asprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_ASPRINTF
modules/unistdio/u8-snprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_SNPRINTF
modules/unistdio/u8-sprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_SPRINTF
modules/unistdio/u8-u8-asnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_U8_ASNPRINTF
modules/unistdio/u8-u8-asprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_U8_ASPRINTF
modules/unistdio/u8-u8-snprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_U8_SNPRINTF
modules/unistdio/u8-u8-sprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_U8_SPRINTF
modules/unistdio/u8-u8-vasnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_U8_VASNPRINTF
modules/unistdio/u8-u8-vasprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_U8_VASPRINTF
modules/unistdio/u8-u8-vsnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_U8_VSNPRINTF
modules/unistdio/u8-u8-vsprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_U8_VSPRINTF
modules/unistdio/u8-vasnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_VASNPRINTF
modules/unistdio/u8-vasprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_VASPRINTF
modules/unistdio/u8-vsnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_VSNPRINTF
modules/unistdio/u8-vsprintf:if LIBUNISTRING_COMPILE_UNISTDIO_U8_VSPRINTF
modules/unistdio/ulc-asnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_ULC_ASNPRINTF
modules/unistdio/ulc-asprintf:if LIBUNISTRING_COMPILE_UNISTDIO_ULC_ASPRINTF
modules/unistdio/ulc-fprintf:if LIBUNISTRING_COMPILE_UNISTDIO_ULC_FPRINTF
modules/unistdio/ulc-snprintf:if LIBUNISTRING_COMPILE_UNISTDIO_ULC_SNPRINTF
modules/unistdio/ulc-sprintf:if LIBUNISTRING_COMPILE_UNISTDIO_ULC_SPRINTF
modules/unistdio/ulc-vasnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_ULC_VASNPRINTF
modules/unistdio/ulc-vasprintf:if LIBUNISTRING_COMPILE_UNISTDIO_ULC_VASPRINTF
modules/unistdio/ulc-vfprintf:if LIBUNISTRING_COMPILE_UNISTDIO_ULC_VFPRINTF
modules/unistdio/ulc-vsnprintf:if LIBUNISTRING_COMPILE_UNISTDIO_ULC_VSNPRINTF
modules/unistdio/ulc-vsprintf:if LIBUNISTRING_COMPILE_UNISTDIO_ULC_VSPRINTF
modules/unistr/u16-check:if LIBUNISTRING_COMPILE_UNISTR_U16_CHECK
modules/unistr/u16-chr:if LIBUNISTRING_COMPILE_UNISTR_U16_CHR
modules/unistr/u16-cmp2:if LIBUNISTRING_COMPILE_UNISTR_U16_CMP2
modules/unistr/u16-cmp:if LIBUNISTRING_COMPILE_UNISTR_U16_CMP
modules/unistr/u16-cpy-alloc:if LIBUNISTRING_COMPILE_UNISTR_U16_CPY_ALLOC
modules/unistr/u16-cpy:if LIBUNISTRING_COMPILE_UNISTR_U16_CPY
modules/unistr/u16-endswith:if LIBUNISTRING_COMPILE_UNISTR_U16_ENDSWITH
modules/unistr/u16-mblen:if LIBUNISTRING_COMPILE_UNISTR_U16_MBLEN
modules/unistr/u16-mbsnlen:if LIBUNISTRING_COMPILE_UNISTR_U16_MBSNLEN
modules/unistr/u16-mbtouc-unsafe:if LIBUNISTRING_COMPILE_UNISTR_U16_MBTOUC_UNSAFE
modules/unistr/u16-mbtouc:if LIBUNISTRING_COMPILE_UNISTR_U16_MBTOUC
modules/unistr/u16-mbtoucr:if LIBUNISTRING_COMPILE_UNISTR_U16_MBTOUCR
modules/unistr/u16-move:if LIBUNISTRING_COMPILE_UNISTR_U16_MOVE
modules/unistr/u16-next:if LIBUNISTRING_COMPILE_UNISTR_U16_NEXT
modules/unistr/u16-prev:if LIBUNISTRING_COMPILE_UNISTR_U16_PREV
modules/unistr/u16-set:if LIBUNISTRING_COMPILE_UNISTR_U16_SET
modules/unistr/u16-startswith:if LIBUNISTRING_COMPILE_UNISTR_U16_STARTSWITH
modules/unistr/u16-stpcpy:if LIBUNISTRING_COMPILE_UNISTR_U16_STPCPY
modules/unistr/u16-stpncpy:if LIBUNISTRING_COMPILE_UNISTR_U16_STPNCPY
modules/unistr/u16-strcat:if LIBUNISTRING_COMPILE_UNISTR_U16_STRCAT
modules/unistr/u16-strchr:if LIBUNISTRING_COMPILE_UNISTR_U16_STRCHR
modules/unistr/u16-strcmp:if LIBUNISTRING_COMPILE_UNISTR_U16_STRCMP
modules/unistr/u16-strcoll:if LIBUNISTRING_COMPILE_UNISTR_U16_STRCOLL
modules/unistr/u16-strcpy:if LIBUNISTRING_COMPILE_UNISTR_U16_STRCPY
modules/unistr/u16-strcspn:if LIBUNISTRING_COMPILE_UNISTR_U16_STRCSPN
modules/unistr/u16-strdup:if LIBUNISTRING_COMPILE_UNISTR_U16_STRDUP
modules/unistr/u16-strlen:if LIBUNISTRING_COMPILE_UNISTR_U16_STRLEN
modules/unistr/u16-strmblen:if LIBUNISTRING_COMPILE_UNISTR_U16_STRMBLEN
modules/unistr/u16-strmbtouc:if LIBUNISTRING_COMPILE_UNISTR_U16_STRMBTOUC
modules/unistr/u16-strncat:if LIBUNISTRING_COMPILE_UNISTR_U16_STRNCAT
modules/unistr/u16-strncmp:if LIBUNISTRING_COMPILE_UNISTR_U16_STRNCMP
modules/unistr/u16-strncpy:if LIBUNISTRING_COMPILE_UNISTR_U16_STRNCPY
modules/unistr/u16-strnlen:if LIBUNISTRING_COMPILE_UNISTR_U16_STRNLEN
modules/unistr/u16-strpbrk:if LIBUNISTRING_COMPILE_UNISTR_U16_STRPBRK
modules/unistr/u16-strrchr:if LIBUNISTRING_COMPILE_UNISTR_U16_STRRCHR
modules/unistr/u16-strspn:if LIBUNISTRING_COMPILE_UNISTR_U16_STRSPN
modules/unistr/u16-strstr:if LIBUNISTRING_COMPILE_UNISTR_U16_STRSTR
modules/unistr/u16-strtok:if LIBUNISTRING_COMPILE_UNISTR_U16_STRTOK
modules/unistr/u16-to-u32:if LIBUNISTRING_COMPILE_UNISTR_U16_TO_U32
modules/unistr/u16-to-u8:if LIBUNISTRING_COMPILE_UNISTR_U16_TO_U8
modules/unistr/u16-uctomb:if LIBUNISTRING_COMPILE_UNISTR_U16_UCTOMB
modules/unistr/u32-check:if LIBUNISTRING_COMPILE_UNISTR_U32_CHECK
modules/unistr/u32-chr:if LIBUNISTRING_COMPILE_UNISTR_U32_CHR
modules/unistr/u32-cmp2:if LIBUNISTRING_COMPILE_UNISTR_U32_CMP2
modules/unistr/u32-cmp:if LIBUNISTRING_COMPILE_UNISTR_U32_CMP
modules/unistr/u32-cpy-alloc:if LIBUNISTRING_COMPILE_UNISTR_U32_CPY_ALLOC
modules/unistr/u32-cpy:if LIBUNISTRING_COMPILE_UNISTR_U32_CPY
modules/unistr/u32-endswith:if LIBUNISTRING_COMPILE_UNISTR_U32_ENDSWITH
modules/unistr/u32-mblen:if LIBUNISTRING_COMPILE_UNISTR_U32_MBLEN
modules/unistr/u32-mbsnlen:if LIBUNISTRING_COMPILE_UNISTR_U32_MBSNLEN
modules/unistr/u32-mbtouc-unsafe:if LIBUNISTRING_COMPILE_UNISTR_U32_MBTOUC_UNSAFE
modules/unistr/u32-mbtouc:if LIBUNISTRING_COMPILE_UNISTR_U32_MBTOUC
modules/unistr/u32-mbtoucr:if LIBUNISTRING_COMPILE_UNISTR_U32_MBTOUCR
modules/unistr/u32-move:if LIBUNISTRING_COMPILE_UNISTR_U32_MOVE
modules/unistr/u32-next:if LIBUNISTRING_COMPILE_UNISTR_U32_NEXT
modules/unistr/u32-prev:if LIBUNISTRING_COMPILE_UNISTR_U32_PREV
modules/unistr/u32-set:if LIBUNISTRING_COMPILE_UNISTR_U32_SET
modules/unistr/u32-startswith:if LIBUNISTRING_COMPILE_UNISTR_U32_STARTSWITH
modules/unistr/u32-stpcpy:if LIBUNISTRING_COMPILE_UNISTR_U32_STPCPY
modules/unistr/u32-stpncpy:if LIBUNISTRING_COMPILE_UNISTR_U32_STPNCPY
modules/unistr/u32-strcat:if LIBUNISTRING_COMPILE_UNISTR_U32_STRCAT
modules/unistr/u32-strchr:if LIBUNISTRING_COMPILE_UNISTR_U32_STRCHR
modules/unistr/u32-strcmp:if LIBUNISTRING_COMPILE_UNISTR_U32_STRCMP
modules/unistr/u32-strcoll:if LIBUNISTRING_COMPILE_UNISTR_U32_STRCOLL
modules/unistr/u32-strcpy:if LIBUNISTRING_COMPILE_UNISTR_U32_STRCPY
modules/unistr/u32-strcspn:if LIBUNISTRING_COMPILE_UNISTR_U32_STRCSPN
modules/unistr/u32-strdup:if LIBUNISTRING_COMPILE_UNISTR_U32_STRDUP
modules/unistr/u32-strlen:if LIBUNISTRING_COMPILE_UNISTR_U32_STRLEN
modules/unistr/u32-strmblen:if LIBUNISTRING_COMPILE_UNISTR_U32_STRMBLEN
modules/unistr/u32-strmbtouc:if LIBUNISTRING_COMPILE_UNISTR_U32_STRMBTOUC
modules/unistr/u32-strncat:if LIBUNISTRING_COMPILE_UNISTR_U32_STRNCAT
modules/unistr/u32-strncmp:if LIBUNISTRING_COMPILE_UNISTR_U32_STRNCMP
modules/unistr/u32-strncpy:if LIBUNISTRING_COMPILE_UNISTR_U32_STRNCPY
modules/unistr/u32-strnlen:if LIBUNISTRING_COMPILE_UNISTR_U32_STRNLEN
modules/unistr/u32-strpbrk:if LIBUNISTRING_COMPILE_UNISTR_U32_STRPBRK
modules/unistr/u32-strrchr:if LIBUNISTRING_COMPILE_UNISTR_U32_STRRCHR
modules/unistr/u32-strspn:if LIBUNISTRING_COMPILE_UNISTR_U32_STRSPN
modules/unistr/u32-strstr:if LIBUNISTRING_COMPILE_UNISTR_U32_STRSTR
modules/unistr/u32-strtok:if LIBUNISTRING_COMPILE_UNISTR_U32_STRTOK
modules/unistr/u32-to-u16:if LIBUNISTRING_COMPILE_UNISTR_U32_TO_U16
modules/unistr/u32-to-u8:if LIBUNISTRING_COMPILE_UNISTR_U32_TO_U8
modules/unistr/u32-uctomb:if LIBUNISTRING_COMPILE_UNISTR_U32_UCTOMB
modules/unistr/u8-check:if LIBUNISTRING_COMPILE_UNISTR_U8_CHECK
modules/unistr/u8-chr:if LIBUNISTRING_COMPILE_UNISTR_U8_CHR
modules/unistr/u8-cmp2:if LIBUNISTRING_COMPILE_UNISTR_U8_CMP2
modules/unistr/u8-cmp:if LIBUNISTRING_COMPILE_UNISTR_U8_CMP
modules/unistr/u8-cpy-alloc:if LIBUNISTRING_COMPILE_UNISTR_U8_CPY_ALLOC
modules/unistr/u8-cpy:if LIBUNISTRING_COMPILE_UNISTR_U8_CPY
modules/unistr/u8-endswith:if LIBUNISTRING_COMPILE_UNISTR_U8_ENDSWITH
modules/unistr/u8-mblen:if LIBUNISTRING_COMPILE_UNISTR_U8_MBLEN
modules/unistr/u8-mbsnlen:if LIBUNISTRING_COMPILE_UNISTR_U8_MBSNLEN
modules/unistr/u8-mbtouc-unsafe:if LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUC_UNSAFE
modules/unistr/u8-mbtouc:if LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUC
modules/unistr/u8-mbtoucr:if LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUCR
modules/unistr/u8-move:if LIBUNISTRING_COMPILE_UNISTR_U8_MOVE
modules/unistr/u8-next:if LIBUNISTRING_COMPILE_UNISTR_U8_NEXT
modules/unistr/u8-prev:if LIBUNISTRING_COMPILE_UNISTR_U8_PREV
modules/unistr/u8-set:if LIBUNISTRING_COMPILE_UNISTR_U8_SET
modules/unistr/u8-startswith:if LIBUNISTRING_COMPILE_UNISTR_U8_STARTSWITH
modules/unistr/u8-stpcpy:if LIBUNISTRING_COMPILE_UNISTR_U8_STPCPY
modules/unistr/u8-stpncpy:if LIBUNISTRING_COMPILE_UNISTR_U8_STPNCPY
modules/unistr/u8-strcat:if LIBUNISTRING_COMPILE_UNISTR_U8_STRCAT
modules/unistr/u8-strchr:if LIBUNISTRING_COMPILE_UNISTR_U8_STRCHR
modules/unistr/u8-strcmp:if LIBUNISTRING_COMPILE_UNISTR_U8_STRCMP
modules/unistr/u8-strcoll:if LIBUNISTRING_COMPILE_UNISTR_U8_STRCOLL
modules/unistr/u8-strcpy:if LIBUNISTRING_COMPILE_UNISTR_U8_STRCPY
modules/unistr/u8-strcspn:if LIBUNISTRING_COMPILE_UNISTR_U8_STRCSPN
modules/unistr/u8-strdup:if LIBUNISTRING_COMPILE_UNISTR_U8_STRDUP
modules/unistr/u8-strlen:if LIBUNISTRING_COMPILE_UNISTR_U8_STRLEN
modules/unistr/u8-strmblen:if LIBUNISTRING_COMPILE_UNISTR_U8_STRMBLEN
modules/unistr/u8-strmbtouc:if LIBUNISTRING_COMPILE_UNISTR_U8_STRMBTOUC
modules/unistr/u8-strncat:if LIBUNISTRING_COMPILE_UNISTR_U8_STRNCAT
modules/unistr/u8-strncmp:if LIBUNISTRING_COMPILE_UNISTR_U8_STRNCMP
modules/unistr/u8-strncpy:if LIBUNISTRING_COMPILE_UNISTR_U8_STRNCPY
modules/unistr/u8-strnlen:if LIBUNISTRING_COMPILE_UNISTR_U8_STRNLEN
modules/unistr/u8-strpbrk:if LIBUNISTRING_COMPILE_UNISTR_U8_STRPBRK
modules/unistr/u8-strrchr:if LIBUNISTRING_COMPILE_UNISTR_U8_STRRCHR
modules/unistr/u8-strspn:if LIBUNISTRING_COMPILE_UNISTR_U8_STRSPN
modules/unistr/u8-strstr:if LIBUNISTRING_COMPILE_UNISTR_U8_STRSTR
modules/unistr/u8-strtok:if LIBUNISTRING_COMPILE_UNISTR_U8_STRTOK
modules/unistr/u8-to-u16:if LIBUNISTRING_COMPILE_UNISTR_U8_TO_U16
modules/unistr/u8-to-u32:if LIBUNISTRING_COMPILE_UNISTR_U8_TO_U32
modules/unistr/u8-uctomb:if LIBUNISTRING_COMPILE_UNISTR_U8_UCTOMB
modules/uniwbrk/u16-wordbreaks:if LIBUNISTRING_COMPILE_UNIWBRK_U16_WORDBREAKS
modules/uniwbrk/u32-wordbreaks:if LIBUNISTRING_COMPILE_UNIWBRK_U32_WORDBREAKS
modules/uniwbrk/u8-wordbreaks:if LIBUNISTRING_COMPILE_UNIWBRK_U8_WORDBREAKS
modules/uniwbrk/ulc-wordbreaks:if LIBUNISTRING_COMPILE_UNIWBRK_ULC_WORDBREAKS
modules/uniwbrk/wordbreak-property:if LIBUNISTRING_COMPILE_UNIWBRK_WORDBREAK_PROPERTY
modules/uniwidth/u16-strwidth:if LIBUNISTRING_COMPILE_UNIWIDTH_U16_STRWIDTH
modules/uniwidth/u16-width:if LIBUNISTRING_COMPILE_UNIWIDTH_U16_WIDTH
modules/uniwidth/u32-strwidth:if LIBUNISTRING_COMPILE_UNIWIDTH_U32_STRWIDTH
modules/uniwidth/u32-width:if LIBUNISTRING_COMPILE_UNIWIDTH_U32_WIDTH
modules/uniwidth/u8-strwidth:if LIBUNISTRING_COMPILE_UNIWIDTH_U8_STRWIDTH
modules/uniwidth/u8-width:if LIBUNISTRING_COMPILE_UNIWIDTH_U8_WIDTH
modules/uniwidth/width:if LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH
modules/wchar-c++-tests:if ANSICXX
modules/wctype-h-c++-tests:if ANSICXX

Bruno
Paul Eggert
2017-03-14 08:27:17 UTC
Permalink
Raw Message
Post by Bruno Haible
Post by Paul Eggert
Anything that uses an Automake-specific feature other than "if FOO /
else / endif" would be suspect, yes. For example, I suppose there would
be trouble if a module uses the Automake syntax "if FOO / else !FOO /
endif !FOO".
Hmm. We use this pattern a lot. In particular, in every module that overrides
$ grep -r '^if[^;]*$' modules | grep -v ' test ' | LC_ALL=C sort
modules/alloca-opt:if GL_GENERATE_ALLOCA_H
...
These should all be OK. I should have been clearer: those 'if FOO' lines should
be fine, as 'gnulib-tool --gnu-make' should transform them into 'ifneq
(,$(FOO))' lines and should define FOO properly. The problem is merely a
syntactic one, in that gnulib-tool doesn't handle 'else !FOO' or 'endif !FOO'
lines, and insists on plain 'else' and 'endif' lines. Luckly, Gnulib uses only
plain 'else' and 'endif' lines so this is not a problem in practice.

I ran into another glitch when testing --gnu-make. When building GNU Emacs on
Solaris 10 (which bundles GNU Make 3.82), an out-of-source build (which uses
VPATH) fails to use the build-aux/snippets/*.h files correctly. For example,
'make V=1 getopt.h' executes this:

rm -f getopt.h-t getopt.h && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-e 's|@''HAVE_GETOPT_H''@|1|g' \
-e 's|@''INCLUDE_NEXT''@|include_next|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@||g' \
-e 's|@''PRAGMA_COLUMNS''@||g' \
-e 's|@''NEXT_GETOPT_H''@|<getopt.h>|g' \
-e '/definition of _GL_ARG_NONNULL/r arg-nonnull.h' \
< ../../emacs-26.0.50/lib/getopt.in.h; \
} > getopt.h-t && \
mv -f getopt.h-t getopt.h

without first building arg-nonnull.h, even though the makefile line says
'getopt.h: getopt.in.h $(top_builddir)/config.status $(ARG_NONNULL_H)' so that
arg-nonnull.h is a dependency. Unfortunately POSIX requires 'sed' to ignore the
fact that arg-nonnull.h is missing, so the rule succeeds and creates a getopt.h
file that does not work. I don't know whether this is a bug in this old version
of GNU Make, but regardless of whether it is a bug it's probably better to work
around the problem, which I did by applying the attached patch to Gnulib. This
patch simply omits the copyright-notice-stripping nicety for all the affected
modules other than link-warning. I'm not sure how to work around the problem in
the link-warning module (which also does a substitution), so I merely added a
FIXME for it (Emacs does not use this module).

I still don't have a GNU Make-based Gnulib working quite right on Solaris; I
have another problem with the faccessat module on Solaris 10 and plan to look
into that next.

Loading...