| install-sh | install-sh | ||||
| libtool | libtool | ||||
| ltmain.sh | ltmain.sh | ||||
| m4/ | |||||
| missing | missing | ||||
| Makefile | Makefile | ||||
| Makefile.in | Makefile.in | ||||
| stamp-h1 | stamp-h1 | ||||
| m4/* | |||||
| !m4/ax_check_compile_flag.m4 | |||||
| # emscripten: | # emscripten: | ||||
| a.out.js | a.out.js | ||||
| a.out.js.mem | a.out.js.mem |
| AC_SUBST(UCD_VERSION) | AC_SUBST(UCD_VERSION) | ||||
| dnl ================================================================ | |||||
| dnl Compiler warnings. | |||||
| dnl | |||||
| dnl Reference: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html | |||||
| dnl ================================================================ | |||||
| AX_CHECK_COMPILE_FLAG([-Wmissing-prototypes], [CFLAGS="-Wmissing-prototypes $CFLAGS"]) | |||||
| AX_CHECK_COMPILE_FLAG([-Wreturn-type], [CFLAGS="-Wreturn-type $CFLAGS"]) | |||||
| dnl ================================================================ | dnl ================================================================ | ||||
| dnl Generate output. | dnl Generate output. | ||||
| dnl ================================================================ | dnl ================================================================ |
| # =========================================================================== | |||||
| # https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html | |||||
| # =========================================================================== | |||||
| # | |||||
| # SYNOPSIS | |||||
| # | |||||
| # AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) | |||||
| # | |||||
| # DESCRIPTION | |||||
| # | |||||
| # Check whether the given FLAG works with the current language's compiler | |||||
| # or gives an error. (Warnings, however, are ignored) | |||||
| # | |||||
| # ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on | |||||
| # success/failure. | |||||
| # | |||||
| # If EXTRA-FLAGS is defined, it is added to the current language's default | |||||
| # flags (e.g. CFLAGS) when the check is done. The check is thus made with | |||||
| # the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to | |||||
| # force the compiler to issue an error when a bad flag is given. | |||||
| # | |||||
| # INPUT gives an alternative input source to AC_COMPILE_IFELSE. | |||||
| # | |||||
| # NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this | |||||
| # macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. | |||||
| # | |||||
| # LICENSE | |||||
| # | |||||
| # Copyright (c) 2008 Guido U. Draheim <[email protected]> | |||||
| # Copyright (c) 2011 Maarten Bosmans <[email protected]> | |||||
| # | |||||
| # This program is free software: you can redistribute it and/or modify it | |||||
| # under the terms of the GNU General Public License as published by the | |||||
| # Free Software Foundation, either version 3 of the License, or (at your | |||||
| # option) any later version. | |||||
| # | |||||
| # This program is distributed in the hope that it will be useful, but | |||||
| # WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General | |||||
| # Public License for more details. | |||||
| # | |||||
| # You should have received a copy of the GNU General Public License along | |||||
| # with this program. If not, see <https://www.gnu.org/licenses/>. | |||||
| # | |||||
| # As a special exception, the respective Autoconf Macro's copyright owner | |||||
| # gives unlimited permission to copy, distribute and modify the configure | |||||
| # scripts that are the output of Autoconf when processing the Macro. You | |||||
| # need not follow the terms of the GNU General Public License when using | |||||
| # or distributing such scripts, even though portions of the text of the | |||||
| # Macro appear in them. The GNU General Public License (GPL) does govern | |||||
| # all other use of the material that constitutes the Autoconf Macro. | |||||
| # | |||||
| # This special exception to the GPL applies to versions of the Autoconf | |||||
| # Macro released by the Autoconf Archive. When you make and distribute a | |||||
| # modified version of the Autoconf Macro, you may extend this special | |||||
| # exception to the GPL to apply to your modified version as well. | |||||
| #serial 5 | |||||
| AC_DEFUN([AX_CHECK_COMPILE_FLAG], | |||||
| [AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF | |||||
| AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl | |||||
| AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ | |||||
| ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS | |||||
| _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" | |||||
| AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], | |||||
| [AS_VAR_SET(CACHEVAR,[yes])], | |||||
| [AS_VAR_SET(CACHEVAR,[no])]) | |||||
| _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) | |||||
| AS_VAR_IF(CACHEVAR,yes, | |||||
| [m4_default([$2], :)], | |||||
| [m4_default([$3], :)]) | |||||
| AS_VAR_POPDEF([CACHEVAR])dnl | |||||
| ])dnl AX_CHECK_COMPILE_FLAGS | |||||
| #include <stddef.h> | #include <stddef.h> | ||||
| /* Unicode Character Data 9.0.0 */ | |||||
| /* Unicode Character Data 10.0.0 */ | |||||
| struct case_conversion_entry | struct case_conversion_entry | ||||
| { | { |
| #define Zs UCD_CATEGORY_Zs | #define Zs UCD_CATEGORY_Zs | ||||
| #define Ii UCD_CATEGORY_Ii | #define Ii UCD_CATEGORY_Ii | ||||
| /* Unicode Character Data 9.0.0 */ | |||||
| /* Unicode Character Data 10.0.0 */ | |||||
| static const uint8_t categories_Cn[256] = | static const uint8_t categories_Cn[256] = | ||||
| { | { | ||||
| case Zl: case Zp: case Zs: | case Zl: case Zp: case Zs: | ||||
| return UCD_CATEGORY_GROUP_Z; | return UCD_CATEGORY_GROUP_Z; | ||||
| case Ii: | case Ii: | ||||
| default: | |||||
| return UCD_CATEGORY_GROUP_I; | return UCD_CATEGORY_GROUP_I; | ||||
| } | } | ||||
| } | } |
| #define Zyyy UCD_SCRIPT_Zyyy | #define Zyyy UCD_SCRIPT_Zyyy | ||||
| #define Zzzz UCD_SCRIPT_Zzzz | #define Zzzz UCD_SCRIPT_Zzzz | ||||
| /* Unicode Character Data 9.0.0 */ | |||||
| /* Unicode Character Data 10.0.0 */ | |||||
| static const uint8_t scripts_Latn[256] = | static const uint8_t scripts_Latn[256] = | ||||
| { | { |
| } | } | ||||
| #endif | #endif | ||||
| void fput_utf8c(FILE *out, codepoint_t c) | |||||
| static void fput_utf8c(FILE *out, codepoint_t c) | |||||
| { | { | ||||
| if (c < 0x80) | if (c < 0x80) | ||||
| fputc((uint8_t)c, out); | fputc((uint8_t)c, out); | ||||
| } | } | ||||
| } | } | ||||
| int fget_utf8c(FILE *in, codepoint_t *c) | |||||
| static int fget_utf8c(FILE *in, codepoint_t *c) | |||||
| { | { | ||||
| int ch = EOF; | int ch = EOF; | ||||
| if ((ch = fgetc(in)) == EOF) return 0; | if ((ch = fgetc(in)) == EOF) return 0; | ||||
| return 1; | return 1; | ||||
| } | } | ||||
| void uprintf_codepoint(FILE *out, codepoint_t c, char mode) | |||||
| static void uprintf_codepoint(FILE *out, codepoint_t c, char mode) | |||||
| { | { | ||||
| switch (mode) | switch (mode) | ||||
| { | { | ||||
| } | } | ||||
| } | } | ||||
| void uprintf_is(FILE *out, codepoint_t c, char mode) | |||||
| static void uprintf_is(FILE *out, codepoint_t c, char mode) | |||||
| { | { | ||||
| switch (mode) | switch (mode) | ||||
| { | { | ||||
| } | } | ||||
| } | } | ||||
| void uprintf(FILE *out, codepoint_t c, const char *format) | |||||
| static void uprintf(FILE *out, codepoint_t c, const char *format) | |||||
| { | { | ||||
| while (*format) switch (*format) | while (*format) switch (*format) | ||||
| { | { | ||||
| } | } | ||||
| } | } | ||||
| void print_file(FILE *in, const char *format) | |||||
| static void print_file(FILE *in, const char *format) | |||||
| { | { | ||||
| codepoint_t c = 0; | codepoint_t c = 0; | ||||
| while (fget_utf8c(in, &c)) | while (fget_utf8c(in, &c)) |
| #include <string.h> | #include <string.h> | ||||
| #include <stdio.h> | #include <stdio.h> | ||||
| void fput_utf8c(FILE *out, codepoint_t c) | |||||
| static void fput_utf8c(FILE *out, codepoint_t c) | |||||
| { | { | ||||
| if (c < 0x80) | if (c < 0x80) | ||||
| fputc((uint8_t)c, out); | fputc((uint8_t)c, out); | ||||
| } | } | ||||
| } | } | ||||
| int fget_utf8c(FILE *in, codepoint_t *c) | |||||
| static int fget_utf8c(FILE *in, codepoint_t *c) | |||||
| { | { | ||||
| int ch = EOF; | int ch = EOF; | ||||
| if ((ch = fgetc(in)) == EOF) return 0; | if ((ch = fgetc(in)) == EOF) return 0; | ||||
| return 1; | return 1; | ||||
| } | } | ||||
| void uprintf_codepoint(FILE *out, codepoint_t c, char mode) | |||||
| static void uprintf_codepoint(FILE *out, codepoint_t c, char mode) | |||||
| { | { | ||||
| switch (mode) | switch (mode) | ||||
| { | { | ||||
| } | } | ||||
| } | } | ||||
| void uprintf_is(FILE *out, codepoint_t c, char mode) | |||||
| static void uprintf_is(FILE *out, codepoint_t c, char mode) | |||||
| { | { | ||||
| switch (mode) | switch (mode) | ||||
| { | { | ||||
| } | } | ||||
| } | } | ||||
| void uprintf(FILE *out, codepoint_t c, const char *format) | |||||
| static void uprintf(FILE *out, codepoint_t c, const char *format) | |||||
| { | { | ||||
| while (*format) switch (*format) | while (*format) switch (*format) | ||||
| { | { | ||||
| } | } | ||||
| } | } | ||||
| void print_file(FILE *in, const char *format) | |||||
| static void print_file(FILE *in, const char *format) | |||||
| { | { | ||||
| codepoint_t c = 0; | codepoint_t c = 0; | ||||
| while (fget_utf8c(in, &c)) | while (fget_utf8c(in, &c)) |
| case Zl: case Zp: case Zs: | case Zl: case Zp: case Zs: | ||||
| return UCD_CATEGORY_GROUP_Z; | return UCD_CATEGORY_GROUP_Z; | ||||
| case Ii: | case Ii: | ||||
| default: | |||||
| return UCD_CATEGORY_GROUP_I; | return UCD_CATEGORY_GROUP_I; | ||||
| } | } | ||||
| } | } |