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; | ||||
} | } | ||||
} | } |